Structure derivative editor context menu (#5406)
authorPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 19 Jan 2016 17:31:16 +0000 (18:31 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 20 Jan 2016 08:34:30 +0000 (09:34 +0100)
 - fixed context menu bug where some items would only show up every
second time (menuManager.setRemoveAllWhenShown(true); //<- was the
trick)

eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/DerivateViewContextMenu.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/SingleReadSequenceContextMenu.java
eu.etaxonomy.taxeditor.molecular/plugin.xml

index 18e6e63e8b266ad978fe28f534c8f4816ed79d4f..928c3b5811735fd8c176fcb816256b29c61217a3 100644 (file)
       </menuContribution>
       <menuContribution
             locationURI="popup:eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView">
+         <separator
+               name="eu.etaxonomy.taxeditor.editor.separator4"
+               visible="true">
+         </separator>
+         <dynamic
+               class="eu.etaxonomy.taxeditor.view.CdmViewerContextMenu"
+               id="eu.etaxonomy.taxeditor.editor.derivativeEditor.CdmViewerContextMenu">
+         </dynamic>
+         <dynamic
+               class="eu.etaxonomy.taxeditor.editor.view.derivate.contextMenu.DerivateViewContextMenu"
+               id="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateContextMenu">
+         </dynamic>
+         <separator
+               name="eu.etaxonomy.taxeditor.editor.separator3"
+               visible="true">
+         </separator>
          <command
                commandId="org.eclipse.ui.edit.delete"
                label="%command.label.52"
                label="%command.label.54"
                style="push">
          </command>
-         <dynamic
-               class="eu.etaxonomy.taxeditor.view.CdmViewerContextMenu"
-               id="eu.etaxonomy.taxeditor.editor.derivativeEditor.CdmViewerContextMenu">
-         </dynamic>
-         <dynamic
-               class="eu.etaxonomy.taxeditor.editor.view.derivate.contextMenu.DerivateViewContextMenu"
-               id="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateContextMenu">
-         </dynamic>
       </menuContribution>
       <menuContribution
             locationURI="popup:eu.etaxonomy.taxeditor.editor.view.dataimport.SpecimenImportEditor">
index 5ef7e43ec7dda8bf7682fba084d2927386cdc926..b53525b988b30086ec883404b51b9f134f86d288 100644 (file)
@@ -195,6 +195,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
 
         //create context menu
         MenuManager menuManager = new MenuManager();
+        menuManager.setRemoveAllWhenShown(true);
         getSite().registerContextMenu(menuManager, viewer);
         Control control = viewer.getControl();
         Menu menu = menuManager.createContextMenu(control);
index 8b45cb6f7ccd035c337281388b1a3ac9b125cf03..4cffe35bb8f079cdbf2282cae9a2d222167b6ff5 100644 (file)
@@ -69,6 +69,7 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                                 createMenuItem(addMenu, TISSUE_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.TissueSample, DerivationEventType.PREPARATION());
                                 createMenuItem(addMenu, DNA_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample, DerivationEventType.DNA_EXTRACTION());
                                 createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                                return;
                             }
                             //context menu for Specimen
                             else if(selectedTreeNode.getValue() instanceof DerivedUnit && ((DerivedUnit)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
@@ -76,28 +77,29 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                                 createMenuItem(addMenu, TISSUE_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.TissueSample, DerivationEventType.PREPARATION());
                                 createMenuItem(addMenu, DNA_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample, DerivationEventType.DNA_EXTRACTION());
                                 createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                                return;
                             }
                             //context menu for TissueSample
                             else if(selectedTreeNode.getValue() instanceof DnaSample && ((DnaSample)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.TissueSample){
                                createMenuItem(addMenu, DNA_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample, DerivationEventType.DNA_EXTRACTION());
                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                                return;
                             }
                             //context menu for DnaSample
                             else if(selectedTreeNode.getValue() instanceof DnaSample && ((DnaSample)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.DnaSample){
                                 createMenuItem(addMenu, CONSENSUS_SEQUENCE, selectedTreeNode, Sequence.class, null, null);
                                 createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                                return;
                             }
                             //context menu for Sequence
                             else if(selectedTreeNode.getValue() instanceof Sequence){
                                 createMenuItem(addMenu, SINGLE_READ, selectedTreeNode, SingleRead.class, null, null);
-                            }
-                            //default
-                            else{
-                                MenuItem menuItem = new MenuItem(addMenu, SWT.NONE);
-                                menuItem.setText(Messages.CreateDerivateContextMenu_NO_CHILD_DERIVATE);
-                                menuItem.setEnabled(false);
+                                return;
                             }
                         }
+                        MenuItem menuItem = new MenuItem(addMenu, SWT.NONE);
+                        menuItem.setText(Messages.CreateDerivateContextMenu_NO_CHILD_DERIVATE);
+                        menuItem.setEnabled(false);
                     }
 
 
index 522120d1ba4e6484bde3216b99502f2c20190a6c..e14001f39206293c17392844dae638d4af9129b0 100644 (file)
@@ -1,6 +1,7 @@
 package eu.etaxonomy.taxeditor.editor.view.derivate.contextMenu;
 
 import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.Separator;
 import org.eclipse.ui.actions.CompoundContributionItem;
 
 public class DerivateViewContextMenu extends CompoundContributionItem  {
@@ -8,10 +9,11 @@ public class DerivateViewContextMenu extends CompoundContributionItem  {
     @Override
     protected IContributionItem[] getContributionItems() {
         IContributionItem[] contributionItems = new IContributionItem[] {
-                new CreateFieldUnitContextMenu(),
                 new CreateDerivateContextMenu(),
-                new ListenToSelectionChangeContextMenu(),
+                new CreateFieldUnitContextMenu(),
                 new SingleReadSequenceContextMenu(),
+                new Separator(),
+                new ListenToSelectionChangeContextMenu(),
         };
         return contributionItems;
     }
index 097ece6067e9176b8b39622b22b89f89c8527429..9f431f49d1ddb40b2ec4592adf0c49f1c7194881 100644 (file)
@@ -2,6 +2,7 @@ package eu.etaxonomy.taxeditor.editor.view.derivate.contextMenu;
 
 import org.eclipse.jface.action.ContributionItem;
 import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.Separator;
 import org.eclipse.jface.util.LocalSelectionTransfer;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.TreeNode;
@@ -38,38 +39,52 @@ public class SingleReadSequenceContextMenu extends CompoundContributionItem {
 
     @Override
     protected IContributionItem[] getContributionItems() {
-        IContributionItem[] contributionItems = new IContributionItem[] {
-                new ContributionItem() {
-                    @Override
-                    public void fill(Menu menu, int index) {
-                        final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-                        final IEditorPart activeEditor = window.getActivePage().getActiveEditor();
-                        final ISelection selection = window.getActivePage().getSelection();
-                        TreeNode selectedTreeNode = EditorUtil.getTreeNodeOfSelection(selection);
-                        TreeNode clipboardNode = EditorUtil.getTreeNodeOfSelection(LocalSelectionTransfer.getTransfer().getSelection());
-                        if(selectedTreeNode!=null){
-                            //context menu for Sequence
-                            if(selectedTreeNode.getValue() instanceof Sequence
-                                    && clipboardNode!=null && clipboardNode.getValue() instanceof SingleRead){
-                                MenuItem item = new MenuItem(menu, SWT.NONE);
-                                item.setText(Messages.SingleReadSequenceContextMenu_REUSE_SINGLE_READ_HERE);
-                                item.addSelectionListener(new WidgetSelectionListener(CommandType.ADD_TO_SEQUENCE));
-                            }
-                            else if(selectedTreeNode.getValue() instanceof SingleRead){
-                                MenuItem item = new MenuItem(menu, SWT.NONE);
-                                item.setText(Messages.SingleReadSequenceContextMenu_REUSE_FOR_SEQUENCE);
-                                item.addSelectionListener(new WidgetSelectionListener(CommandType.COPY_TO_CLIPBOARD));
-                                if(activeEditor instanceof DerivateView
-                                        && ((DerivateView) activeEditor).getMultiLinkSingleReads().contains(selectedTreeNode.getValue())){
-                                    MenuItem unlinkItem = new MenuItem(menu, SWT.NONE);
-                                    unlinkItem.setText(Messages.SingleReadSequenceContextMenu_REMOVE_FROM_SEQUENCE);
-                                    unlinkItem.addSelectionListener(new WidgetSelectionListener(CommandType.REMOVE_FROM_SEQUENCE));
+        boolean menuVisible = false;
+        final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+        final ISelection selection = window.getActivePage().getSelection();
+        TreeNode selectedTreeNode = EditorUtil.getTreeNodeOfSelection(selection);
+        TreeNode clipboardNode = EditorUtil.getTreeNodeOfSelection(LocalSelectionTransfer.getTransfer().getSelection());
+        if(selectedTreeNode!=null &&
+                (selectedTreeNode.getValue() instanceof Sequence && clipboardNode!=null && clipboardNode.getValue() instanceof SingleRead)
+                || (selectedTreeNode.getValue() instanceof SingleRead)){
+            menuVisible = true;
+        }
+        IContributionItem[] contributionItems = new IContributionItem[0];
+        if(menuVisible){
+            contributionItems = new IContributionItem[] {
+                    new Separator(),
+                    new ContributionItem() {
+                        @Override
+                        public void fill(Menu menu, int index) {
+                            final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+                            final IEditorPart activeEditor = window.getActivePage().getActiveEditor();
+                            final ISelection selection = window.getActivePage().getSelection();
+                            TreeNode selectedTreeNode = EditorUtil.getTreeNodeOfSelection(selection);
+                            TreeNode clipboardNode = EditorUtil.getTreeNodeOfSelection(LocalSelectionTransfer.getTransfer().getSelection());
+                            if(selectedTreeNode!=null){
+                                //context menu for Sequence
+                                if(selectedTreeNode.getValue() instanceof Sequence
+                                        && clipboardNode!=null && clipboardNode.getValue() instanceof SingleRead){
+                                    MenuItem item = new MenuItem(menu, SWT.NONE);
+                                    item.setText(Messages.SingleReadSequenceContextMenu_REUSE_SINGLE_READ_HERE);
+                                    item.addSelectionListener(new WidgetSelectionListener(CommandType.ADD_TO_SEQUENCE));
+                                }
+                                else if(selectedTreeNode.getValue() instanceof SingleRead){
+                                    MenuItem item = new MenuItem(menu, SWT.NONE);
+                                    item.setText(Messages.SingleReadSequenceContextMenu_REUSE_FOR_SEQUENCE);
+                                    item.addSelectionListener(new WidgetSelectionListener(CommandType.COPY_TO_CLIPBOARD));
+                                    if(activeEditor instanceof DerivateView
+                                            && ((DerivateView) activeEditor).getMultiLinkSingleReads().contains(selectedTreeNode.getValue())){
+                                        MenuItem unlinkItem = new MenuItem(menu, SWT.NONE);
+                                        unlinkItem.setText(Messages.SingleReadSequenceContextMenu_REMOVE_FROM_SEQUENCE);
+                                        unlinkItem.addSelectionListener(new WidgetSelectionListener(CommandType.REMOVE_FROM_SEQUENCE));
+                                    }
                                 }
                             }
                         }
                     }
-                }
-        };
+            };
+        }
         return contributionItems;
     }
 
index 7b968c499f5d2c6dde1e7d9f8d58b811cd7fd4ea..c38adc24dddfbf68e5241610c6e64d83dfa7b24a 100644 (file)
             </menu>
          </menuContribution>
          <menuContribution
-               locationURI="popup:eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView?before=eu.etaxonomy.taxeditor.editor.view.derivate.DerivateContextMenu">
+               locationURI="popup:eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView?after=eu.etaxonomy.taxeditor.editor.view.derivate.DerivateContextMenu">
+            <separator
+                  name="eu.etaxonomy.taxeditor.molecular.separator5"
+                  visible="true">
+            </separator>
             <command
                   commandId="eu.etaxonomy.taxeditor.molecular.editSequence"
                   label="Edit Sequence"