From: Patrick Plitzner Date: Mon, 26 Oct 2015 10:22:07 +0000 (+0100) Subject: Listen to selection changes in DerivateEditor X-Git-Tag: 3.12.0^2~62^2~7^2~33 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/d0451d46889d05a7d4e20be6b2830641cf98fc31 Listen to selection changes in DerivateEditor --- diff --git a/eu.etaxonomy.taxeditor.editor/icons/synced.gif b/eu.etaxonomy.taxeditor.editor/icons/synced.gif new file mode 100644 index 000000000..870934b69 Binary files /dev/null and b/eu.etaxonomy.taxeditor.editor/icons/synced.gif differ diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml index d1d818b56..1d1c2e147 100644 --- a/eu.etaxonomy.taxeditor.editor/plugin.xml +++ b/eu.etaxonomy.taxeditor.editor/plugin.xml @@ -58,13 +58,6 @@ id="eu.etaxonomy.taxeditor.editor.group.authority" name="%editor.name.4"> - - + + @@ -374,10 +374,6 @@ - - @@ -393,6 +389,9 @@ + + @@ -1053,8 +1052,9 @@ locationURI="toolbar:eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"> + style="toggle"> diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java index 9a6effa16..04307863d 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java @@ -1,64 +1,17 @@ package eu.etaxonomy.taxeditor.editor.handler; -import java.util.HashSet; -import java.util.Iterator; -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.model.description.IndividualsAssociation; -import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; -import eu.etaxonomy.taxeditor.editor.EditorUtil; -import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput; -import eu.etaxonomy.taxeditor.model.MessagingUtils; +import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView; +import eu.etaxonomy.taxeditor.model.AbstractUtility; public class OpenDerivateViewHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { - Set selectedElementUUIDs = new HashSet(); - Object parameter = null; - //check if parameter is set - if(event.getParameter("eu.etaxonomy.taxeditor.specimenUuidParameter")!=null){ - parameter = event.getObjectParameterForExecution("eu.etaxonomy.taxeditor.specimenUuidParameter"); - } - if(parameter instanceof UUID){ - selectedElementUUIDs.add((UUID) parameter); - } - else{ - //if not, try with current selection - ISelection currentSelection = HandlerUtil.getCurrentSelection(event); - if(currentSelection instanceof IStructuredSelection){ - Iterator selectionIterator = ((IStructuredSelection) currentSelection).iterator(); - while(selectionIterator.hasNext()){ - Object object = selectionIterator.next(); - if(object instanceof SpecimenOrObservationBase){ - selectedElementUUIDs.add(((SpecimenOrObservationBase) object).getUuid()); - } - else if(object instanceof IndividualsAssociation){ - SpecimenOrObservationBase specimen = ((IndividualsAssociation) object).getAssociatedSpecimenOrObservation(); - if(specimen!=null){ - selectedElementUUIDs.add(specimen.getUuid()); - } - } - } - } - } - DerivateViewEditorInput input = new DerivateViewEditorInput(selectedElementUUIDs); - try { - EditorUtil.open(input); - } catch (PartInitException e) { - MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivative Editor", e); - } catch (NullPointerException npe){ - MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivative Editor. The derivate hierarchy is corrupted!", npe); - } + AbstractUtility.showView(DerivateView.ID); return null; } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java index db52330ee..f8eeb6fb4 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java @@ -16,9 +16,7 @@ import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.AbstractTreeViewer; 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.StructuredSelection; import org.eclipse.jface.viewers.TreeNode; import org.eclipse.jface.viewers.TreeSelection; @@ -53,9 +51,7 @@ import eu.etaxonomy.taxeditor.model.IPartContentHasDetails; import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData; import eu.etaxonomy.taxeditor.model.IPartContentHasMedia; import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData; -import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; import eu.etaxonomy.taxeditor.session.ICdmEntitySession; -import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled; import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart; import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateContentProvider; @@ -66,9 +62,7 @@ import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider; * */ public class DerivateView extends AbstractCdmViewPart implements IPartContentHasFactualData, ISaveablePart2, - IPartContentHasDetails, IPartContentHasSupplementalData, IPartContentHasMedia, - - ISelectionChangedListener, IPostOperationEnabled, ICdmEntitySessionEnabled{ + IPartContentHasDetails, IPartContentHasSupplementalData, IPartContentHasMedia { public static final String ID = "eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"; //$NON-NLS-1$ public static final String YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION = Messages.DerivateView_YOU_NEED_TO_SAVE; @@ -171,8 +165,10 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); // Propagate selection from viewer getSite().setSelectionProvider(viewer); + //listen to selection changes - viewer.addSelectionChangedListener(this); + selectionService = getSite().getWorkbenchWindow().getSelectionService(); + selectionService.addSelectionListener(this); //create context menu MenuManager menuManager = new MenuManager(); @@ -181,10 +177,6 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas Menu menu = menuManager.createContextMenu(control); control.setMenu(menu); - //single read multi links - generateMultiLinkSingleReads(); - labelProvider.setMultiLinkSingleReads(multiLinkSingleReads); - //init tree updateRootEntities(); @@ -199,30 +191,35 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas } public void updateRootEntities(Collection derivativeUuids) { - if(derivativeUuids!=null){ - this.derivateToRootEntityMap = new HashMap, SpecimenOrObservationBase>(); - this.rootElements = new HashSet>(); - for (UUID uuid : derivativeUuids) { - SpecimenOrObservationBase derivate = CdmStore.getService(IOccurrenceService.class).load(uuid, SPECIMEN_INIT_STRATEGY); - if(derivate instanceof FieldUnit){ - derivateToRootEntityMap.put(derivate, derivate); - } - else { - SpecimenOrObservationBase topMostDerivate = EditorUtil.getTopMostDerivate(derivate); - if(topMostDerivate!=null){ - derivateToRootEntityMap.put(derivate, topMostDerivate); - } - else{ + if(conversation!=null){ + if (!conversation.isBound()) { + conversation.bind(); + } + if(derivativeUuids!=null){ + this.derivateToRootEntityMap = new HashMap, SpecimenOrObservationBase>(); + this.rootElements = new HashSet>(); + for (UUID uuid : derivativeUuids) { + SpecimenOrObservationBase derivate = CdmStore.getService(IOccurrenceService.class).load(uuid, SPECIMEN_INIT_STRATEGY); + if(derivate instanceof FieldUnit){ derivateToRootEntityMap.put(derivate, derivate); } + else { + SpecimenOrObservationBase topMostDerivate = EditorUtil.getTopMostDerivate(derivate); + if(topMostDerivate!=null){ + derivateToRootEntityMap.put(derivate, topMostDerivate); + } + else{ + derivateToRootEntityMap.put(derivate, derivate); + } + } + } + for (SpecimenOrObservationBase specimen : derivateToRootEntityMap.values()) { + rootElements.add(specimen); } } - for (SpecimenOrObservationBase specimen : derivateToRootEntityMap.values()) { - rootElements.add(specimen); - } + viewer.setInput(rootElements); + refreshTree(); } - viewer.setInput(rootElements); - refreshTree(); } @Override @@ -238,7 +235,7 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas conversation.commit(true); if(CdmStore.getCurrentSessionManager().isRemoting()) { - CdmStore.getService(IOccurrenceService.class).merge(new ArrayList(getRootEntities()), true); + CdmStore.getService(IOccurrenceService.class).merge(new ArrayList(rootElements), true); } monitor.worked(1); @@ -384,11 +381,6 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas return this.multiLinkSingleReads; } - @Override - public void selectionChanged(SelectionChangedEvent event) { - this.selection = event.getSelection(); - } - public ISelection getSelection() { return selection; } diff --git a/eu.etaxonomy.taxeditor.store/plugin.xml b/eu.etaxonomy.taxeditor.store/plugin.xml index a19528f9b..f25258f8a 100644 --- a/eu.etaxonomy.taxeditor.store/plugin.xml +++ b/eu.etaxonomy.taxeditor.store/plugin.xml @@ -294,32 +294,9 @@ - - - - - - - - - - - -