Bug 478063 - Add further customization possibilities to TMD * allow to influence resource set creation * Add after method in CreateElementCallback Change-Id: I93e9272028847f88757862b03bb9f3b66a016f67 Signed-off-by: Johannes Faltermeier <jfaltermeier@eclipsesource.com>
diff --git a/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java b/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java index e05d59a..41e35a2 100644 --- a/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java +++ b/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java
@@ -256,7 +256,7 @@ @Override public void createPartControl(Composite parent) { // Load the resource from the provided input and display the editor - loadResource(); + resourceSet = loadResource(getEditorInput()); parent.setBackground(new Color(Display.getCurrent(), 255, 255, 255)); parent.setBackgroundMode(SWT.INHERIT_FORCE); @@ -328,16 +328,16 @@ } /** - * Loads the Resource from the EditorInput and sets the EcoreEditor.resource - * field. + * Creates a resource set and loads all required resources for the editor input. + * + * @param editorInput the editor input + * @return the resource set */ - private void loadResource() { - final FileEditorInput fei = (FileEditorInput) getEditorInput(); - - resourceSet = ResourceSetHelpers.loadResourceSetWithProxies( + protected ResourceSet loadResource(IEditorInput editorInput) { + final FileEditorInput fei = (FileEditorInput) editorInput; + return ResourceSetHelpers.loadResourceSetWithProxies( URI.createPlatformResourceURI(fei.getFile().getFullPath().toOSString(), false), commandStack); - } /*
diff --git a/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/InitializeChildCallback.java b/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/InitializeChildCallback.java index 62111fd..b329331 100644 --- a/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/InitializeChildCallback.java +++ b/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/InitializeChildCallback.java
@@ -57,4 +57,9 @@ return result == Window.OK; } + @Override + public void afterCreateElement(Object newElement) { + /* no op */ + } + }
diff --git a/bundles/org.eclipse.emfforms.swt.treemasterdetail/.settings/.api_filters b/bundles/org.eclipse.emfforms.swt.treemasterdetail/.settings/.api_filters index 2762c2b..e03463c 100644 --- a/bundles/org.eclipse.emfforms.swt.treemasterdetail/.settings/.api_filters +++ b/bundles/org.eclipse.emfforms.swt.treemasterdetail/.settings/.api_filters
@@ -7,6 +7,12 @@ <message_argument value="1.7.0"/> </message_arguments> </filter> + <filter comment="SPI" id="923795461"> + <message_arguments> + <message_argument value="1.9.0"/> + <message_argument value="1.8.0"/> + </message_arguments> + </filter> </resource> <resource path="META-INF/MANIFEST.MF" type="org.eclipse.emfforms.spi.swt.treemasterdetail.util.CreateChildActionWithAccelerator"> <filter comment="SPI change 1.8.0" id="305324134"> @@ -82,6 +88,12 @@ </filter> </resource> <resource path="src/org/eclipse/emfforms/spi/swt/treemasterdetail/util/CreateElementCallback.java" type="org.eclipse.emfforms.spi.swt.treemasterdetail.util.CreateElementCallback"> + <filter comment="SPI" id="403804204"> + <message_arguments> + <message_argument value="org.eclipse.emfforms.spi.swt.treemasterdetail.util.CreateElementCallback"/> + <message_argument value="afterCreateElement(Object)"/> + </message_arguments> + </filter> <filter comment="SPI Change 1.9.0" id="403804204"> <message_arguments> <message_argument value="org.eclipse.emfforms.spi.swt.treemasterdetail.util.CreateElementCallback"/>
diff --git a/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/internal/swt/treemasterdetail/defaultprovider/DefaultMenuProvider.java b/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/internal/swt/treemasterdetail/defaultprovider/DefaultMenuProvider.java index 6be8133..21e9286 100644 --- a/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/internal/swt/treemasterdetail/defaultprovider/DefaultMenuProvider.java +++ b/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/internal/swt/treemasterdetail/defaultprovider/DefaultMenuProvider.java
@@ -56,6 +56,11 @@ public void initElement(EObject parent, EReference reference, EObject newObject) { /* no op */ } + + @Override + public void afterCreateElement(Object newElement) { + /* no op */ + } }; deleteActionBuilder = new DefaultDeleteActionBuilder(); }
diff --git a/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/util/CreateChildAction.java b/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/util/CreateChildAction.java index 44e68b7..b51537d 100644 --- a/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/util/CreateChildAction.java +++ b/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/util/CreateChildAction.java
@@ -103,6 +103,9 @@ ((Viewer) selectionProvider).refresh(); } selectionProvider.setSelection(new StructuredSelection(newObject)); + if (createElementCallback != null) { + createElementCallback.afterCreateElement(newObject); + } } else { // If the callback says "cancel" undo the addCommand. addCommand.undo();
diff --git a/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/util/CreateElementCallback.java b/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/util/CreateElementCallback.java index 6e4b81b..c0bf2ad 100644 --- a/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/util/CreateElementCallback.java +++ b/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/util/CreateElementCallback.java
@@ -42,4 +42,12 @@ * be removed again */ boolean beforeCreateElement(Object newElement); + + /** + * Gets called after a new element was added to the domain model. + * + * @param newElement the new Element. + * @since 1.9 + */ + void afterCreateElement(Object newElement); }