From f65c57fa5c1568e8013a7d888a5a4be7123edd7b Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Tue, 27 Oct 2015 10:45:04 +0100 Subject: [PATCH] Implement handler for creating (non-)taxon associated FieldUnits --- .../editor/view/derivate/DerivateView.java | 10 +- .../CreateFieldUnitContextMenu.java | 160 ++++++------------ .../handler/CreateFieldUnitHandler.java | 2 +- 3 files changed, 60 insertions(+), 112 deletions(-) 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 6e3c42201..f63569495 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 @@ -431,7 +431,7 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas return true; } - public void addHierarchy(FieldUnit fieldUnit) { + public void addFieldUnit(FieldUnit fieldUnit) { rootElements.add(fieldUnit); derivateToRootEntityMap.put(fieldUnit, fieldUnit); } @@ -465,10 +465,10 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas } updateRootEntities(uuids); } - } - if(part instanceof MultiPageTaxonEditor){ - Taxon taxon = ((MultiPageTaxonEditor) part).getTaxon(); - derivateSearchCompositeController.setTaxon(taxon); + if(part instanceof MultiPageTaxonEditor){ + Taxon taxon = ((MultiPageTaxonEditor) part).getTaxon(); + derivateSearchCompositeController.setTaxon(taxon); + } } } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateFieldUnitContextMenu.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateFieldUnitContextMenu.java index 21b732089..589869ab4 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateFieldUnitContextMenu.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateFieldUnitContextMenu.java @@ -2,28 +2,24 @@ package eu.etaxonomy.taxeditor.editor.view.derivate.contextMenu; import org.eclipse.jface.action.ContributionItem; import org.eclipse.jface.action.IContributionItem; -import org.eclipse.jface.util.LocalSelectionTransfer; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.TreeNode; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; -import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.CompoundContributionItem; -import eu.etaxonomy.cdm.api.service.molecular.ISequenceService; +import eu.etaxonomy.cdm.api.service.IOccurrenceService; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.common.CdmBase; -import eu.etaxonomy.cdm.model.molecular.Sequence; -import eu.etaxonomy.cdm.model.molecular.SingleRead; +import eu.etaxonomy.cdm.model.description.Feature; +import eu.etaxonomy.cdm.model.description.IndividualsAssociation; +import eu.etaxonomy.cdm.model.description.TaxonDescription; +import eu.etaxonomy.cdm.model.occurrence.FieldUnit; import eu.etaxonomy.cdm.model.taxon.Taxon; -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.MessagingUtils; import eu.etaxonomy.taxeditor.store.CdmStore; @@ -34,10 +30,8 @@ import eu.etaxonomy.taxeditor.store.CdmStore; */ public class CreateFieldUnitContextMenu extends CompoundContributionItem { - private enum CommandType{ - COPY_TO_CLIPBOARD, - REMOVE_FROM_SEQUENCE, - ADD_TO_SEQUENCE + private enum CommandType { + COPY_TO_CLIPBOARD, REMOVE_FROM_SEQUENCE, ADD_TO_SEQUENCE } @Override @@ -49,40 +43,57 @@ public class CreateFieldUnitContextMenu extends CompoundContributionItem { final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); IWorkbenchPart activePart = window.getActivePage().getActivePart(); if(activePart instanceof DerivateView){ - MenuItem item = new MenuItem(menu, SWT.NONE); - item.setText("Create FieldUnit"); - if(((DerivateView) activePart).isListenToSelectionChange()){ - Object selectionInput = ((DerivateView) activePart).getSelectionInput(); + final DerivateView derivateView = (DerivateView) activePart; + if(derivateView.isListenToSelectionChange()){ + Object selectionInput = derivateView.getSelectionInput(); if(selectionInput instanceof CdmBase && ((CdmBase) selectionInput).isInstanceOf(Taxon.class)){ - Taxon taxon = HibernateProxyHelper.deproxy(selectionInput, Taxon.class); + final Taxon taxon = HibernateProxyHelper.deproxy(selectionInput, Taxon.class); + MenuItem item = new MenuItem(menu, SWT.NONE); item.setText("Create FieldUnit (attach to "+taxon.getTitleCache()+")"); - } - } - item.addSelectionListener(new WidgetSelectionListener(CommandType.ADD_TO_SEQUENCE)); - } + item.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if(derivateView.isDirty()){ + MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION); + return; + } + FieldUnit fieldUnit = FieldUnit.NewInstance(); + fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class); + IndividualsAssociation association = IndividualsAssociation.NewInstance(fieldUnit); + association.setFeature(Feature.SPECIMEN()); + TaxonDescription description; + if(!taxon.getDescriptions().isEmpty()){ + description = taxon.getDescriptions().iterator().next(); + } + else{ + description = TaxonDescription.NewInstance(taxon); + } + description.addElement(IndividualsAssociation.NewInstance(fieldUnit)); - - 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)); + derivateView.getConversationHolder().commit(); + derivateView.addFieldUnit(fieldUnit); + derivateView.refreshTree(); + } + }); + } } - else if(selectedTreeNode.getValue() instanceof SingleRead){ + else{ MenuItem item = new MenuItem(menu, SWT.NONE); - item.setText(Messages.SingleReadSequenceContextMenu_REUSE_FOR_SEQUENCE); - item.addSelectionListener(new WidgetSelectionListener(CommandType.COPY_TO_CLIPBOARD)); - if(activePart instanceof DerivateView - && ((DerivateView) activePart).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)); - } + item.setText("Create FieldUnit"); + item.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if(derivateView.isDirty()){ + MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION); + return; + } + FieldUnit fieldUnit = FieldUnit.NewInstance(); + fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class); + derivateView.getConversationHolder().commit(); + derivateView.addFieldUnit(fieldUnit); + derivateView.refreshTree(); + } + }); } } } @@ -90,68 +101,5 @@ public class CreateFieldUnitContextMenu extends CompoundContributionItem { }; return contributionItems; } - - private class WidgetSelectionListener extends SelectionAdapter{ - private final CommandType commandType; - - /** - * @param selectedTreeNode - * @param clipboardNode - * @param commandType - */ - public WidgetSelectionListener(CommandType commandType) { - this.commandType = commandType; - } - - @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.getTreeNodeOfSelection(clipBoardSelection); - TreeNode selectedTreeNode = EditorUtil.getTreeNodeOfSelection(selection); - switch (commandType) { - case REMOVE_FROM_SEQUENCE: - if(activeEditor.isDirty()){ - MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION); - return; - } - if(selectedTreeNode!=null && selectedTreeNode.getParent()!=null && - selectedTreeNode.getValue() instanceof SingleRead && selectedTreeNode.getParent().getValue() instanceof Sequence) { - Sequence sequence = (Sequence) selectedTreeNode.getParent().getValue(); - sequence.removeSingleRead((SingleRead) selectedTreeNode.getValue()); - CdmStore.getService(ISequenceService.class).saveOrUpdate(sequence); - if(activeEditor instanceof DerivateView) { - DerivateView derivateView = (DerivateView)activeEditor; - derivateView.getConversationHolder().commit(); - derivateView.refreshTree(); - } - } - - break; - case ADD_TO_SEQUENCE: - if(activeEditor.isDirty()){ - 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 - && selectedTreeNode!=null && selectedTreeNode.getValue() instanceof Sequence){ - SingleRead singleRead = (SingleRead)clipBoardTreeNode.getValue(); - Sequence sequence = (Sequence)selectedTreeNode.getValue(); - sequence.addSingleRead(singleRead); - CdmStore.getService(ISequenceService.class).saveOrUpdate(sequence); - if(activeEditor instanceof DerivateView) { - DerivateView derivateView = (DerivateView)activeEditor; - derivateView.getConversationHolder().commit(); - derivateView.refreshTree(); - LocalSelectionTransfer.getTransfer().setSelection(null); - } - } - break; - case COPY_TO_CLIPBOARD: - LocalSelectionTransfer.getTransfer().setSelection(selection); - break; - } - } - } } + diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/CreateFieldUnitHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/CreateFieldUnitHandler.java index 7f9905742..21e9f6780 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/CreateFieldUnitHandler.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/CreateFieldUnitHandler.java @@ -25,7 +25,7 @@ public class CreateFieldUnitHandler extends AbstractHandler { FieldUnit fieldUnit = FieldUnit.NewInstance(); fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class); derivateView.getConversationHolder().commit(); - derivateView.addHierarchy(fieldUnit); + derivateView.addFieldUnit(fieldUnit); derivateView.refreshTree(); } return null; -- 2.34.1