Structure derivative editor context menu (#5406)
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / derivate / contextMenu / SingleReadSequenceContextMenu.java
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;
     }