From: Patric Plitzner
Date: Tue, 24 Feb 2015 10:04:18 +0000 (+0000)
Subject: - implemented framework which links an input element to viewers/editors which are...
X-Git-Tag: 3.6.0~208
X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/3dba9fc4f4fbad7cc5341daf25a139150f329137
- implemented framework which links an input element to viewers/editors which are able to display information about the element
- added ICdmViewer interface
- added extension point to register ICdmViewer
- registered EditorCdmViewer for the taxeditor.editor plugin
---
diff --git a/.gitattributes b/.gitattributes
index 7530a1c50..cc539fac2 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -371,6 +371,7 @@ eu.etaxonomy.taxeditor.editor/plugin.xml -text
eu.etaxonomy.taxeditor.editor/pom.xml -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/CdmDataTransfer.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/ChooseFromMultipleTaxonNodesDialog.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorCdmViewer.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorStateManager.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/IDropTargetable.java -text
@@ -1207,6 +1208,7 @@ eu.etaxonomy.taxeditor.store/icons/web.gif -text
eu.etaxonomy.taxeditor.store/p2.inf -text
eu.etaxonomy.taxeditor.store/plugin.xml -text
eu.etaxonomy.taxeditor.store/pom.xml -text
+eu.etaxonomy.taxeditor.store/schema/eu.etaxonomy.taxeditor.store.cdmViewer.exsd -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceCredentialsWizardPage.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceH2WizardPage.java -text
@@ -1764,6 +1766,8 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractC
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmEditorViewPart.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmViewPart.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractSplitableViewPart.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/ICdmViewer.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/CdmDataSourceContentProvider.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/CdmDataSourceLabelProvider.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/CdmDataSourceViewPart.java -text
diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml
index 08d4850cf..b2dc9bfa6 100644
--- a/eu.etaxonomy.taxeditor.editor/plugin.xml
+++ b/eu.etaxonomy.taxeditor.editor/plugin.xml
@@ -1613,4 +1613,17 @@
+
+
+
+
+
+
+
+
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorCdmViewer.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorCdmViewer.java
new file mode 100644
index 000000000..7a09476fa
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorCdmViewer.java
@@ -0,0 +1,53 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.editor;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.view.ICdmViewer;
+
+/**
+ * @author pplitzner
+ * @date Feb 23, 2015
+ *
+ */
+public class EditorCdmViewer implements ICdmViewer {
+
+ private final Logger logger = Logger.getLogger(EditorCdmViewer.class);
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.view.ICdmViewer#show(java.lang.Object)
+ */
+ @Override
+ public void show(Object input, Class> viewerClass) {
+ try {
+ if(viewerClass.equals(MultiPageTaxonEditor.class)){
+ if(input instanceof TaxonBase){
+ TaxonEditorInput editorInput = TaxonEditorInput.NewInstanceFromTaxonBase(((TaxonBase>) input).getUuid());
+ EditorUtil.open(editorInput);
+ }
+ }
+ else if(viewerClass.equals(DerivateView.class)){
+ if(input instanceof SpecimenOrObservationBase){
+ }
+ }
+ } catch (PartInitException e) {
+ String errorMessage = "Could not open editor";
+ logger.error(errorMessage, e);
+ MessagingUtils.error(EditorCdmViewer.class, errorMessage, e);
+ }
+ }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/plugin.xml b/eu.etaxonomy.taxeditor.store/plugin.xml
index 9a68e2ec1..95573ca21 100644
--- a/eu.etaxonomy.taxeditor.store/plugin.xml
+++ b/eu.etaxonomy.taxeditor.store/plugin.xml
@@ -1,6 +1,7 @@
+
+
+
+
+
+
+
+
+ [Enter description of this extension point.]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A Cdm Viewer knows what viewer or editor can show which input.
+
+
+
+
+
+
+
+
+
+ The class of the viewer.
+
+
+
+
+
+
+
+
+
+
+
+
+ The input element which can be shown by the cdmViewer.
+
+
+
+
+
+
+
+
+
+ The class of the input element.
+
+
+
+
+
+
+
+
+
+
+
+
+ The part which can be opened for the given input.
+
+
+
+
+
+
+ The class of the part.
+
+
+
+
+
+
+
+
+
+ The name of the part.
+
+
+
+
+
+
+
+
+
+
+
+ [Enter the first release in which this extension point appears.]
+
+
+
+
+
+
+
+
+ [Enter extension point usage example here.]
+
+
+
+
+
+
+
+
+ [Enter API information here.]
+
+
+
+
+
+
+
+
+ [Enter information about supplied implementation of this extension point.]
+
+
+
+
+
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java
new file mode 100644
index 000000000..acf9f7352
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerChooser.java
@@ -0,0 +1,114 @@
+// $Id$
+/**
+ * Copyright (C) 2015 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+package eu.etaxonomy.taxeditor.view;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.dialogs.PopupDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+
+/**
+ * @author pplitzner
+ * @date Feb 23, 2015
+ *
+ */
+public class CdmViewerChooser extends PopupDialog implements ISelectionChangedListener{
+
+ private Map viewerNameMap;
+ private Object input;
+
+ public CdmViewerChooser(Shell parentShell) {
+ this(parentShell, SWT.RESIZE | SWT.ON_TOP, true, false, false, false, false, "Open in ...", "Clicking will open the selected viewer");
+ }
+
+ public CdmViewerChooser(Shell parent, int shellStyle, boolean takeFocusOnOpen, boolean persistSize,
+ boolean persistLocation, boolean showDialogMenu, boolean showPersistActions, String titleText,
+ String infoText) {
+ super(parent, shellStyle, takeFocusOnOpen, persistSize, persistLocation, showDialogMenu, showPersistActions,
+ titleText, infoText);
+ }
+
+ public void chooseViewer(Object input){
+ viewerNameMap = new HashMap();
+ this.input = input;
+ IExtensionRegistry reg = Platform.getExtensionRegistry();
+ IConfigurationElement[] extensions = reg
+ .getConfigurationElementsFor("eu.etaxonomy.taxeditor.store.cdmViewer");
+ for (IConfigurationElement e : extensions) {
+ Object o;
+// try {
+// o = e.createExecutableExtension("class");
+// if (o instanceof ICdmViewer) {
+// ICdmViewer cdmViewer = (ICdmViewer) o;
+// Collection viewerNames = cdmViewer.getViewerNames(input);
+// if(viewerNames!=null){
+// for (String string : viewerNames) {
+// viewerNameMap.put(string, cdmViewer);
+// }
+// }
+// }
+// } catch (CoreException e1) {
+// MessagingUtils.error(CdmViewerChooser.class, "Could not load cdmViewer extension", e1);
+// }
+ for (IConfigurationElement inputConfigurationElement : e.getChildren("input")) {
+ System.out.println("input");
+ for (IConfigurationElement partConfigurationElement : inputConfigurationElement.getChildren("part")) {
+ System.out.println("part");
+ }
+ }
+ }
+ this.open();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ TableViewer viewer = new TableViewer(new Table(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION));
+ viewer.setContentProvider(new ArrayContentProvider());
+ viewer.setLabelProvider(new ColumnLabelProvider());
+ viewer.addSelectionChangedListener(this);
+ viewer.setInput(viewerNameMap.keySet());
+ return parent;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+ */
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ ISelection selection = event.getSelection();
+ if(selection instanceof IStructuredSelection){
+ Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+ ICdmViewer cdmViewer = viewerNameMap.get(firstElement);
+ if(cdmViewer!=null){
+ cdmViewer.show(input, null);
+ this.close();
+ }
+ }
+ }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/ICdmViewer.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/ICdmViewer.java
new file mode 100644
index 000000000..66cbf87ca
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/ICdmViewer.java
@@ -0,0 +1,22 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view;
+
+
+/**
+ * @author pplitzner
+ * @date Feb 23, 2015
+ *
+ */
+public interface ICdmViewer {
+
+ public void show(Object input, Class> viewerName);
+
+}