diff options
author | Thomas Schindl | 2011-03-08 23:49:05 +0000 |
---|---|---|
committer | Thomas Schindl | 2011-03-08 23:49:05 +0000 |
commit | c1bac68cf707b4aea793cd52e4128e39f45e59e6 (patch) | |
tree | 3f897ef0e7509dfb30c0c2d3d0fa10f1946a5c83 | |
parent | 0f8579cea16d9340785f4a855442a4e4de1816cc (diff) | |
download | org.eclipse.e4.tools-c1bac68cf707b4aea793cd52e4128e39f45e59e6.tar.gz org.eclipse.e4.tools-c1bac68cf707b4aea793cd52e4128e39f45e59e6.tar.xz org.eclipse.e4.tools-c1bac68cf707b4aea793cd52e4128e39f45e59e6.zip |
Bug 339299 - [ModelTooling] Add scripting support
4 files changed, 42 insertions, 41 deletions
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java index 0dd425e4..475fb90b 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java @@ -588,6 +588,8 @@ public class Messages { public String ModelEditor_Form; public String ModelEditor_XMI; public String ModelEditor_ExternalizeStrings; + public String ModelEditor_Script; + public String ModelEditor_ShowControl; public String ExternalizeStringHandler_Dialog_ElementName; public String ExternalizeStringHandler_Dialog_AttributeName; diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties index a26f112b..b45be4ff 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties @@ -586,6 +586,8 @@ ModelEditor_Delete=Remove ModelEditor_Form=Form ModelEditor_XMI=XMI ModelEditor_ExternalizeStrings=Externalize Strings +ModelEditor_Script=Execute Script +ModelEditor_ShowControl=Show control ExternalizeStringHandler_Dialog_ElementName=Element ExternalizeStringHandler_Dialog_AttributeName=Attribute diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ControlHighlighter.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ControlHighlighter.java index bfe41482..da74a4d7 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ControlHighlighter.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ControlHighlighter.java @@ -8,14 +8,12 @@ import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class ControlHighlighter { - private Control control; - private Shell s; + private static Shell s; - public ControlHighlighter(Control control) { - this.control = control; - } - - public void show(Shell dialog) { + public static void show(Control control) { + if (s != null && !s.isDisposed()) { + s.dispose(); + } s = new Shell(control.getShell(), SWT.NO_TRIM); Point p1 = control.toDisplay(0, 0); Point p2 = control.getSize(); @@ -31,7 +29,7 @@ public class ControlHighlighter { }); } - public void hide() { + public static void hide() { if (s != null) { s.dispose(); s = null; diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java index f88e7376..c5f16b04 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java @@ -269,8 +269,6 @@ public class ModelEditor { private AbstractComponentEditor currentEditor; - private ControlHighlighter currentControlHighlighter; - public ModelEditor(Composite composite, IEclipseContext context, IModelResource modelProvider, IProject project, final IResourcePool resourcePool) { this.resourcePool = resourcePool; this.modelProvider = modelProvider; @@ -557,6 +555,36 @@ public class ModelEditor { } } + IExtensionRegistry registry = RegistryFactory.getRegistry(); + IExtensionPoint extPoint = registry.getExtensionPoint("org.eclipse.e4.tools.emf.ui.scripting"); //$NON-NLS-1$ + final IConfigurationElement[] elements = extPoint.getConfigurationElements(); + + if (elements.length > 0 && !s.isEmpty() && s.getFirstElement() instanceof MApplicationElement) { + if (addSeparator) { + manager.add(new Separator()); + } + + addSeparator = false; + + MenuManager scriptExecute = new MenuManager(messages.ModelEditor_Script); + manager.add(scriptExecute); + for (IConfigurationElement e : elements) { + final IConfigurationElement le = e; + scriptExecute.add(new Action(e.getAttribute("label")) { //$NON-NLS-1$ + @Override + public void run() { + try { + IScriptingSupport support = (IScriptingSupport) le.createExecutableExtension("class"); //$NON-NLS-1$ + support.openEditor(viewer.getControl().getShell(), s.getFirstElement(), new HashMap<String, Object>()); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }); + } + } + if (project != null) { if (addSeparator) { @@ -575,42 +603,13 @@ public class ModelEditor { manager.add(new Separator()); } - IExtensionRegistry registry = RegistryFactory.getRegistry(); - IExtensionPoint extPoint = registry.getExtensionPoint("org.eclipse.e4.tools.emf.ui.scripting"); //$NON-NLS-1$ - final IConfigurationElement[] elements = extPoint.getConfigurationElements(); - - if (elements.length > 0 && !s.isEmpty() && s.getFirstElement() instanceof MApplicationElement) { - MenuManager scriptExecute = new MenuManager(messages.ObjectViewer_Script); - manager.add(scriptExecute); - for (IConfigurationElement e : elements) { - final IConfigurationElement le = e; - scriptExecute.add(new Action(e.getAttribute("label")) { //$NON-NLS-1$ - @Override - public void run() { - try { - IScriptingSupport support = (IScriptingSupport) le.createExecutableExtension("class"); //$NON-NLS-1$ - support.openEditor(viewer.getControl().getShell(), s.getFirstElement(), new HashMap<String, Object>()); - } catch (CoreException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - }); - } - } - if (s.getFirstElement() instanceof MUIElement) { final MUIElement el = (MUIElement) s.getFirstElement(); if (el.getWidget() instanceof Control) { - manager.add(new Action("Show control") { + manager.add(new Action(messages.ModelEditor_ShowControl) { public void run() { - if (currentControlHighlighter != null) { - currentControlHighlighter.hide(); - } - - currentControlHighlighter = new ControlHighlighter((Control) el.getWidget()); - currentControlHighlighter.show(viewer.getTree().getShell()); + ControlHighlighter.show((Control) el.getWidget()); } }); |