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?hp=1f94bdc94ca88b27dd19864d988bf3ade9ad7a1c - 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); + +}