From 91333bc6afe77b1db8fc745cc72696b8c41fafd4 Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Fri, 29 Sep 2017 08:51:13 +0200 Subject: [PATCH] ref #6908 Migrate remaining polytomous context menus and handlers --- eu.etaxonomy.taxeditor.editor/fragment.e4xmi | 13 ++-- .../key/e4/AbstractGraphKeyEditorE4.java | 3 + .../e4/KeyEditorDataChangeBehaviourE4.java | 60 +++++++++++++++++++ .../e4/PolytomousKeyGraphEditorE4.java | 10 ++-- .../e4/PolytomousKeyListEditorE4.java | 38 ++++++++---- .../AbstractPolytomousKeyNodeHandlerE4.java | 28 --------- .../e4/handler/CreateChildNodeHandlerE4.java | 10 ++++ .../e4/handler/DeleteNodeHandlerE4.java | 15 ++--- .../e4/handler/InsertNewNodeHandlerE4.java | 10 ++-- .../OpenPolytomousGraphEditorHandler.java | 26 ++++++++ .../fragment.e4xmi | 10 +--- ...motingEditPolytomousKeyNodesHandlerE4.java | 12 ++++ 12 files changed, 168 insertions(+), 67 deletions(-) create mode 100644 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/KeyEditorDataChangeBehaviourE4.java delete mode 100644 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/AbstractPolytomousKeyNodeHandlerE4.java create mode 100644 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/OpenPolytomousGraphEditorHandler.java diff --git a/eu.etaxonomy.taxeditor.editor/fragment.e4xmi b/eu.etaxonomy.taxeditor.editor/fragment.e4xmi index e2616dbc9..2cdb42973 100644 --- a/eu.etaxonomy.taxeditor.editor/fragment.e4xmi +++ b/eu.etaxonomy.taxeditor.editor/fragment.e4xmi @@ -199,10 +199,10 @@ - - - - + + + + @@ -211,6 +211,7 @@ + @@ -218,6 +219,9 @@ + + + @@ -282,6 +286,7 @@ + diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/AbstractGraphKeyEditorE4.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/AbstractGraphKeyEditorE4.java index 0746e37c1..241380f56 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/AbstractGraphKeyEditorE4.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/AbstractGraphKeyEditorE4.java @@ -77,6 +77,9 @@ implements IConversationEnabled, public void init(PolytomousKeyEditorInput input) { this.input = input; + + + viewer.setInput(getKey()); } public boolean isDirty() { diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/KeyEditorDataChangeBehaviourE4.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/KeyEditorDataChangeBehaviourE4.java new file mode 100644 index 000000000..d8791cdfc --- /dev/null +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/e4/KeyEditorDataChangeBehaviourE4.java @@ -0,0 +1,60 @@ +/** +* Copyright (C) 2007 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.key.e4; + +import java.util.Vector; + +import eu.etaxonomy.cdm.model.description.PolytomousKey; +import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent; +import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent.EventType; +import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; +import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditorInput; +import eu.etaxonomy.taxeditor.editor.key.polytomous.e4.PolytomousKeyListEditorE4; +import eu.etaxonomy.taxeditor.model.AbstractDataChangeBehaviour; + +/** + * @author n.hoffmann + * @created May 5, 2011 + * @version 1.0 + */ +public class KeyEditorDataChangeBehaviourE4 extends AbstractDataChangeBehaviour { + + private final PolytomousKeyListEditorE4 source; + private PolytomousKeyEditorInput input; + + public KeyEditorDataChangeBehaviourE4(PolytomousKeyListEditorE4 keyEditor) { + source = keyEditor; + } + + @Override + public void reactOnDataChange(CdmDataChangeMap changeEvents) { + input = source.getEditorInput(); + + if(changeEvents.sizeByEventType(EventType.UPDATE) > 0){ + reactOnUpdate(changeEvents.getEvents(EventType.UPDATE)); + } + } + + /** {@inheritDoc} */ + @Override + public void reactOnUpdate(Vector events){ + + for(CdmDataChangeEvent event : events){ + + // update editor title + if(event.getEntity() instanceof PolytomousKey){ + if(input.getKey().equals(event.getEntity())){ + // set the name of the editor window + source.setPartName(); + } + } + } + } +} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/PolytomousKeyGraphEditorE4.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/PolytomousKeyGraphEditorE4.java index d9680572c..1e41bc3dc 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/PolytomousKeyGraphEditorE4.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/PolytomousKeyGraphEditorE4.java @@ -26,6 +26,7 @@ import eu.etaxonomy.taxeditor.editor.key.e4.AbstractGraphKeyEditorE4; import eu.etaxonomy.taxeditor.editor.key.polytomous.IPolytomousKeyEditorPage; import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyGraphContentProvider; import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyLabelProvider; +import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; /** @@ -45,6 +46,11 @@ public class PolytomousKeyGraphEditorE4 extends @PostConstruct public void createPartControl(Composite parent, EMenuService menuService, @Named(IServiceConstants.ACTIVE_SHELL)Shell shell) { + if(!CdmStore.isActive()){ + return; + } + + formFactory = new CdmFormFactory(shell.getDisplay()); container = formFactory.createComposite(parent); container.setLayout(new FillLayout()); @@ -67,8 +73,6 @@ public class PolytomousKeyGraphEditorE4 extends //FIXME E4 migrate // createToolbar(); - viewer.setInput(getKey()); - container.addControlListener(new ControlListener() { @Override @@ -81,8 +85,6 @@ public class PolytomousKeyGraphEditorE4 extends } }); - - formFactory = new CdmFormFactory(shell.getDisplay()); } @Override diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/PolytomousKeyListEditorE4.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/PolytomousKeyListEditorE4.java index a328a622e..225589183 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/PolytomousKeyListEditorE4.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/PolytomousKeyListEditorE4.java @@ -45,15 +45,17 @@ import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; import eu.etaxonomy.taxeditor.editor.EditorUtil; -import eu.etaxonomy.taxeditor.editor.key.KeyEditorDataChangeBehaviour; +import eu.etaxonomy.taxeditor.editor.key.e4.KeyEditorDataChangeBehaviourE4; import eu.etaxonomy.taxeditor.editor.key.polytomous.IPolytomousKeyEditorPage; import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditorInput; import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyListContentProvider; import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyListLabelProvider; import eu.etaxonomy.taxeditor.editor.l10n.Messages; +import eu.etaxonomy.taxeditor.model.DataChangeBridge; import eu.etaxonomy.taxeditor.model.IDirtyMarkable; import eu.etaxonomy.taxeditor.model.IPartContentHasDetails; import eu.etaxonomy.taxeditor.model.MessagingUtils; +import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart; /** * @@ -63,7 +65,7 @@ import eu.etaxonomy.taxeditor.model.MessagingUtils; */ public class PolytomousKeyListEditorE4 implements IConversationEnabled, IDirtyMarkable, IPartContentHasDetails, - IPolytomousKeyEditorPage { + IPolytomousKeyEditorPage, IE4SavablePart{ private class LinkListener extends MouseAdapter { @@ -140,9 +142,7 @@ public class PolytomousKeyListEditorE4 implements private TableViewer viewer; - private ConversationHolder conversation; - - private KeyEditorDataChangeBehaviour dataChangeBehavior; + private KeyEditorDataChangeBehaviourE4 dataChangeBehavior; private PolytomousKeyEditorInput input; @@ -162,8 +162,11 @@ public class PolytomousKeyListEditorE4 implements } @Override - public void update(CdmDataChangeMap arg0) { - + public void update(CdmDataChangeMap map) { + if(dataChangeBehavior == null){ + dataChangeBehavior = new KeyEditorDataChangeBehaviourE4(this); + } + DataChangeBridge.handleDataChange(map, dataChangeBehavior); } @Override @@ -171,8 +174,9 @@ public class PolytomousKeyListEditorE4 implements return input.getConversationHolder(); } - @Persist - public void doSave(IProgressMonitor monitor) { + @Override + @Persist + public void save(IProgressMonitor monitor) { try { monitor.beginTask(Messages.KeyEditor_SAVING, 1); getConversationHolder().bind(); @@ -196,6 +200,10 @@ public class PolytomousKeyListEditorE4 implements viewer.setInput(input); } + public PolytomousKeyEditorInput getEditorInput() { + return input; + } + public boolean isDirty() { return dirty.isDirty(); } @@ -291,10 +299,9 @@ public class PolytomousKeyListEditorE4 implements @Override public boolean postOperation(CdmBase objectAffectedByOperation) { viewer.refresh(); - getConversationHolder().bind(); - getConversationHolder().commit(true); - //FIXME E4 migrate/delete -// editor.changed(objectAffectedByOperation); +// getConversationHolder().bind(); +// getConversationHolder().commit(true); + changed(objectAffectedByOperation); if (objectAffectedByOperation != null) { viewer.setSelection(new StructuredSelection( @@ -308,4 +315,9 @@ public class PolytomousKeyListEditorE4 implements return true; } + public void setPartName() { + PolytomousKey key = input.getKey(); + thisPart.setLabel(key.getTitleCache()); + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/AbstractPolytomousKeyNodeHandlerE4.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/AbstractPolytomousKeyNodeHandlerE4.java deleted file mode 100644 index c17ab3194..000000000 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/AbstractPolytomousKeyNodeHandlerE4.java +++ /dev/null @@ -1,28 +0,0 @@ -/** -* Copyright (C) 2016 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.key.polytomous.e4.handler; - -import eu.etaxonomy.taxeditor.editor.key.polytomous.IPolytomousKeyEditorPage; -import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4; - -/** - * @author k.luther - * @date 24.11.2016 - * - */ -public abstract class AbstractPolytomousKeyNodeHandlerE4 extends RemotingCdmHandlerE4 { - - - IPolytomousKeyEditorPage editorPage; - - public AbstractPolytomousKeyNodeHandlerE4(String label) { - super(label); - } - -} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/CreateChildNodeHandlerE4.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/CreateChildNodeHandlerE4.java index 44c8a9f07..8376e56d2 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/CreateChildNodeHandlerE4.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/CreateChildNodeHandlerE4.java @@ -6,6 +6,7 @@ package eu.etaxonomy.taxeditor.editor.key.polytomous.e4.handler; import javax.inject.Named; import org.eclipse.core.commands.operations.IUndoContext; +import org.eclipse.e4.core.di.annotations.CanExecute; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem; @@ -59,4 +60,13 @@ public class CreateChildNodeHandlerE4 { } } + @CanExecute + public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection, + MHandledMenuItem menuItem){ + boolean canExecute = false; + canExecute = selection!=null && !selection.isEmpty(); + menuItem.setVisible(canExecute); + return canExecute; + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/DeleteNodeHandlerE4.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/DeleteNodeHandlerE4.java index 6597e9d3c..25dde004e 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/DeleteNodeHandlerE4.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/DeleteNodeHandlerE4.java @@ -30,13 +30,14 @@ import eu.etaxonomy.taxeditor.editor.key.polytomous.e4.PolytomousKeyListEditorE4 import eu.etaxonomy.taxeditor.editor.key.polytomous.operation.DeleteNodeOperation; import eu.etaxonomy.taxeditor.editor.l10n.Messages; import eu.etaxonomy.taxeditor.model.AbstractUtility; +import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4; /** * @author n.hoffmann * @created Dec 6, 2010 * @version 1.0 */ -public class DeleteNodeHandlerE4 extends AbstractPolytomousKeyNodeHandlerE4 { +public class DeleteNodeHandlerE4 extends RemotingCdmHandlerE4 { private static final String DO_YOU_REALLY_WANT_TO_DELETE_THE_NODE_THIS_OPERATION_IS_NOT_REVERSABLE = Messages.DeleteNodeHandler_REALLY_DELETE; @@ -117,16 +118,16 @@ public class DeleteNodeHandlerE4 extends AbstractPolytomousKeyNodeHandlerE4 { if (!proceed) { return null; }else{ - editor.doSave(AbstractUtility.getMonitor()); + editor.save(AbstractUtility.getMonitor()); } } label = menuItem.getLocalizedLabel(); DeleteNodeOperation operation ; if (deleteChildren){ - operation = new DeleteNodeOperation(label, undoContext, nodeToBeDeleted, editorPage, true); + operation = new DeleteNodeOperation(label, undoContext, nodeToBeDeleted, editor, true); }else{ - operation = new DeleteNodeOperation(label, undoContext, nodeToBeDeleted, editorPage, false); + operation = new DeleteNodeOperation(label, undoContext, nodeToBeDeleted, editor, false); } return operation; @@ -145,12 +146,12 @@ public class DeleteNodeHandlerE4 extends AbstractPolytomousKeyNodeHandlerE4 { } @CanExecute - public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)Object selection, + public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection, MHandledMenuItem menuItem){ boolean canExecute = false; - canExecute = selection instanceof PolytomousKeyNode; + canExecute = selection!=null && !selection.isEmpty(); menuItem.setVisible(canExecute); return canExecute; } -} +} \ No newline at end of file diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/InsertNewNodeHandlerE4.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/InsertNewNodeHandlerE4.java index 47dbbf3f2..0848e6661 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/InsertNewNodeHandlerE4.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/InsertNewNodeHandlerE4.java @@ -25,13 +25,14 @@ import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditorLabels; import eu.etaxonomy.taxeditor.editor.key.polytomous.e4.PolytomousKeyListEditorE4; import eu.etaxonomy.taxeditor.editor.key.polytomous.operation.InsertPolytomousKeyNodeOperation; +import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4; /** * @author k.luther * @date 17.11.2016 * */ -public class InsertNewNodeHandlerE4 extends AbstractPolytomousKeyNodeHandlerE4{ +public class InsertNewNodeHandlerE4 extends RemotingCdmHandlerE4{ private PolytomousKeyNode parentNode ; @@ -69,7 +70,8 @@ public class InsertNewNodeHandlerE4 extends AbstractPolytomousKeyNodeHandlerE4{ @Named(IServiceConstants.ACTIVE_SHELL)Shell shell, @Named(IServiceConstants.ACTIVE_PART)MPart activePart, MHandledMenuItem menuItem) { - return new InsertPolytomousKeyNodeOperation(getTrigger(), false, parentNode, editorPage); + PolytomousKeyListEditorE4 editor = (PolytomousKeyListEditorE4) activePart.getObject(); + return new InsertPolytomousKeyNodeOperation(getTrigger(), false, parentNode, editor); } @Override @@ -77,10 +79,10 @@ public class InsertNewNodeHandlerE4 extends AbstractPolytomousKeyNodeHandlerE4{ } @CanExecute - public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)Object selection, + public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection, MHandledMenuItem menuItem){ boolean canExecute = false; - canExecute = selection instanceof PolytomousKeyNode; + canExecute = selection!=null && !selection.isEmpty(); menuItem.setVisible(canExecute); return canExecute; } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/OpenPolytomousGraphEditorHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/OpenPolytomousGraphEditorHandler.java new file mode 100644 index 000000000..c202fc4d3 --- /dev/null +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/e4/handler/OpenPolytomousGraphEditorHandler.java @@ -0,0 +1,26 @@ + +package eu.etaxonomy.taxeditor.editor.key.polytomous.e4.handler; + +import javax.inject.Named; + +import org.eclipse.e4.core.di.annotations.Execute; +import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.services.IServiceConstants; +import org.eclipse.e4.ui.workbench.modeling.EPartService; +import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState; + +import eu.etaxonomy.taxeditor.editor.key.polytomous.e4.PolytomousKeyGraphEditorE4; +import eu.etaxonomy.taxeditor.editor.key.polytomous.e4.PolytomousKeyListEditorE4; + +public class OpenPolytomousGraphEditorHandler { + + @Execute + public void execute(@Named(IServiceConstants.ACTIVE_PART)MPart activePart, EPartService partService) { + MPart part = partService.createPart("eu.etaxonomy.taxeditor.editor.key.polytomous.e4.PolytomousKeyGraphEditorE4"); + part = partService.showPart(part, PartState.ACTIVATE); + PolytomousKeyGraphEditorE4 graphEditor = (PolytomousKeyGraphEditorE4) part.getObject(); + PolytomousKeyListEditorE4 listEditor = (PolytomousKeyListEditorE4) activePart.getObject(); + graphEditor.init(listEditor.getEditorInput()); + } + +} \ No newline at end of file diff --git a/eu.etaxonomy.taxeditor.navigation/fragment.e4xmi b/eu.etaxonomy.taxeditor.navigation/fragment.e4xmi index a74b6da9b..5f82df04e 100644 --- a/eu.etaxonomy.taxeditor.navigation/fragment.e4xmi +++ b/eu.etaxonomy.taxeditor.navigation/fragment.e4xmi @@ -58,22 +58,18 @@ - + - - - + - - - + diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/e4/handler/RemotingEditPolytomousKeyNodesHandlerE4.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/e4/handler/RemotingEditPolytomousKeyNodesHandlerE4.java index fc06e7f45..1ba507bb5 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/e4/handler/RemotingEditPolytomousKeyNodesHandlerE4.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/e4/handler/RemotingEditPolytomousKeyNodesHandlerE4.java @@ -14,11 +14,14 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.e4.core.di.annotations.CanExecute; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem; import org.eclipse.e4.ui.services.IServiceConstants; import org.eclipse.e4.ui.workbench.modeling.EPartService; import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.widgets.Display; @@ -90,4 +93,13 @@ public class RemotingEditPolytomousKeyNodesHandlerE4 { } } + @CanExecute + public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)Object selection, + MHandledMenuItem menuItem){ + boolean canExecute = false; + canExecute = ((IStructuredSelection)selection).getFirstElement() instanceof PolytomousKey; + menuItem.setVisible(canExecute); + return canExecute; + } + } -- 2.34.1