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