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 @@