From 08d0303675fd588eccb165235aa3403afa50aa6d Mon Sep 17 00:00:00 2001 From: Patric Plitzner Date: Mon, 15 Dec 2014 13:41:23 +0000 Subject: [PATCH] - allow creation of derivates only when editor is not dirty --- .../CreateDerivateContextMenu.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java index a98bbb423..2a74174c3 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java @@ -9,7 +9,6 @@ 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.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.CompoundContributionItem; @@ -29,6 +28,7 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType; import eu.etaxonomy.taxeditor.editor.EditorUtil; import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView; import eu.etaxonomy.taxeditor.model.AbstractUtility; +import eu.etaxonomy.taxeditor.model.MessagingUtils; /** * Context menu for the creation of derivates in the derivate hierarchy. @@ -127,6 +127,18 @@ public class CreateDerivateContextMenu extends CompoundContributionItem { */ @Override public void widgetSelected(SelectionEvent e) { + DerivateView derivateView = null; + if(AbstractUtility.getActivePart() instanceof DerivateView){ + derivateView = (DerivateView) AbstractUtility.getActivePart(); + } + if(derivateView!=null){ + if(derivateView.isDirty()){ + e.doit = false; + MessagingUtils.warningDialog("View has unsaved changes", this, "You need to save before performing this action"); + return; + } + } + Object createdElement = null; Object selectedDerivate = selectedNode.getValue(); if(selectedDerivate instanceof DnaSample && ((DnaSample) selectedDerivate).getRecordBasis()==SpecimenOrObservationType.DnaSample){ @@ -168,10 +180,8 @@ public class CreateDerivateContextMenu extends CompoundContributionItem { } //refresh view - IWorkbenchPart activePart = AbstractUtility.getActivePart(); - if(activePart instanceof DerivateView){ - DerivateView derivateView = (DerivateView)activePart; - derivateView.changed(null); + if(derivateView!=null){ + derivateView.getConversationHolder().commit(); derivateView.refreshTree(createdElement); } } -- 2.34.1