diff --git a/com.archimatetool.editor/plugin.xml b/com.archimatetool.editor/plugin.xml
index 33131ffbe..a0e72cde1 100644
--- a/com.archimatetool.editor/plugin.xml
+++ b/com.archimatetool.editor/plugin.xml
@@ -1713,12 +1713,20 @@
+
+
+
+
+ sequence="B A">
@@ -1738,9 +1746,9 @@
+ sequence="B R">
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/AbstractDiagramEditor.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/AbstractDiagramEditor.java
index dea64048f..311ba5d83 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/AbstractDiagramEditor.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/AbstractDiagramEditor.java
@@ -84,6 +84,8 @@
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.contexts.IContextActivation;
+import org.eclipse.ui.contexts.IContextService;
import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
import org.eclipse.ui.views.properties.IPropertySheetPage;
@@ -94,7 +96,6 @@
import com.archimatetool.editor.diagram.actions.BorderColorAction;
import com.archimatetool.editor.diagram.actions.BringForwardAction;
import com.archimatetool.editor.diagram.actions.BringToFrontAction;
-import com.archimatetool.editor.diagram.actions.LineWidthAction;
import com.archimatetool.editor.diagram.actions.ConnectionRouterAction;
import com.archimatetool.editor.diagram.actions.CopyAction;
import com.archimatetool.editor.diagram.actions.CutAction;
@@ -107,6 +108,7 @@
import com.archimatetool.editor.diagram.actions.FontColorAction;
import com.archimatetool.editor.diagram.actions.FullScreenAction;
import com.archimatetool.editor.diagram.actions.LineColorAction;
+import com.archimatetool.editor.diagram.actions.LineWidthAction;
import com.archimatetool.editor.diagram.actions.LockObjectAction;
import com.archimatetool.editor.diagram.actions.OpacityAction;
import com.archimatetool.editor.diagram.actions.OutlineOpacityAction;
@@ -195,6 +197,11 @@ public abstract class AbstractDiagramEditor extends GraphicalEditorWithFlyoutPal
*/
protected AbstractPaletteRoot fPaletteRoot;
+ /**
+ * Context for key bindngs
+ */
+ private IContextActivation contextActivation;
+
/**
* Application Preference changed
* @param event
@@ -372,6 +379,9 @@ protected void configureGraphicalViewer() {
if(rgb != null) {
viewer.getControl().setBackground(new Color(rgb));
}
+
+ // Activate Context
+ activateContext();
}
private void hookSelectionListener() {
@@ -955,6 +965,26 @@ protected void disableActions() {
}
}
+ /**
+ * Activate the context for key bindings for this site
+ */
+ public IContextActivation activateContext() {
+ if(contextActivation == null) {
+ contextActivation = getSite().getService(IContextService.class).activateContext(PaletteKeyHandler.CONTEXT_ID);
+ }
+ return contextActivation;
+ }
+
+ /**
+ * De-activate the context for key bindings for this site
+ */
+ public void deactivateContext() {
+ if(contextActivation != null) {
+ contextActivation.getContextService().deactivateContext(contextActivation);
+ contextActivation = null;
+ }
+ }
+
@Override
public void selectObjects(Object[] objects) {
// Safety check in case this is called via Display#asyncExec()
@@ -1089,6 +1119,8 @@ public void dispose() {
fPaletteRoot.dispose();
}
+ contextActivation = null;
+
// Can now be garbage collected
fDiagramModel = null;
}
diff --git a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/directedit/AbstractDirectEditManager.java b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/directedit/AbstractDirectEditManager.java
index 15c037622..f093ea1fd 100644
--- a/com.archimatetool.editor/src/com/archimatetool/editor/diagram/directedit/AbstractDirectEditManager.java
+++ b/com.archimatetool.editor/src/com/archimatetool/editor/diagram/directedit/AbstractDirectEditManager.java
@@ -5,13 +5,16 @@
*/
package com.archimatetool.editor.diagram.directedit;
+import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.tools.CellEditorLocator;
import org.eclipse.gef.tools.DirectEditManager;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IEditorPart;
+import com.archimatetool.editor.diagram.AbstractDiagramEditor;
import com.archimatetool.editor.ui.UIUtils;
import com.archimatetool.editor.ui.components.GlobalActionDisablementHandler;
@@ -39,6 +42,12 @@ protected void initCellEditor() {
// Filter out any illegal xml characters
UIUtils.applyInvalidCharacterFilter(getTextControl());
+
+ // Deactivate key binding context
+ IEditorPart part = ((DefaultEditDomain)getEditPart().getViewer().getEditDomain()).getEditorPart();
+ if(part instanceof AbstractDiagramEditor editor) {
+ editor.deactivateContext();
+ }
}
protected void setNormalised() {
@@ -72,6 +81,12 @@ protected void bringDown() {
// Restore the global Action Handlers
fGlobalActionHandler.restoreGlobalActions();
+ // Reactivate key binding context
+ IEditorPart part = ((DefaultEditDomain)getEditPart().getViewer().getEditDomain()).getEditorPart();
+ if(part instanceof AbstractDiagramEditor editor) {
+ editor.activateContext();
+ }
+
super.bringDown();
}
}