From: Patrick Plitzner Date: Wed, 11 Nov 2015 16:03:41 +0000 (+0100) Subject: Convert DerivateView to an EditorPart X-Git-Tag: 3.12.0^2~62^2~7^2~1 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/d2ea9779b2788125d3b4fc41c8102a75406595c7 Convert DerivateView to an EditorPart --- diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml index c4e90a5f6..b7ca0b2d2 100644 --- a/eu.etaxonomy.taxeditor.editor/plugin.xml +++ b/eu.etaxonomy.taxeditor.editor/plugin.xml @@ -76,6 +76,13 @@ id="eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor" name="%editor.name.8"> + + @@ -145,13 +152,6 @@ id="eu.etaxonomy.taxeditor.editor.view.validation.problems" name="%view.name.6"> - - @@ -720,29 +720,6 @@ - - - - - - - - - - - - - - - - - - - - - - @@ -1461,11 +1426,6 @@ defaultHandler="eu.etaxonomy.taxeditor.editor.group.authority.handler.EditCdmAuthoritiesHandler" id="eu.etaxonomy.taxeditor.group.cdmauthorities.edit" name="%command.name.34"> - - , SpecimenOrObservationBase>(); this.rootElements = new HashSet>(); @@ -314,14 +329,6 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas return conversation; } - /** - * @return the viewer - */ - @Override - public TreeViewer getViewer() { - return viewer; - } - @Override public void changed(Object element) { setDirty(true); @@ -452,10 +459,18 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas @Override public void selectionChanged(IWorkbenchPart part, ISelection selection) { + if(viewer.getTree().isDisposed()){ + return; + } if(listenToSelectionChange && selection instanceof IStructuredSelection){ Object selectedElement = ((IStructuredSelection) selection).getFirstElement(); - if(selectedElement instanceof CdmBase && ((CdmBase) selectedElement).isInstanceOf(Taxon.class)){ - selectedTaxon = HibernateProxyHelper.deproxy(selectedElement, Taxon.class); + if(selectedElement instanceof CdmBase){ + if(((CdmBase) selectedElement).isInstanceOf(TaxonNode.class)){ + selectedTaxon = HibernateProxyHelper.deproxy(selectedElement, TaxonNode.class).getTaxon(); + } + else if(((CdmBase) selectedElement).isInstanceOf(Taxon.class)){ + selectedTaxon = HibernateProxyHelper.deproxy(selectedElement, Taxon.class); + } Collection fieldUnits = CdmStore.getService(IOccurrenceService.class).listFieldUnitsByAssociatedTaxon(selectedTaxon, null, null); Collection uuids = new HashSet(); for (SpecimenOrObservationBase specimenOrObservationBase : fieldUnits) { @@ -467,6 +482,10 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas } } + public TreeViewer getViewer() { + return viewer; + } + /** * {@inheritDoc} */ @@ -475,22 +494,6 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas return new ArrayList>(rootElements); } - @Override - public void createViewer(Composite parent) { - // TODO Auto-generated method stub - - } - - @Override - public boolean isSaveOnCloseNeeded() { - return isDirty(); - } - - @Override - public int promptToSaveOnClose() { - return ISaveablePart2.DEFAULT; - } - public void toggleListenToSelectionChange() { listenToSelectionChange = !listenToSelectionChange; derivateSearchCompositeController.setEnabled(!listenToSelectionChange); @@ -529,7 +532,6 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas */ @Override public void contextStart(IMemento memento, IProgressMonitor monitor) { - init(); derivateSearchCompositeController.setEnabled(!listenToSelectionChange); viewer.getTree().setEnabled(true); refreshTree(); diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java index 950533d11..6f7b3be60 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java @@ -9,130 +9,54 @@ */ package eu.etaxonomy.taxeditor.editor.view.derivate; -import java.util.Set; -import java.util.UUID; - import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IPersistableElement; -import eu.etaxonomy.cdm.model.occurrence.FieldUnit; -import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; - /** - * Editor input for the {@link DerivateView} which holds the currently selected derivate for which - * the derivate hierarchy should be shown in the DerivateView.
- * It also holds a {@link SpecimenOrObservationBase} which is the root of the hierarchy. (both may be the same object) + * Editor input for the {@link DerivateView} + * * @author pplitzner - * @date 25.11.2013 + * @date Nov 11, 2015 * */ public class DerivateViewEditorInput implements IEditorInput { - /** - * The {@link UUID}s of the derivative entities - */ - private Set derivativeUUIDs; - - /** - * Creates an editor input for the {@link DerivateView} with the currently selected derivates and the - * corresponding {@link FieldUnit}s (both may be the same object). - * @param derivateUuids the {@link UUID}s of the derivates for which the derivate hierarchy should be shown - * @param derivativeUUIDs the root of the hierarchy - */ - public DerivateViewEditorInput(Set derivateUuids) { - this.derivativeUUIDs = derivateUuids; + public DerivateViewEditorInput() { } - /* (non-Javadoc) - * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) - */ @Override public Object getAdapter(Class adapter) { - // TODO Auto-generated method stub return null; } - /* (non-Javadoc) - * @see org.eclipse.ui.IEditorInput#exists() - */ @Override public boolean exists() { return false; } - /* (non-Javadoc) - * @see org.eclipse.ui.IEditorInput#getImageDescriptor() - */ @Override public ImageDescriptor getImageDescriptor() { - // TODO Auto-generated method stub return null; } - /* (non-Javadoc) - * @see org.eclipse.ui.IEditorInput#getName() - */ @Override public String getName() { return getEditorName(); } - /* (non-Javadoc) - * @see org.eclipse.ui.IEditorInput#getPersistable() - */ @Override public IPersistableElement getPersistable() { return null; } - /* (non-Javadoc) - * @see org.eclipse.ui.IEditorInput#getToolTipText() - */ @Override public String getToolTipText() { return getEditorName(); } private String getEditorName() { - return "Derivative Editor"; - } - - /** - * @return the derivativeUUIDs - */ - public Set getDerivativeUUIDs() { - return derivativeUUIDs; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((derivativeUUIDs == null) ? 0 : derivativeUUIDs.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - DerivateViewEditorInput other = (DerivateViewEditorInput) obj; - if (derivativeUUIDs == null) { - if (other.derivativeUUIDs != null) { - return false; - } - } else if (!derivativeUUIDs.equals(other.derivativeUUIDs)) { - return false; - } - return true; + return "Derivative Editor"; } } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivateEditorForTaxonHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivateEditorForTaxonHandler.java deleted file mode 100644 index 7b30737f9..000000000 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivateEditorForTaxonHandler.java +++ /dev/null @@ -1,82 +0,0 @@ -// $Id$ -/** -* Copyright (C) 2014 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.view.derivate.handler; - -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.UUID; - -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.handlers.HandlerUtil; - -import eu.etaxonomy.cdm.api.service.IOccurrenceService; -import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; -import eu.etaxonomy.cdm.model.taxon.Taxon; -import eu.etaxonomy.cdm.model.taxon.TaxonNode; -import eu.etaxonomy.taxeditor.editor.EditorUtil; -import eu.etaxonomy.taxeditor.editor.Messages; -import eu.etaxonomy.taxeditor.editor.handler.OpenDerivateViewHandler; -import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput; -import eu.etaxonomy.taxeditor.model.MessagingUtils; -import eu.etaxonomy.taxeditor.store.CdmStore; - -/** - * @author pplitzner - * @date Nov 25, 2014 - * - */ -public class OpenDerivateEditorForTaxonHandler extends AbstractHandler { - - private static final String COULD_NOT_OPEN_DERIVATIVE_EDITOR = Messages.OpenDerivateEditorForTaxonHandler_COULD_NOT_OPEN_EDITOR; - - /* (non-Javadoc) - * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) - */ - @Override - public Object execute(ExecutionEvent event) throws ExecutionException { - ISelection currentSelection = HandlerUtil.getCurrentSelection(event); - if(currentSelection instanceof IStructuredSelection){ - Iterator selectionIterator = ((IStructuredSelection) currentSelection).iterator(); - Set derivateUuids = new HashSet(); - while(selectionIterator.hasNext()){ - Object object = selectionIterator.next(); - if(object instanceof TaxonNode){ - TaxonNode node = (TaxonNode)object; - Taxon taxon = node.getTaxon(); - List listByAssociatedTaxon = CdmStore.getService(IOccurrenceService.class).listByAssociatedTaxon(null, null, taxon, null, null, null, null, null); - for (SpecimenOrObservationBase specimenOrObservationBase : listByAssociatedTaxon) { - derivateUuids.add(specimenOrObservationBase.getUuid()); - } - } - } - if(derivateUuids.isEmpty()){ - MessagingUtils.warningDialog(COULD_NOT_OPEN_DERIVATIVE_EDITOR, this, Messages.OpenDerivateEditorForTaxonHandler_NO_DERIVATIVES_FOUND); - return null; - } - DerivateViewEditorInput input = new DerivateViewEditorInput(derivateUuids); - try { - EditorUtil.open(input); - } catch (PartInitException e) { - MessagingUtils.error(OpenDerivateViewHandler.class, COULD_NOT_OPEN_DERIVATIVE_EDITOR, e); - } catch (NullPointerException npe){ - MessagingUtils.messageDialog(Messages.OpenDerivateEditorForTaxonHandler_FAILED_TO_OPEN, OpenDerivateViewHandler.class, Messages.OpenDerivateEditorForTaxonHandler_HIERARCHY_CORRUPTED, npe); - } - } - return null; - } - -} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchComposite.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchComposite.java index b34b7ab19..02f3e5d05 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchComposite.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchComposite.java @@ -43,6 +43,7 @@ public class DerivateSearchComposite extends Composite { private Label lbltaxonAssignment; private Combo comboTaxonAssignment; private Label lblTitleCache; + private Button buttonToggleLink; /** * Create the composite. @@ -81,7 +82,11 @@ public class DerivateSearchComposite extends Composite { formToolkit.adapt(comboTaxonAssignment); formToolkit.paintBordersFor(comboTaxonAssignment); comboTaxonAssignment.select(ALL_SPECIMENS); - new Label(this, SWT.NONE); + + buttonToggleLink = new Button(this, SWT.NONE); + buttonToggleLink.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); + buttonToggleLink.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.editor", "icons/synced.gif")); + formToolkit.adapt(buttonToggleLink, true, true); lblTitleCache = new Label(this, SWT.NONE); lblTitleCache.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); @@ -156,4 +161,7 @@ public class DerivateSearchComposite extends Composite { public Label getLbltaxonAssignment() { return lbltaxonAssignment; } + public Button getButtonToggleLink() { + return buttonToggleLink; + } } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java index e87fcc5aa..50d91e66a 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java @@ -65,6 +65,7 @@ public class DerivateSearchCompositeController implements Listener{ derivateSearchComposite.getButtonSearch().addListener(SWT.Selection, this); derivateSearchComposite.getBtnBrowseTaxa().addListener(SWT.Selection, this); derivateSearchComposite.getBtnClearTaxon().addListener(SWT.Selection, this); + derivateSearchComposite.getButtonToggleLink().addListener(SWT.Selection, this); } @@ -145,6 +146,9 @@ public class DerivateSearchCompositeController implements Listener{ derivateSearchComposite.getComboTaxonAssignment().setEnabled(true); derivateSearchComposite.getLbltaxonAssignment().setEnabled(true); } + else if(eventSource==derivateSearchComposite.getButtonToggleLink()){ + derivativeEditor.toggleListenToSelectionChange(); + } } /**