Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.etrice.ui.common.base')
-rw-r--r--plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/DiagramEditorBase.java19
-rw-r--r--plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/SaveOnFocusLostListener.java29
2 files changed, 25 insertions, 23 deletions
diff --git a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/DiagramEditorBase.java b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/DiagramEditorBase.java
index 4c91be7cd..9674a3860 100644
--- a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/DiagramEditorBase.java
+++ b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/DiagramEditorBase.java
@@ -14,6 +14,8 @@
package org.eclipse.etrice.ui.common.base.editor;
+import static org.eclipse.ui.PlatformUI.getWorkbench;
+
import java.util.Collection;
import java.util.Map;
@@ -23,6 +25,7 @@ import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature.Setting;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.etrice.core.common.ui.editor.ISaveOnFocusLostEditor;
import org.eclipse.etrice.core.common.ui.linking.GlobalNonPlatformURIEditorOpener;
import org.eclipse.etrice.core.fsm.fSM.ModelComponent;
import org.eclipse.etrice.core.fsm.ui.FSMUiModule;
@@ -45,15 +48,13 @@ import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.ui.editor.XtextEditor;
import org.eclipse.xtext.util.concurrent.IUnitOfWork;
-import static org.eclipse.ui.PlatformUI.getWorkbench;
-
import com.google.inject.Injector;
/**
* @author Henrik Rentz-Reichert
*
*/
-public abstract class DiagramEditorBase extends DiagramEditor implements IInputUriHolder {
+public abstract class DiagramEditorBase extends DiagramEditor implements IInputUriHolder, ISaveOnFocusLostEditor {
private final static String CONTEXT_ID = "org.eclipse.etrice.ui.common.base.context";
@@ -63,6 +64,8 @@ public abstract class DiagramEditorBase extends DiagramEditor implements IInputU
private SuperClassListener superClassListener;
+ private boolean isClosing = false;
+
public DiagramEditorBase(Object textEditorClass) {
this.textEditorClass = textEditorClass;
@@ -254,4 +257,14 @@ public abstract class DiagramEditorBase extends DiagramEditor implements IInputU
}
+ @Override
+ public int promptToSaveOnClose() {
+ isClosing = true;
+ return DEFAULT;
+ }
+
+ public boolean isClosing() {
+ return isClosing;
+ }
+
}
diff --git a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/SaveOnFocusLostListener.java b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/SaveOnFocusLostListener.java
index 6ed93791d..8b6cf8913 100644
--- a/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/SaveOnFocusLostListener.java
+++ b/plugins/org.eclipse.etrice.ui.common.base/src/org/eclipse/etrice/ui/common/base/editor/SaveOnFocusLostListener.java
@@ -15,6 +15,7 @@
package org.eclipse.etrice.ui.common.base.editor;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.etrice.core.common.ui.editor.ISaveOnFocusLostEditor;
import org.eclipse.etrice.ui.common.base.UIBaseActivator;
import org.eclipse.etrice.ui.common.base.preferences.UIBasePreferenceConstants;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -26,7 +27,7 @@ import org.eclipse.ui.IWorkbenchPart;
* @author Henrik Rentz-Reichert
*
*/
-public class SaveOnFocusLostListener implements IPartListener/*, CommandStackListener*/ {
+public class SaveOnFocusLostListener implements IPartListener {
private final IEditorPart editor;
private final IPreferenceStore store;
@@ -39,7 +40,6 @@ public class SaveOnFocusLostListener implements IPartListener/*, CommandStackLis
public SaveOnFocusLostListener(IEditorPart editor) {
this.editor = editor;
this.store = UIBaseActivator.getDefault().getPreferenceStore();
- //editor.getEditingDomain().getCommandStack().addCommandStackListener(this);
editor.getSite().getPage().addPartListener(this);
}
@@ -62,19 +62,17 @@ public class SaveOnFocusLostListener implements IPartListener/*, CommandStackLis
@Override
public void partDeactivated(IWorkbenchPart part) {
- if(part != editor)
+ if (part != editor)
return;
+ if (part instanceof ISaveOnFocusLostEditor) {
+ if (((ISaveOnFocusLostEditor) part).isClosing()) {
+ return;
+ }
+ }
+
boolean isSaveOnFocus = store.getBoolean(UIBasePreferenceConstants.SAVE_DIAG_ON_FOCUS_LOST);
if (isActive && isSaveOnFocus && editor.isDirty()) {
-// if (editor.getEditingDomain() instanceof TransactionalEditingDomainImpl) {
-// TransactionalEditingDomainImpl ted = (TransactionalEditingDomainImpl) editor.getEditingDomain();
-// if (ted.getActiveTransaction()!=null) {
-// // avoid to run into dead-lock
-// saveAfterCurrentCommand = true;
-// return;
-// }
-// }
editor.doSave(new NullProgressMonitor());
}
}
@@ -82,15 +80,6 @@ public class SaveOnFocusLostListener implements IPartListener/*, CommandStackLis
@Override
public void partOpened(IWorkbenchPart part) {
}
-
-// @Override
-// public void commandStackChanged(EventObject event) {
-//
-// if (saveAfterCurrentCommand) {
-// saveAfterCurrentCommand = false;
-// editor.doSave(new NullProgressMonitor());
-// }
-// }
public void setActive(boolean isActive){
this.isActive = isActive;

Back to the top