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;
import eu.etaxonomy.cdm.model.molecular.Sequence;
import eu.etaxonomy.cdm.model.molecular.SingleRead;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.Messages;
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.store.CdmStore;
/**
- * Context menu for the creation of derivates in the derivate hierarchy.
+ * Context menu for the SingleReads in the derivate hierarchy.
*
*/
public class SingleReadSequenceContextMenu extends CompoundContributionItem {
ADD_TO_SEQUENCE
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
- */
@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.getTreeNodeValueOfSelection(selection);
- TreeNode clipboardNode = EditorUtil.getTreeNodeValueOfSelection(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("Reuse SingleRead here");
- item.addSelectionListener(new WidgetSelectionListener(CommandType.ADD_TO_SEQUENCE));
- }
- else if(selectedTreeNode.getValue() instanceof SingleRead){
- MenuItem item = new MenuItem(menu, SWT.NONE);
- item.setText("Reuse for other 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("Remove from this 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;
}
this.commandType = commandType;
}
- /* (non-Javadoc)
- * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
- */
@Override
public void widgetSelected(SelectionEvent e) {
IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
ISelection clipBoardSelection = LocalSelectionTransfer.getTransfer().getSelection();
final ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getSelection();
- TreeNode clipBoardTreeNode = EditorUtil.getTreeNodeValueOfSelection(clipBoardSelection);
- TreeNode selectedTreeNode = EditorUtil.getTreeNodeValueOfSelection(selection);
+ TreeNode clipBoardTreeNode = EditorUtil.getTreeNodeOfSelection(clipBoardSelection);
+ TreeNode selectedTreeNode = EditorUtil.getTreeNodeOfSelection(selection);
switch (commandType) {
case REMOVE_FROM_SEQUENCE:
if(activeEditor.isDirty()){
- AbstractUtility.warningDialog("View has unsaved changes", this, "You need to save before performing this action");
+ MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
return;
}
if(selectedTreeNode!=null && selectedTreeNode.getParent()!=null &&
break;
case ADD_TO_SEQUENCE:
if(activeEditor.isDirty()){
- AbstractUtility.warningDialog("View has unsaved changes", this, "You need to save before performing this action");
+ MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
return;
}
if(clipBoardTreeNode!=null && clipBoardTreeNode.getValue() instanceof SingleRead
SingleRead singleRead = (SingleRead)clipBoardTreeNode.getValue();
Sequence sequence = (Sequence)selectedTreeNode.getValue();
sequence.addSingleRead(singleRead);
- CdmStore.getService(ISequenceService.class).saveOrUpdate(sequence);
+ CdmStore.getService(ISequenceService.class).merge(sequence);
if(activeEditor instanceof DerivateView) {
DerivateView derivateView = (DerivateView)activeEditor;
derivateView.getConversationHolder().commit();