I am developing my own Eclipse plugin with Eclipse RCP 2020-09. I am adding egit bundles in Perspective via Model Fragments. I do the following steps:
Create a Part - Git Repositories in a Model Fragment for TrimmedWindow - sharedElements
Add bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView in Part Class URI and name the Part ID org.eclipse.egit.ui.RepositoriesView
Add the created Part in the Perspective Placeholder.
Here is the XMI format for my fragment.e4xmi:
<?xml version="1.0" encoding="ASCII"?>
<fragment:ModelFragments xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/descriptor/basic" xmlns:basic_1="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:commands="http://www.eclipse.org/ui/2010/UIModel/application/commands" xmlns:fragment="http://www.eclipse.org/ui/2010/UIModel/fragment" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmlns:ui="http://www.eclipse.org/ui/2010/UIModel/application/ui" xmi:id="_BxaXACerEeWxCPrV0pAZQQ">
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_TKjkcA4zEeuv3ZS4n7QGUw" featurename="descriptors" parentElementId="xpath:/">
<elements xsi:type="basic:PartDescriptor" xmi:id="_dSdBgA4zEeuv3ZS4n7QGUw" elementId="com.catto.ide.dev.partdescriptor.cattodev" label="Catto" iconURI="platform:/plugin/com.catto.ide.dev/icons/Sample.png" category="CattoDev" contributionURI="bundleclass://com.catto.ide.dev/catto.plugin.adapter.views.SampleView">
<tags>View</tags>
<tags>categoryTag:CattoDev</tags>
</elements>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_QqSikIrOEeW7h_qdP9N9fw" featurename="commands" parentElementId="xpath:/">
<elements xsi:type="commands:Command" xmi:id="_UCYfwIrOEeW7h_qdP9N9fw" elementId="test.handler.helloWorldCommand" commandName="Hello World"/>
<elements xsi:type="commands:Command" xmi:id="_TxosMA4rEeufe5zGX17fuA" elementId="com.catto.ide.dev.command.goodbyeworld" commandName="Goodbye World"/>
<elements xsi:type="commands:Command" xmi:id="_Ya-xIBUWEeu_Lpb-A4VglQ" elementId="com.catto.ide.dev.command.tabby" commandName="Tabby"/>
<elements xsi:type="commands:Command" xmi:id="_aGnMgBUWEeu_Lpb-A4VglQ" elementId="com.catto.ide.dev.command.shibo" commandName="Shibo"/>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_fW12kIrOEeW7h_qdP9N9fw" featurename="handlers" parentElementId="xpath:/">
<elements xsi:type="commands:Handler" xmi:id="_k2L0IIrOEeW7h_qdP9N9fw" elementId="org.eclipse.pde.ui.templates.handler.0" contributionURI="bundleclass://com.catto.ide.dev/com.catto.ide.dev.handlers.HelloWorldHandler" command="_UCYfwIrOEeW7h_qdP9N9fw"/>
<elements xsi:type="commands:Handler" xmi:id="_WggGMA4rEeufe5zGX17fuA" elementId="com.catto.ide.dev.handler.0" contributionURI="bundleclass://com.catto.ide.dev/com.catto.ide.dev.handlers.GoodByeWorldHandler" command="_TxosMA4rEeufe5zGX17fuA"/>
<elements xsi:type="commands:Handler" xmi:id="_b64mgBUWEeu_Lpb-A4VglQ" elementId="com.catto.ide.dev.handler.1" contributionURI="bundleclass://com.catto.ide.dev/com.catto.ide.dev.handlers.TabbyHandler" command="_Ya-xIBUWEeu_Lpb-A4VglQ"/>
<elements xsi:type="commands:Handler" xmi:id="_ealjIBUWEeu_Lpb-A4VglQ" elementId="com.catto.ide.dev.handler.2" contributionURI="bundleclass://com.catto.ide.dev/com.catto.ide.dev.handlers.ShiboHandler" command="_aGnMgBUWEeu_Lpb-A4VglQ"/>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_pVgfIIrOEeW7h_qdP9N9fw" featurename="menuContributions" parentElementId="xpath:/">
<elements xsi:type="menu:MenuContribution" xmi:id="_tSwX0IrOEeW7h_qdP9N9fw" elementId="org.eclipse.pde.ui.templates.menucontribution.0" positionInParent="after=additions" parentId="org.eclipse.ui.main.menu">
<children xsi:type="menu:Menu" xmi:id="_wg9ZMIrOEeW7h_qdP9N9fw" elementId="org.eclipse.pde.ui.templates.menu.e4handlers" label="Catto">
<visibleWhen xsi:type="ui:ImperativeExpression" xmi:id="_kgDgEBlJEeuO-abULpdSNA" contributionURI="bundleclass://com.catto.ide.dev/com.catto.ide.dev.handlers.MenuContributionsHandler"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_2LM_MIrOEeW7h_qdP9N9fw" elementId="org.eclipse.pde.ui.templates.handledmenuitem." label="" iconURI="platform:/plugin/com.catto.ide.dev/icons/Sample.png" command="_UCYfwIrOEeW7h_qdP9N9fw"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_fD1ZMA4rEeufe5zGX17fuA" elementId="com.catto.ide.dev.handledmenuitem.0" iconURI="platform:/plugin/com.catto.ide.dev/icons/filter_internal_targets.png" command="_TxosMA4rEeufe5zGX17fuA"/>
</children>
</elements>
<elements xsi:type="menu:MenuContribution" xmi:id="_BducUIrPEeW7h_qdP9N9fw" elementId="org.eclipse.pde.ui.templates.menucontribution.1" positionInParent="after=additions" parentId="popup">
<children xsi:type="menu:Menu" xmi:id="_Dtii0IrPEeW7h_qdP9N9fw" elementId="org.eclipse.pde.ui.templates.menu.e4handlers" label="E4 Handlers" iconURI="platform:/plugin/com.catto.ide.dev/icons/Sample.png">
<children xsi:type="menu:HandledMenuItem" xmi:id="_Dtii0YrPEeW7h_qdP9N9fw" elementId="org.eclipse.pde.ui.templates.handledmenuitem." label="" iconURI="platform:/plugin/com.catto.ide.dev/icons/Sample.png" command="_UCYfwIrOEeW7h_qdP9N9fw"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_zayEMA4rEeufe5zGX17fuA" elementId="com.catto.ide.dev.handledmenuitem.1" iconURI="platform:/plugin/com.catto.ide.dev/icons/filter_internal_targets.png" command="_TxosMA4rEeufe5zGX17fuA"/>
</children>
</elements>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_cIcUMA4tEeufe5zGX17fuA" featurename="trimContributions" parentElementId="xpath:/">
<elements xsi:type="menu:TrimContribution" xmi:id="_fGn8kA4tEeufe5zGX17fuA" elementId="com.catto.ide.dev.trimcontribution.CattoDev" accessibilityPhrase="" parentId="org.eclipse.ui.main.toolbar" positionInParent="">
<children xsi:type="menu:ToolBar" xmi:id="_lSmWoA4tEeufe5zGX17fuA" elementId="com.catto.ide.dev.toolbar.CattoDev" accessibilityPhrase="">
<children xsi:type="menu:HandledToolItem" xmi:id="_mbsFoA4tEeufe5zGX17fuA" elementId="com.catto.ide.dev.handledtoolitem.0" iconURI="platform:/plugin/com.catto.ide.dev/icons/Sample.png" command="_UCYfwIrOEeW7h_qdP9N9fw"/>
<children xsi:type="menu:HandledToolItem" xmi:id="_DBclIA4uEeufe5zGX17fuA" elementId="com.catto.ide.dev.handledtoolitem.1" iconURI="platform:/plugin/com.catto.ide.dev/icons/filter_internal_targets.png" command="_TxosMA4rEeufe5zGX17fuA"/>
</children>
</elements>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_sz25QBNqEeubfohgYRL3mA" featurename="snippets" parentElementId="xpath:/">
<elements xsi:type="advanced:Perspective" xmi:id="_vyUOcBNqEeubfohgYRL3mA" elementId="com.catto.ide.dev.perspective.snowcatto" accessibilityPhrase="" label="SnowCatto">
<children xsi:type="basic_1:PartSashContainer" xmi:id="_E_gEQBNzEeubfohgYRL3mA" elementId="com.catto.ide.dev.partsashcontainer.0">
<children xsi:type="basic_1:PartSashContainer" xmi:id="_LQkZsBNzEeubfohgYRL3mA" elementId="top" containerData="75" horizontal="true">
<children xsi:type="basic_1:PartStack" xmi:id="_5AmM0BNzEeubfohgYRL3mA" elementId="com.catto.ide.dev.partstack.0" containerData="26">
<children xsi:type="advanced:Placeholder" xmi:id="_PP0rQBN4EeubfohgYRL3mA" elementId="org.eclipse.ui.navigator.ProjectExplorer" ref="_Ww7GMBkDEea2ENFkqfwc7g"/>
<children xsi:type="advanced:Placeholder" xmi:id="_RwEzwBNzEeubfohgYRL3mA" elementId="org.eclipse.egit.ui.RepositoriesView" ref="_cVUtcBkEEea2ENFkqfwc7g"/>
</children>
<children xsi:type="advanced:Placeholder" xmi:id="_cQ_00BNzEeubfohgYRL3mA" elementId="org.eclipse.ui.editorss" containerData="74" ref="_dweAUBNvEeubfohgYRL3mA"/>
</children>
<children xsi:type="basic_1:PartSashContainer" xmi:id="_qXvGABNzEeubfohgYRL3mA" elementId="bottom" containerData="25" horizontal="true">
<children xsi:type="basic_1:PartStack" xmi:id="_mYNFoBOEEeuok7ixJwbT8A" elementId="com.catto.ide.dev.partstack.1">
<children xsi:type="advanced:Placeholder" xmi:id="_J0-poBkCEea2ENFkqfwc7g" elementId="org.eclipse.ui.console.ConsoleView" containerData="74" ref="_DHSpoBkCEea2ENFkqfwc7g"/>
<children xsi:type="advanced:Placeholder" xmi:id="_qCy5MBUSEeu_Lpb-A4VglQ" elementId="gunnars.ide.part.toolbelt" ref="_yWl3IBkCEea2ENFkqfwc7g"/>
<children xsi:type="basic_1:Part" xmi:id="_l4T1wBUSEeu_Lpb-A4VglQ" elementId="com.catto.ide.dev.part.psipsi" contributionURI="bundleclass://com.catto.ide.dev/catto.plugin.perspective.parts.PerspectivePart" label="Psi Psi" iconURI="platform:/plugin/com.catto.ide.dev/icons/ancestorpane_co.png">
<menus xmi:id="_eA9lYBUaEeu_Lpb-A4VglQ" elementId="com.catto.ide.dev.menu.0" iconURI="platform:/plugin/com.catto.ide.dev/eclipse16.png">
<tags>ViewMenu</tags>
<children xsi:type="menu:HandledMenuItem" xmi:id="_eY8AgBUaEeu_Lpb-A4VglQ" elementId="com.catto.ide.dev.handledmenuitem.tabby" label="Tabby" command="_Ya-xIBUWEeu_Lpb-A4VglQ"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_ezyJcBUaEeu_Lpb-A4VglQ" elementId="com.catto.ide.dev.handledmenuitem.shibo" label="Shibo" command="_aGnMgBUWEeu_Lpb-A4VglQ"/>
</menus>
</children>
</children>
</children>
</children>
</elements>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_R0MbkBNvEeubfohgYRL3mA" featurename="sharedElements" parentElementId="IDEWindow">
<elements xsi:type="advanced:Area" xmi:id="_dweAUBNvEeubfohgYRL3mA" elementId="org.eclipse.ui.editorss" label="Editor Area">
<children xsi:type="basic_1:PartStack" xmi:id="_hq_8MBNvEeubfohgYRL3mA" elementId="org.eclipse.e4.primaryDataStack">
<tags>org.eclipse.e4.primaryDataStack</tags>
<tags>EditorStack</tags>
</children>
</elements>
<elements xsi:type="basic_1:Part" xmi:id="_DHSpoBkCEea2ENFkqfwc7g" elementId="org.eclipse.ui.console.ConsoleView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Console" iconURI="platform:/plugin/org.eclipse.ui.console/icons/full/cview16/console_view.png"/>
<elements xsi:type="basic_1:Part" xmi:id="_yWl3IBkCEea2ENFkqfwc7g" elementId="gunnars.ide.part.toolbelt" contributionURI="bundleclass://com.catto.ide.dev/catto.plugin.perspective.parts.CatCommand" label="Toolbelt Commands" iconURI="platform:/plugin/com.catto.ide.dev/icons/template_obj.png"/>
<elements xsi:type="basic_1:Part" xmi:id="_Ww7GMBkDEea2ENFkqfwc7g" elementId="org.eclipse.ui.navigator.ProjectExplorer" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Project Explorer" iconURI="platform:/plugin/org.eclipse.ui.ide.application/icons/full/eview16/resource_persp.png"/>
<elements xsi:type="basic_1:Part" xmi:id="_cVUtcBkEEea2ENFkqfwc7g" elementId="org.eclipse.egit.ui.RepositoriesView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Git Repositories" iconURI="platform:/plugin/com.catto.ide.dev/icons/org.png"/>
</fragments>
</fragment:ModelFragments>
When I run the software, the Git Reposiroties tab appears but there is an error saying: Could not create the view: org.eclipse.egit.ui.RepositoriesView. I checked several posts and most of them said that updating the software will solve everything, but my software is the latest. My egit version is 5.9.0. I think this happens to me because of I do something wrong in my code. Can you give me any ideas or advices? Here is the log file:
java.lang.Exception
at org.eclipse.ui.internal.ViewReference.createErrorPart(ViewReference.java:115)
at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:101)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPart(CompatibilityPart.java:300)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:338)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:999)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:964)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:140)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:405)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:332)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:202)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:91)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:60)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:42)
at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:132)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:999)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:659)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.run(PartRenderingEngine.java:544)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:528)
at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.createWidget(ElementReferenceRenderer.java:73)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:999)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:659)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:765)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:736)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:730)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:714)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.lambda$0(PartServiceImpl.java:109)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler.lambda$0(UIEventHandler.java:38)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4725)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:219)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132)
at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75)
at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55)
at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424)
at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElementGen(ElementContainerImpl.java:170)
at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:188)
at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.lambda$4(StackRenderer.java:975)
at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4195)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1037)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1046)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:760)
at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3241)
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1879)
at org.eclipse.swt.custom.CTabFolder.lambda$0(CTabFolder.java:330)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4195)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1037)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4012)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3612)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:153)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Thanks and best regards,
Duy
I have a simple Eclipse 4 RCP application. The parameter "-clearPersistedState" is explicitly not used to make the window have its size and position restored on a later startup.
The problem is that the model persisted to ".metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi" contains the whole application state. when I extend the application's model in a later version by e.g. adding a new menu entry and an associated command, these additions are just ignored if a persisted is found.
Using "-deltaRestore" doesn't work either.
How can I ensure that specific parts of the application are always rendered how they are defined in the application model instead of restoring their state from "workbench.xmi"?
Is it alternatively possible to just persist/restore the window's size and position?
The initial model:
<?xml version="1.0" encoding="UTF-8"?>
<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_6wlLcMgZEeSyMNYR5xypkQ" elementId="RCPTest.application" bindingContexts="_6wlLecgZEeSyMNYR5xypkQ">
<children xsi:type="basic:TrimmedWindow" xmi:id="_6wlLccgZEeSyMNYR5xypkQ" elementId="RCPTest.window.main" label="Eclipse 4 RCP Application" width="500" height="400">
<children xsi:type="advanced:PerspectiveStack" xmi:id="_6wlLkMgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.ide.perspectivestack">
<children xsi:type="advanced:Perspective" xmi:id="_6wlLkcgZEeSyMNYR5xypkQ" elementId="RCPTest.perspective.sample">
<children xsi:type="basic:PartSashContainer" xmi:id="_6wlLksgZEeSyMNYR5xypkQ" elementId="RCPTest.partsashcontainer.sample">
<children xsi:type="basic:PartStack" xmi:id="_6wlLk8gZEeSyMNYR5xypkQ" elementId="RCPTest.partstack.sample">
<children xsi:type="basic:Part" xmi:id="_6wlLlMgZEeSyMNYR5xypkQ" elementId="RCPTest.part.sample" contributionURI="bundleclass://RCPTest/rcptest.parts.SamplePart" label="Sample Part"/>
</children>
</children>
</children>
</children>
<mainMenu xmi:id="_6wlLicgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.main.menu">
<children xsi:type="menu:Menu" xmi:id="_6wlLisgZEeSyMNYR5xypkQ" elementId="file" label="File">
<children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLjcgZEeSyMNYR5xypkQ" elementId="RCPTest.handleditem.quit" label="Quit" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
</children>
<children xsi:type="menu:Menu" xmi:id="_6wlLjsgZEeSyMNYR5xypkQ" elementId="help" label="Help"/>
</mainMenu>
</children>
<handlers xmi:id="_6wlLfcgZEeSyMNYR5xypkQ" elementId="rcptest.handler.quitCommand" contributionURI="bundleclass://RCPTest/rcptest.handlers.QuitHandler" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
<bindingTables xmi:id="_6wlLfsgZEeSyMNYR5xypkQ" elementId="RCPTest.bindingtable" bindingContext="_6wlLecgZEeSyMNYR5xypkQ">
<bindings xmi:id="_6wlLf8gZEeSyMNYR5xypkQ" elementId="RCPTest.keybinding.m1q" keySequence="M1+Q" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
</bindingTables>
<rootContext xmi:id="_6wlLecgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
<children xmi:id="_6wlLesgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.window" name="In Windows"/>
<children xmi:id="_6wlLe8gZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
</rootContext>
<commands xmi:id="_6wlLfMgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.file.exit" commandName="quitCommand"/>
<addons xmi:id="_6wlLcsgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
<addons xmi:id="_6wlLc8gZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
<addons xmi:id="_6wlLdMgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
<addons xmi:id="_6wlLdcgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
<addons xmi:id="_6wlLdsgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.handler.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>
<addons xmi:id="_6wlLd8gZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
<addons xmi:id="_6wlLeMgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
</application:Application>
The "workbench.xmi" persisted with this version:
<?xml version="1.0" encoding="ASCII"?>
<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_KdFcsQlbEee-eMrs46logg" elementId="RCPTest.application" contributorURI="platform:/plugin/RCPTest" selectedElement="_KdFcsglbEee-eMrs46logg" bindingContexts="_KdFcvwlbEee-eMrs46logg">
<children xsi:type="basic:TrimmedWindow" xmi:id="_KdFcsglbEee-eMrs46logg" elementId="RCPTest.window.main" contributorURI="platform:/plugin/RCPTest" selectedElement="_KdFcswlbEee-eMrs46logg" label="Eclipse 4 RCP Application" x="223" y="217" width="1318" height="610">
<tags>topLevel</tags>
<children xsi:type="advanced:PerspectiveStack" xmi:id="_KdFcswlbEee-eMrs46logg" elementId="org.eclipse.ui.ide.perspectivestack" contributorURI="platform:/plugin/RCPTest" selectedElement="_KdFctAlbEee-eMrs46logg">
<children xsi:type="advanced:Perspective" xmi:id="_KdFctAlbEee-eMrs46logg" elementId="RCPTest.perspective.sample" contributorURI="platform:/plugin/RCPTest" selectedElement="_KdFctQlbEee-eMrs46logg">
<children xsi:type="basic:PartSashContainer" xmi:id="_KdFctQlbEee-eMrs46logg" elementId="RCPTest.partsashcontainer.sample" contributorURI="platform:/plugin/RCPTest" selectedElement="_KdFctglbEee-eMrs46logg">
<children xsi:type="basic:PartStack" xmi:id="_KdFctglbEee-eMrs46logg" elementId="RCPTest.partstack.sample" contributorURI="platform:/plugin/RCPTest" containerData="5000" selectedElement="_KdFctwlbEee-eMrs46logg">
<tags>active</tags>
<children xsi:type="basic:Part" xmi:id="_KdFctwlbEee-eMrs46logg" elementId="RCPTest.part.sample" contributorURI="platform:/plugin/RCPTest" contributionURI="bundleclass://RCPTest/rcptest.parts.SamplePart" label="Sample Part">
<tags>active</tags>
</children>
</children>
</children>
</children>
</children>
<mainMenu xmi:id="_KdFcuAlbEee-eMrs46logg" elementId="org.eclipse.ui.main.menu" contributorURI="platform:/plugin/RCPTest">
<children xsi:type="menu:Menu" xmi:id="_KdFcuQlbEee-eMrs46logg" elementId="file" contributorURI="platform:/plugin/RCPTest" label="File">
<children xsi:type="menu:HandledMenuItem" xmi:id="_KdFcuglbEee-eMrs46logg" elementId="RCPTest.handleditem.quit" contributorURI="platform:/plugin/RCPTest" label="Quit" command="_KdFcwglbEee-eMrs46logg"/>
</children>
<children xsi:type="menu:Menu" xmi:id="_KdFcuwlbEee-eMrs46logg" elementId="help" contributorURI="platform:/plugin/RCPTest" label="Help"/>
</mainMenu>
</children>
<handlers xmi:id="_KdFcvAlbEee-eMrs46logg" elementId="rcptest.handler.quitCommand" contributorURI="platform:/plugin/RCPTest" contributionURI="bundleclass://RCPTest/rcptest.handlers.QuitHandler" command="_KdFcwglbEee-eMrs46logg"/>
<bindingTables xmi:id="_KdFcvQlbEee-eMrs46logg" elementId="RCPTest.bindingtable" contributorURI="platform:/plugin/RCPTest" bindingContext="_KdFcvwlbEee-eMrs46logg">
<bindings xmi:id="_KdFcvglbEee-eMrs46logg" elementId="RCPTest.keybinding.m1q" contributorURI="platform:/plugin/RCPTest" keySequence="M1+Q" command="_KdFcwglbEee-eMrs46logg"/>
</bindingTables>
<rootContext xmi:id="_KdFcvwlbEee-eMrs46logg" elementId="org.eclipse.ui.contexts.dialogAndWindow" contributorURI="platform:/plugin/RCPTest" name="In Dialog and Windows">
<children xmi:id="_KdFcwAlbEee-eMrs46logg" elementId="org.eclipse.ui.contexts.window" contributorURI="platform:/plugin/RCPTest" name="In Windows"/>
<children xmi:id="_KdFcwQlbEee-eMrs46logg" elementId="org.eclipse.ui.contexts.dialog" contributorURI="platform:/plugin/RCPTest" name="In Dialogs"/>
</rootContext>
<commands xmi:id="_KdFcwglbEee-eMrs46logg" elementId="org.eclipse.ui.file.exit" contributorURI="platform:/plugin/RCPTest" commandName="quitCommand"/>
<addons xmi:id="_KdFcwwlbEee-eMrs46logg" elementId="org.eclipse.e4.core.commands.service" contributorURI="platform:/plugin/RCPTest" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
<addons xmi:id="_KdFcxAlbEee-eMrs46logg" elementId="org.eclipse.e4.ui.contexts.service" contributorURI="platform:/plugin/RCPTest" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
<addons xmi:id="_KdFcxQlbEee-eMrs46logg" elementId="org.eclipse.e4.ui.bindings.service" contributorURI="platform:/plugin/RCPTest" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
<addons xmi:id="_KdFcxglbEee-eMrs46logg" elementId="org.eclipse.e4.ui.workbench.commands.model" contributorURI="platform:/plugin/RCPTest" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
<addons xmi:id="_KdFcxwlbEee-eMrs46logg" elementId="org.eclipse.e4.ui.workbench.handler.model" contributorURI="platform:/plugin/RCPTest" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>
<addons xmi:id="_KdFcyAlbEee-eMrs46logg" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributorURI="platform:/plugin/RCPTest" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
<addons xmi:id="_KdFcyQlbEee-eMrs46logg" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributorURI="platform:/plugin/RCPTest" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
</application:Application>
The application model extended by adding a new menu entry:
<?xml version="1.0" encoding="UTF-8"?>
<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_6wlLcMgZEeSyMNYR5xypkQ" elementId="RCPTest.application" bindingContexts="_6wlLecgZEeSyMNYR5xypkQ">
<children xsi:type="basic:TrimmedWindow" xmi:id="_6wlLccgZEeSyMNYR5xypkQ" elementId="RCPTest.window.main" label="Eclipse 4 RCP Application" width="500" height="400">
<children xsi:type="advanced:PerspectiveStack" xmi:id="_6wlLkMgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.ide.perspectivestack">
<children xsi:type="advanced:Perspective" xmi:id="_6wlLkcgZEeSyMNYR5xypkQ" elementId="RCPTest.perspective.sample">
<children xsi:type="basic:PartSashContainer" xmi:id="_6wlLksgZEeSyMNYR5xypkQ" elementId="RCPTest.partsashcontainer.sample">
<children xsi:type="basic:PartStack" xmi:id="_6wlLk8gZEeSyMNYR5xypkQ" elementId="RCPTest.partstack.sample">
<children xsi:type="basic:Part" xmi:id="_6wlLlMgZEeSyMNYR5xypkQ" elementId="RCPTest.part.sample" contributionURI="bundleclass://RCPTest/rcptest.parts.SamplePart" label="Sample Part"/>
</children>
</children>
</children>
</children>
<mainMenu xmi:id="_6wlLicgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.main.menu">
<children xsi:type="menu:Menu" xmi:id="_6wlLisgZEeSyMNYR5xypkQ" elementId="file" label="File">
<children xsi:type="menu:HandledMenuItem" xmi:id="_rocOUAlbEeeFFeCZvXOsLw" elementId="rcptest.handledmenuitem.test" label="Test" command="_oTNX4AlbEeeFFeCZvXOsLw"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLjcgZEeSyMNYR5xypkQ" elementId="RCPTest.handleditem.quit" label="Quit" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
</children>
<children xsi:type="menu:Menu" xmi:id="_6wlLjsgZEeSyMNYR5xypkQ" elementId="help" label="Help"/>
</mainMenu>
</children>
<handlers xmi:id="_6wlLfcgZEeSyMNYR5xypkQ" elementId="rcptest.handler.quitCommand" contributionURI="bundleclass://RCPTest/rcptest.handlers.QuitHandler" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
<handlers xmi:id="_pjrhQAlbEeeFFeCZvXOsLw" elementId="rcptest.handler.test" contributionURI="bundleclass://RCPTest/rcptest.handlers.TestHandler" command="_oTNX4AlbEeeFFeCZvXOsLw"/>
<bindingTables xmi:id="_6wlLfsgZEeSyMNYR5xypkQ" elementId="RCPTest.bindingtable" bindingContext="_6wlLecgZEeSyMNYR5xypkQ">
<bindings xmi:id="_6wlLf8gZEeSyMNYR5xypkQ" elementId="RCPTest.keybinding.m1q" keySequence="M1+Q" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
</bindingTables>
<rootContext xmi:id="_6wlLecgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
<children xmi:id="_6wlLesgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.window" name="In Windows"/>
<children xmi:id="_6wlLe8gZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
</rootContext>
<commands xmi:id="_6wlLfMgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.file.exit" commandName="quitCommand"/>
<commands xmi:id="_oTNX4AlbEeeFFeCZvXOsLw" elementId="rcptest.command.test" commandName="test"/>
<addons xmi:id="_6wlLcsgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
<addons xmi:id="_6wlLc8gZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
<addons xmi:id="_6wlLdMgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
<addons xmi:id="_6wlLdcgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
<addons xmi:id="_6wlLdsgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.handler.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>
<addons xmi:id="_6wlLd8gZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
<addons xmi:id="_6wlLeMgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
</application:Application>
That's how the menu looks when the saved "workbench.xmi" is loaded:
And this is the menu when I first delete "workbench.xmi" or any startup after that:
If you just want the position and size saved you could use -clearPersistedState and save the position and size elsewhere.
You can set the size of the main window from the saved data in your LifeCycle class. The #ProcessAdditions method seems to be the earliest you can do this. Something like:
#ProcessAdditions
public void processAdditions(MApplication app, EModelService modelService)
{
MWindow window = (MWindow)modelService.find("main window id", app);
window.setX(saved value);
window.setY(saved value);
window.setWidth(saved value);
window.setHeight(saved value);
}
I am currently working on a project that requires transforming one model to another model using qvto. The source model is state machine that is represented in tabular form. The target model is also statemachine that has nodes and edges. The source model has only domain meta-model, but the target model has both domain and notation meta-models. The notation meta-model is http://www.eclipse.org/gmf/runtime/1.0.2/notation. I transformed from source domain model to target domain model, but my target model has no notation model. What I wanted to do is to generate notation model from target model and serialize it to the same xmi file. I read documentation of EMF and GMF, and tried to do it but I couldn't. I also googled, that didn't help either. The header of the target model mentions both domain and notation meta-models. For clarity, look at the xmi file below.
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.target.com/EMF/1/SimpleStatechart" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation">
<n1:statemachine xmi:id="_QvItUPMjEeS6mNxtIz5_4Q" s_name="Sensor">
<transitions xmi:type="n1:Transition" xmi:id="_RzqFYPMjEeS6mNxtIz5_4Q" body="" from="_RNakwPMjEeS6mNxtIz5_4Q" to="_RzcqAPMjEeS6mNxtIz5_4Q"/>
<transitions xmi:type="n1:Transition" xmi:id="_BJd-wAeuEeaf_-AtraPkfA" body="in_ISensor:Activate/out_ISensor.send(sensorReply());" from="_RzcqAPMjEeS6mNxtIz5_4Q" to="_7UnrQAetEeaf_-AtraPkfA"/>
<transitions xmi:type="n1:Transition" xmi:id="_DaWcQAeuEeaf_-AtraPkfA" body="in_InternalOptional:DetectedMovement/out_ISensor_NI.send(detectedMovement());" from="_7UnrQAetEeaf_-AtraPkfA" to="_7Q_IcAetEeaf_-AtraPkfA"/>
<transitions xmi:type="n1:Transition" xmi:id="_EWLLUAeuEeaf_-AtraPkfA" body="in_ISensor:Deactivate/out_ISensor.send(sensorReply());" from="_7UnrQAetEeaf_-AtraPkfA" to="_7OB7EAetEeaf_-AtraPkfA"/>
<transitions xmi:type="n1:Transition" xmi:id="_F9AmQAeuEeaf_-AtraPkfA" body="in_ISensor:Deactivate/out_ISensor.send(sensorReply());" from="_7Q_IcAetEeaf_-AtraPkfA" to="_7OB7EAetEeaf_-AtraPkfA"/>
<transitions xmi:type="n1:Transition" xmi:id="_GXe7wAeuEeaf_-AtraPkfA" body="in_InternalInevitable:Deactivated/
out_ISensor_NI.send(deactivated());" from="_7OB7EAetEeaf_-AtraPkfA" to="_RzcqAPMjEeS6mNxtIz5_4Q"/>
<states xmi:type="n1:InitialState" xmi:id="_RNakwPMjEeS6mNxtIz5_4Q" name="InitialState"/>
<states xmi:type="n1:BasicState" xmi:id="_RzcqAPMjEeS6mNxtIz5_4Q" name="Deactivated"/>
<states xmi:type="n1:BasicState" xmi:id="_7OB7EAetEeaf_-AtraPkfA" name="Deactivating" internal=""/>
<states xmi:type="n1:BasicState" xmi:id="_7Q_IcAetEeaf_-AtraPkfA" name="Triggered"/>
<states xmi:type="n1:BasicState" xmi:id="_7UnrQAetEeaf_-AtraPkfA" name="Activated"/>
</n1:statemachine>
<notation:Diagram xmi:id="_QvItUfMjEeS6mNxtIz5_4Q" type="ConformiqStateChart" element="_QvItUPMjEeS6mNxtIz5_4Q" measurementUnit="Pixel">
<children xmi:type="notation:Node" xmi:id="_RNwjAPMjEeS6mNxtIz5_4Q" type="2007" element="_RNakwPMjEeS6mNxtIz5_4Q">
<children xmi:type="notation:DecorationNode" xmi:id="_RNxKEPMjEeS6mNxtIz5_4Q" type="5022"/>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_RNwjAfMjEeS6mNxtIz5_4Q"/>
<styles xmi:type="notation:FontStyle" xmi:id="_YRV_NegaEeSg-pTEoxDT6g" fontName="Segoe UI"/>
<styles xmi:type="notation:LineStyle" xmi:id="_RNwjA_MjEeS6mNxtIz5_4Q" lineColor="0"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_YRWmQegaEeSg-pTEoxDT6g" x="496" y="57"/>
</children>
<children xmi:type="notation:Node" xmi:id="_RzhigPMjEeS6mNxtIz5_4Q" type="2012" element="_RzcqAPMjEeS6mNxtIz5_4Q">
<children xmi:type="notation:DecorationNode" xmi:id="_RziJkvMjEeS6mNxtIz5_4Q" type="5017"/>
<children xmi:type="notation:DecorationNode" xmi:id="_RziJk_MjEeS6mNxtIz5_4Q" type="5018"/>
<children xmi:type="notation:DecorationNode" xmi:id="_RziJlPMjEeS6mNxtIz5_4Q" type="5019"/>
<children xmi:type="notation:DecorationNode" xmi:id="_RziwoPMjEeS6mNxtIz5_4Q" type="7001">
<styles xmi:type="notation:SortingStyle" xmi:id="_RziwofMjEeS6mNxtIz5_4Q"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_RziwovMjEeS6mNxtIz5_4Q"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_RzhigfMjEeS6mNxtIz5_4Q"/>
<styles xmi:type="notation:FontStyle" xmi:id="_YRXNUOgaEeSg-pTEoxDT6g" fontName="Segoe UI"/>
<styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_RziJkPMjEeS6mNxtIz5_4Q"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_YRXNUugaEeSg-pTEoxDT6g" x="420" y="192" width="225" height="109"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_TAN_IPMjEeS6mNxtIz5_4Q" type="Note" fontName="Ubuntu" fontHeight="11" description="Describe the behavior of the
Sensor in this state machine." fillColor="0" transparency="0" lineColor="0" lineWidth="1">
<children xmi:type="notation:BasicDecorationNode" xmi:id="_TARCcPMjEeS6mNxtIz5_4Q" type="DiagramName">
<element xsi:nil="true"/>
</children>
<children xmi:type="notation:BasicDecorationNode" xmi:id="_TARpgPMjEeS6mNxtIz5_4Q" type="Description">
<element xsi:nil="true"/>
</children>
<styles xmi:type="notation:TextStyle" xmi:id="_TAN_IfMjEeS6mNxtIz5_4Q"/>
<styles xmi:type="notation:LineTypeStyle" xmi:id="_TAOmMPMjEeS6mNxtIz5_4Q"/>
<element xsi:nil="true"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_YRYbcOgaEeSg-pTEoxDT6g" x="708" y="36" width="293" height="98"/>
</children>
<children xmi:type="notation:Node" xmi:id="_7OMTIAetEeaf_-AtraPkfA" type="2012" element="_7OB7EAetEeaf_-AtraPkfA">
<children xmi:type="notation:DecorationNode" xmi:id="_7OOIUAetEeaf_-AtraPkfA" type="5017"/>
<children xmi:type="notation:DecorationNode" xmi:id="_7OOIUQetEeaf_-AtraPkfA" type="5018"/>
<children xmi:type="notation:DecorationNode" xmi:id="_7OOIUgetEeaf_-AtraPkfA" type="5019"/>
<children xmi:type="notation:DecorationNode" xmi:id="_7OOIUwetEeaf_-AtraPkfA" type="7001">
<styles xmi:type="notation:SortingStyle" xmi:id="_7OOIVAetEeaf_-AtraPkfA"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_7OOIVQetEeaf_-AtraPkfA"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_7OMTIQetEeaf_-AtraPkfA"/>
<styles xmi:type="notation:FontStyle" xmi:id="_7OMTIgetEeaf_-AtraPkfA" fontName="Segoe UI"/>
<styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_7OMTIwetEeaf_-AtraPkfA"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7OMTJAetEeaf_-AtraPkfA" x="552" y="756" width="225" height="109"/>
</children>
<children xmi:type="notation:Node" xmi:id="_7RAWkAetEeaf_-AtraPkfA" type="2012" element="_7Q_IcAetEeaf_-AtraPkfA">
<children xmi:type="notation:DecorationNode" xmi:id="_7RA9oAetEeaf_-AtraPkfA" type="5017"/>
<children xmi:type="notation:DecorationNode" xmi:id="_7RA9oQetEeaf_-AtraPkfA" type="5018"/>
<children xmi:type="notation:DecorationNode" xmi:id="_7RA9ogetEeaf_-AtraPkfA" type="5019"/>
<children xmi:type="notation:DecorationNode" xmi:id="_7RA9owetEeaf_-AtraPkfA" type="7001">
<styles xmi:type="notation:SortingStyle" xmi:id="_7RA9pAetEeaf_-AtraPkfA"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_7RA9pQetEeaf_-AtraPkfA"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_7RAWkQetEeaf_-AtraPkfA"/>
<styles xmi:type="notation:FontStyle" xmi:id="_7RAWkgetEeaf_-AtraPkfA" fontName="Segoe UI"/>
<styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_7RAWkwetEeaf_-AtraPkfA"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7RAWlAetEeaf_-AtraPkfA" x="324" y="588" width="225" height="109"/>
</children>
<children xmi:type="notation:Node" xmi:id="_7Uo5YAetEeaf_-AtraPkfA" type="2012" element="_7UnrQAetEeaf_-AtraPkfA">
<children xmi:type="notation:DecorationNode" xmi:id="_7Uo5ZQetEeaf_-AtraPkfA" type="5017"/>
<children xmi:type="notation:DecorationNode" xmi:id="_7UpgcAetEeaf_-AtraPkfA" type="5018"/>
<children xmi:type="notation:DecorationNode" xmi:id="_7UpgcQetEeaf_-AtraPkfA" type="5019"/>
<children xmi:type="notation:DecorationNode" xmi:id="_7UpgcgetEeaf_-AtraPkfA" type="7001">
<styles xmi:type="notation:SortingStyle" xmi:id="_7UpgcwetEeaf_-AtraPkfA"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_7UpgdAetEeaf_-AtraPkfA"/>
</children>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_7Uo5YQetEeaf_-AtraPkfA"/>
<styles xmi:type="notation:FontStyle" xmi:id="_7Uo5YgetEeaf_-AtraPkfA" fontName="Segoe UI"/>
<styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_7Uo5YwetEeaf_-AtraPkfA"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Uo5ZAetEeaf_-AtraPkfA" x="264" y="384" width="225" height="109"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_QvItUvMjEeS6mNxtIz5_4Q"/>
<edges xmi:type="notation:Edge" xmi:id="_Rzr6kPMjEeS6mNxtIz5_4Q" type="4002" element="_RzqFYPMjEeS6mNxtIz5_4Q" source="_RNwjAPMjEeS6mNxtIz5_4Q" target="_RzhigPMjEeS6mNxtIz5_4Q">
<children xmi:type="notation:DecorationNode" xmi:id="_RzshoPMjEeS6mNxtIz5_4Q" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_RzshofMjEeS6mNxtIz5_4Q" x="19" y="-12"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_X39ZA9krEeSNSYp_vqikKg" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_YRX0YugaEeSg-pTEoxDT6g" fontName="Segoe UI"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YRX0Y-gaEeSg-pTEoxDT6g" points="[0, 0, 0, -94]$[0, 94, 0, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_53a-Yfi3EeSDRc6--mGWrg" id="(0.48,1.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YRX0ZOgaEeSg-pTEoxDT6g" id="(0.5,0.0)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_BJkFYAeuEeaf_-AtraPkfA" type="4002" element="_BJd-wAeuEeaf_-AtraPkfA" source="_RzhigPMjEeS6mNxtIz5_4Q" target="_7Uo5YAetEeaf_-AtraPkfA">
<children xmi:type="notation:DecorationNode" xmi:id="_BJkscAeuEeaf_-AtraPkfA" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_BJkscQeuEeaf_-AtraPkfA" x="-3" y="24"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_BJkFYQeuEeaf_-AtraPkfA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_BJkFYgeuEeaf_-AtraPkfA" fontName="Segoe UI"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BJkFYweuEeaf_-AtraPkfA" points="[-39, 35, 117, -137]$[-159, 118, -3, -54]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BJnIsAeuEeaf_-AtraPkfA" id="(0.17777777777777778,0.6788990825688074)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_DaXDUAeuEeaf_-AtraPkfA" type="4002" element="_DaWcQAeuEeaf_-AtraPkfA" source="_7Uo5YAetEeaf_-AtraPkfA" target="_7RAWkAetEeaf_-AtraPkfA">
<children xmi:type="notation:DecorationNode" xmi:id="_DaXqYAeuEeaf_-AtraPkfA" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_DaXqYQeuEeaf_-AtraPkfA" x="29" y="6"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_DaXDUQeuEeaf_-AtraPkfA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_DaXDUgeuEeaf_-AtraPkfA" fontName="Segoe UI"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DaXDUweuEeaf_-AtraPkfA" points="[4, 22, 17, -161]$[65, 129, 78, -54]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DaY4gAeuEeaf_-AtraPkfA" id="(0.5555555555555556,0.7981651376146789)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_EWLyYAeuEeaf_-AtraPkfA" type="4002" element="_EWLLUAeuEeaf_-AtraPkfA" source="_7Uo5YAetEeaf_-AtraPkfA" target="_7OMTIAetEeaf_-AtraPkfA">
<children xmi:type="notation:DecorationNode" xmi:id="_EWLyZAeuEeaf_-AtraPkfA" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_EWLyZQeuEeaf_-AtraPkfA" y="40"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_EWLyYQeuEeaf_-AtraPkfA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_EWLyYgeuEeaf_-AtraPkfA" fontName="Segoe UI"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EWLyYweuEeaf_-AtraPkfA" points="[27, 27, -323, -315]$[335, 351, -15, 9]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EWNnkAeuEeaf_-AtraPkfA" id="(0.10666666666666667,0.7522935779816514)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EWOOoAeuEeaf_-AtraPkfA" id="(0.1688888888888889,0.9174311926605505)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_F9BNUAeuEeaf_-AtraPkfA" type="4002" element="_F9AmQAeuEeaf_-AtraPkfA" source="_7RAWkAetEeaf_-AtraPkfA" target="_7OMTIAetEeaf_-AtraPkfA">
<children xmi:type="notation:DecorationNode" xmi:id="_F9B0YAeuEeaf_-AtraPkfA" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_F9B0YQeuEeaf_-AtraPkfA" y="40"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_F9BNUQeuEeaf_-AtraPkfA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_F9BNUgeuEeaf_-AtraPkfA" fontName="Segoe UI"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F9BNUweuEeaf_-AtraPkfA" points="[54, 21, -125, -49]$[165, 67, -14, -3]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F9DpkAeuEeaf_-AtraPkfA" id="(0.76,0.6605504587155964)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F9DpkQeuEeaf_-AtraPkfA" id="(0.06222222222222222,0.3119266055045872)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_GXfi0AeuEeaf_-AtraPkfA" type="4002" element="_GXe7wAeuEeaf_-AtraPkfA" source="_7OMTIAetEeaf_-AtraPkfA" target="_RzhigPMjEeS6mNxtIz5_4Q">
<children xmi:type="notation:DecorationNode" xmi:id="_GXfi1AeuEeaf_-AtraPkfA" type="6002">
<layoutConstraint xmi:type="notation:Location" xmi:id="_GXfi1QeuEeaf_-AtraPkfA" y="40"/>
</children>
<styles xmi:type="notation:RoutingStyle" xmi:id="_GXfi0QeuEeaf_-AtraPkfA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_GXfi0geuEeaf_-AtraPkfA" fontName="Segoe UI"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GXfi0weuEeaf_-AtraPkfA" points="[-10, -54, 76, 427]$[-74, -461, 12, 20]"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GXhYAAeuEeaf_-AtraPkfA" id="(0.5955555555555555,0.8165137614678899)"/>
</edges>
</notation:Diagram>
</xmi:XMI>
From the transformation, I have the top part of the target model until n1:statemachine, which is the domain model. From n1:statemachine, on wards the graphical representation of the upper part continues which I want to generate.
How can I generate the notation model for the domain model that I get from model transformation?
I am unfamiliar with the EMF resource handling of QVT, but I try to do my best to describe what needs to be done on an EMF- and GMF level.
Technically, the notation model is the same kind of EMF model than the domain model you already successfully generate, just it conforms to another metamodel called http://www.eclipse.org/gmf/runtime/1.0.2/notation and available from the corresponding GMF plug-in org.eclipse.gmf.runtime.notation.
You have to make your transformation aware of this metamodel, then you can generate its instances similarly to the original model. The transformation needs to connect the notation model with the target domain model elements based on the definition of the notation model; but that is the same kind of crossreference handling your domain model already supports.
Finally, in order for you to have both the target and the notation model serialized into the same xmi file, you have to add both to the same EMF resource, something along the following:
EObject targetDomain = ...; //root element of the target domain model
EObject targetNotation = ...; //root element of the target notation model
EList<EObject> contents = targetResource.getContents();
contents.add(targetDomain);
contents.add(targetNotation);
These steps together should allow you to generate the notation model accordingly.
I have an eclipse 4 application and i'm having issues using custom icons for perspectives and other contributions.
In the .e4xmi application editor the icon shows as a red box. It doesn't show up in the running application either.
My icon uri is platform:/plugin/org.jim.g3.iec61131.il.e4.product/icons/jimElectric_16.png and the icon is 16x16 and opens correctly in an image viewer.
I can use the icons okay in an e3.x application and set up perspectives in that way instead. I would like to use e4 though.
If I use another icon uri from an eclipse icon it works. e.g. platform:/plugin/org.eclipse.ui.navigator.resources//icons/full/eview16/resource_persp.gif
So I guess there is something I need to do to the icon URI, icon itself or project setup? Thanks for any help.
The full Application.e4xmi is shown below.
<?xml version="1.0" encoding="ASCII"?>
<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_VnmacNSzEeGBn6dQ9VPexA" elementId="org.jim.g3.language.il.e4.product.application" bindingContexts="_VnmacdSzEeGBn6dQ9VPexA">
<children xsi:type="basic:TrimmedWindow" xmi:id="_Vnmah9SzEeGBn6dQ9VPexA" label="My Main Window" iconURI="" width="800" height="600">
<children xsi:type="advanced:PerspectiveStack" xmi:id="_Vnmaj9SzEeGBn6dQ9VPexA" selectedElement="_VnmakNSzEeGBn6dQ9VPexA">
<children xsi:type="advanced:Perspective" xmi:id="_VnmakNSzEeGBn6dQ9VPexA" elementId="test.rcp.perspective" label="Intro" iconURI="platform:/plugin/org.jim.g3.language.il.e4.product/icons/jimElectric_16.png">
<tags>Perspective</tags>
<tags>categoryTag:General</tags>
<children xsi:type="basic:Part" xmi:id="_WoxEsCr-EeWMqfhe61ykdA" elementId="org.jim.g3.language.il.e4.product.introview" contributionURI="bundleclass://org.jim.g3.language.il.e4.product/org.jim.g3.language.il.e4.product.IntroView" label="Intro" iconURI=""/>
</children>
</children>
<sharedElements xsi:type="advanced:Area" xmi:id="_Hmg4kNSjEeGwXp2p959l3w" elementId="org.eclipse.ui.editorss">
<children xsi:type="basic:PartStack" xmi:id="_HmhfoNSjEeGwXp2p959l3w" elementId="org.eclipse.e4.primaryDataStack">
<tags>newtablook</tags>
<tags>org.eclipse.e4.primaryDataStack</tags>
<tags>EditorStack</tags>
</children>
</sharedElements>
<sharedElements xsi:type="basic:Part" xmi:id="_WqRGcNS1EeGBn6dQ9VPexA" elementId="org.eclipse.ui.views.PropertySheet" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Properties" iconURI="platform:/plugin/org.eclipse.ui.views//icons/full/eview16/prop_ps.gif" closeable="true">
<tags>View</tags>
<tags>categoryTag:General</tags>
<menus xmi:id="_HngXENSjEeGwXp2p959l3w" elementId="org.eclipse.ui.views.PropertySheet">
<tags>ViewMenu</tags>
<tags>menuContribution:menu</tags>
</menus>
<toolbar xmi:id="_Hng-INSjEeGwXp2p959l3w" elementId="org.eclipse.ui.views.PropertySheet"/>
</sharedElements>
<sharedElements xsi:type="basic:Part" xmi:id="_sS7Q8NS1EeGBn6dQ9VPexA" elementId="org.eclipse.ui.navigator.ProjectExplorer" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Project Explorer" iconURI="platform:/plugin/org.eclipse.ui.navigator.resources//icons/full/eview16/resource_persp.gif">
<tags>View</tags>
<tags>categoryTag:General</tags>
<menus xmi:id="_4UXAUNSmEeG-a6zBTyJ-wg" elementId="org.eclipse.ui.navigator.ProjectExplorer">
<tags>ViewMenu</tags>
<tags>menuContribution:menu</tags>
</menus>
<menus xsi:type="menu:PopupMenu" xmi:id="_4VpZwNSmEeG-a6zBTyJ-wg" elementId="org.eclipse.ui.navigator.ProjectExplorer#PopupMenu">
<tags>menuContribution:popup</tags>
<tags>popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu</tags>
</menus>
<toolbar xmi:id="_4UXAUdSmEeG-a6zBTyJ-wg" elementId="org.eclipse.ui.navigator.ProjectExplorer"/>
</sharedElements>
<trimBars xmi:id="_VOV6ANTAEeGTY-uOtVc6Mg" elementId="org.eclipse.ui.main.toolbar"/>
<trimBars xmi:id="_VP1HwNTAEeGTY-uOtVc6Mg" elementId="org.eclipse.ui.trim.status" side="Bottom"/>
</children>
<bindingTables xmi:id="_VnmafNSzEeGBn6dQ9VPexA" bindingContext="_VnmacdSzEeGBn6dQ9VPexA"/>
<rootContext xmi:id="_VnmacdSzEeGBn6dQ9VPexA" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
<children xmi:id="_VnmactSzEeGBn6dQ9VPexA" elementId="org.eclipse.ui.contexts.window" name="In Windows"/>
<children xmi:id="_Vnmac9SzEeGBn6dQ9VPexA" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
</rootContext>
<descriptors xmi:id="_9E9jYNS4EeGBn6dQ9VPexA" elementId="org.eclipse.ui.navigator.ProjectExplorer" label="Project Explorer" iconURI="platform:/plugin/org.eclipse.ui.navigator.resources//icons/full/eview16/resource_persp.gif" category="org.eclipse.e4.primaryNavigationStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
<tags>View</tags>
<tags>categoryTag:General</tags>
</descriptors>
<descriptors xmi:id="_W6yT4NSjEeGgKvWHVYtRxQ" elementId="org.eclipse.ui.console.ConsoleView" label="Console" iconURI="platform:/plugin/org.eclipse.ui.console//icons/full/cview16/console_view.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
<tags>View</tags>
<tags>categoryTag:General</tags>
</descriptors>
<descriptors xmi:id="_W6ziANSjEeGgKvWHVYtRxQ" elementId="org.eclipse.ui.views.ProgressView" label="Progress" iconURI="platform:/plugin/org.eclipse.ui.ide//icons/full/eview16/pview.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
<tags>View</tags>
<tags>categoryTag:General</tags>
</descriptors>
<descriptors xmi:id="_W63zcdSjEeGgKvWHVYtRxQ" elementId="org.eclipse.ui.views.PropertySheet" label="Properties" iconURI="platform:/plugin/org.eclipse.ui.views//icons/full/eview16/prop_ps.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
<tags>View</tags>
<tags>categoryTag:General</tags>
</descriptors>
<toolBarContributions xmi:id="_AEBdYCn2EeWFOq2j27wvQQ" elementId="org.jim.g3.language.il.e4.product.toolbarcontribution.0">
<children xsi:type="menu:ToolControl" xmi:id="_FhkrMCn2EeWFOq2j27wvQQ" elementId="org.jim.g3.language.il.e4.product.toolcontrol.0" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench.addons.swt/org. eclipse.e4.ui.workbench.addons.perspectiveswitcher.PerspectiveSwitcher"/>
</toolBarContributions>
<addons xmi:id="_VnmadNSzEeGBn6dQ9VPexA" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
<addons xmi:id="_VnmaddSzEeGBn6dQ9VPexA" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
<addons xmi:id="_VnmadtSzEeGBn6dQ9VPexA" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
<addons xmi:id="_Vnmad9SzEeGBn6dQ9VPexA" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
<addons xmi:id="_VnmaeNSzEeGBn6dQ9VPexA" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
<addons xmi:id="_VnmaedSzEeGBn6dQ9VPexA" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
</application:Application>
I am facing with troubles to migrate from 3.X Eclipse to Eclipse 4.X.
I want to protect the UI, so that User can only see things which they are allowed to. In the old application I have use a extension point org.eclipse.core.expressions.propertyTesters in combination with a org.eclipse.ui.activities and a org.eclipse.core.expressions.definitions. Here I have a link which give you a better background of the topic.http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fworkbench_advext_activities.htm
But now I want to go the same way in e4, but I don't get them to run. The test-methode inside the propertyTester is never called. It is possible to use the same mechanism to protect the UI in e4, and when yes, could you give me some tips?
Edit:
My example Test-method:
package e4.prototype;
import org.eclipse.core.expressions.PropertyTester;
import org.eclipse.e4.ui.model.application.ui.MUIElement;
public class TestPropertyTester extends PropertyTester {
#Override
public boolean test(final Object receiver, final String property, final Object[] args, final Object expectedValue) {
System.out.println("Start");
if (receiver instanceof MUIElement) {
MUIElement element = (MUIElement) receiver;
return element.getElementId().equals(expectedValue);
}
return false;
}
}
plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<extension id="product" point="org.eclipse.core.runtime.products">
<product name="e4.prototype" application="org.eclipse.e4.ui.workbench.swt.E4Application">
<property name="applicationCSS" value="platform:/plugin/e4.prototype/css/default.css" />
<property name="appName" value="e4.prototype" />
</product>
</extension>
<extension
point="org.eclipse.ui.startup">
<startup
class="e4.prototype.E4LifeCycle">
</startup>
</extension>
<extension
point="org.eclipse.core.expressions.propertyTesters">
<propertyTester
class="e4.prototype/e4.prototype.TestPropertyTester"
id="test.id"
namespace="e4.prototype"
properties="TestPropertyTester"
type="org.eclipse.e4.ui.model.application.ui.MUIElement"/>
</extension>
<extension
point="org.eclipse.core.expressions.definitions">
<definition
id="e4.prototype.part.sonderpart.isAllowed">
<test
forcePluginActivation="true"
property="name.space.partId"
value="e4.prototype.part.sonderpart">
</test>
</definition>
<definition
id="e4.prototype.saveMenu.isAllowed">
<test
forcePluginActivation="true"
property="e4.prototype.TestPropertyTester">
</test>
</definition>
<definition
id="e4.prototype.sicherheitPart.isAllowed">
<test
forcePluginActivation="true"
property="e4.prototype.TestPropertyTester">
</test>
</definition>
<definition
id="e4.prototype.mainmenu.isAllowed">
<test
forcePluginActivation="true"
property="e4.prototype.TestPropertyTester">
</test>
</definition>
<definition
id="e4.prototype.quit.isAllowed">
<test
forcePluginActivation="true"
property="e4.prototype.TestPropertyTester">
</test>
</definition>
</extension>
</plugin>
Application.e4xmi
<?xml version="1.0" encoding="UTF-8"?>
<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmlns:ui="http://www.eclipse.org/ui/2010/UIModel/application/ui" xmi:id="_To7nkEVhEeSxjfMveZwvQg" elementId="org.eclipse.e4.ide.application" bindingContexts="_To8OqEVhEeSxjfMveZwvQg">
<children xsi:type="basic:TrimmedWindow" xmi:id="_To8OoEVhEeSxjfMveZwvQg" label="e4.prototype" width="500" height="400">
<children xsi:type="advanced:PerspectiveStack" xmi:id="_To8Ov0VhEeSxjfMveZwvQg">
<children xsi:type="advanced:Perspective" xmi:id="_To8OwEVhEeSxjfMveZwvQg" elementId="id.standardperspektive" label="Standardperspektive" iconURI="platform:/plugin/e4.prototype/icons/star.png">
<children xsi:type="basic:PartSashContainer" xmi:id="_To81sEVhEeSxjfMveZwvQg">
<children xsi:type="basic:PartStack" xmi:id="_To81sUVhEeSxjfMveZwvQg">
<children xsi:type="basic:Part" xmi:id="_To81skVhEeSxjfMveZwvQg" elementId="e4.prototype.part.samplepart" contributionURI="bundleclass://e4.prototype/e4.prototype.parts.SamplePart" label="Sample Part"/>
<children xsi:type="basic:Part" xmi:id="_EVLKEJfpEeSi9rx2U_7VwA" elementId="e4.prototype.part.sicherheit" toBeRendered="false" contributionURI="bundleclass://e4.prototype/e4.prototype.parts.SicherheitPart" label="Sicherheitspart"/>
</children>
</children>
</children>
<children xsi:type="advanced:Perspective" xmi:id="_7EIEgGM6EeSQG8PUWitY6g" elementId="e4.prototype.perspective.sonderperspektive" label="Sonderperspektive" iconURI="platform:/plugin/e4.prototype/icons/icon.gif">
<children xsi:type="basic:PartSashContainer" xmi:id="_G4C-gGM7EeSQG8PUWitY6g" elementId="e4.prototype.partsashcontainer.0">
<children xsi:type="basic:PartStack" xmi:id="_HPiRcGM7EeSQG8PUWitY6g" elementId="e4.prototype.partstack.0">
<children xsi:type="basic:Part" xmi:id="_HnyZYGM7EeSQG8PUWitY6g" elementId="e4.prototype.part.sonderpart" contributionURI="bundleclass://e4.prototype/e4.prototype.parts.SonderPart" label="Sonderpart"/>
</children>
</children>
</children>
</children>
<mainMenu xmi:id="_To8OuEVhEeSxjfMveZwvQg" elementId="e4.prototype.mainmenu">
<children xsi:type="menu:Menu" xmi:id="_To8OuUVhEeSxjfMveZwvQg" elementId="menuFile" label="File">
<visibleWhen xsi:type="ui:CoreExpression" xmi:id="_TVs7QJfvEeSi9rx2U_7VwA" coreExpressionId="e4.prototype.mainmenu.isAllowed"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_To8OukVhEeSxjfMveZwvQg" elementId="open" label="Open" iconURI="platform:/plugin/e4.prototype/icons/sample.png" command="_To8Or0VhEeSxjfMveZwvQg"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_To8Ou0VhEeSxjfMveZwvQg" elementId="save" label="Save" iconURI="platform:/plugin/e4.prototype/icons/save_edit.png" command="_To8OskVhEeSxjfMveZwvQg">
<visibleWhen xsi:type="ui:CoreExpression" xmi:id="_mPIjkJfoEeSi9rx2U_7VwA" coreExpressionId="e4.prototype.saveMenu.isAllowed"/>
</children>
<children xsi:type="menu:HandledMenuItem" xmi:id="_To8OvEVhEeSxjfMveZwvQg" elementId="e4.prototype.quit" label="Quit" command="_To8Oq0VhEeSxjfMveZwvQg">
<visibleWhen xsi:type="ui:CoreExpression" xmi:id="_os8loJfvEeSi9rx2U_7VwA" coreExpressionId="e4.prototype.quit.isAllowed"/>
</children>
<children xsi:type="menu:HandledMenuItem" xmi:id="_c4BWcGMzEeSQG8PUWitY6g" elementId="e4.prototype.handledmenuitem.wizardOverview" label="Wizard Overview" command="_gctlMGMzEeSQG8PUWitY6g">
<visibleWhen xsi:type="ui:CoreExpression" xmi:id="_lYatIJcbEeSasfgjZErgeg" coreExpressionId="e4.prototype.beispiel"/>
</children>
</children>
<children xsi:type="menu:Menu" xmi:id="_To8OvUVhEeSxjfMveZwvQg" label="Help">
<children xsi:type="menu:HandledMenuItem" xmi:id="_To8OvkVhEeSxjfMveZwvQg" elementId="about" label="About" command="_To8OtUVhEeSxjfMveZwvQg"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_qBqJYGM3EeSQG8PUWitY6g" elementId="e4.prototype.handledmenuitem.help" label="Help" command="_s37L4GM3EeSQG8PUWitY6g"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_b_f9YJZUEeSFv-fBot4czg" elementId="e4.prototype.handledmenuitem.info" label="Info" command="_gZdnQJZUEeSFv-fBot4czg"/>
</children>
<children xsi:type="menu:Menu" xmi:id="_PrdosJfwEeSi9rx2U_7VwA" elementId="e4.prototype.menu.misc" label="Sonstiges">
<children xsi:type="menu:HandledMenuItem" xmi:id="_YuGt4JfwEeSi9rx2U_7VwA" elementId="e4.prototype.handledmenuitem.sichtbar" label="Sichtbar"/>
</children>
</mainMenu>
<trimBars xmi:id="_To81s0VhEeSxjfMveZwvQg">
<children xsi:type="menu:ToolBar" xmi:id="_To81tEVhEeSxjfMveZwvQg" elementId="toolbar:org.eclipse.ui.main.toolbar">
<children xsi:type="menu:HandledToolItem" xmi:id="_To81tUVhEeSxjfMveZwvQg" iconURI="platform:/plugin/e4.prototype/icons/sample.png" command="_To8Or0VhEeSxjfMveZwvQg"/>
<children xsi:type="menu:HandledToolItem" xmi:id="_To81tkVhEeSxjfMveZwvQg" iconURI="platform:/plugin/e4.prototype/icons/save_edit.png" command="_To8OskVhEeSxjfMveZwvQg"/>
</children>
</trimBars>
<trimBars xmi:id="_LcGjEGM8EeSQG8PUWitY6g" elementId="e4.prototype.trimbar.0" side="Bottom">
<children xsi:type="menu:ToolControl" xmi:id="_e6PzQGM7EeSQG8PUWitY6g" elementId="e4.prototype.toolcontrol.0" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.perspectiveswitcher/org.eclipse.e4.ui.workbench.perspectiveswitcher.tools.PerspectiveSwitcherSwtTrim"/>
</trimBars>
</children>
<handlers xmi:id="_To8OrEVhEeSxjfMveZwvQg" elementId="e4.prototype.handler.quitCommand" contributionURI="bundleclass://e4.prototype/e4.prototype.handlers.QuitHandler" command="_To8Oq0VhEeSxjfMveZwvQg"/>
<handlers xmi:id="_To8OsEVhEeSxjfMveZwvQg" elementId="e4.prototype.handler.openCommand" contributionURI="bundleclass://e4.prototype/e4.prototype.handlers.OpenHandler" command="_To8Or0VhEeSxjfMveZwvQg"/>
<handlers xmi:id="_To8Os0VhEeSxjfMveZwvQg" elementId="e4.prototype.handler.saveCommand" contributionURI="bundleclass://e4.prototype/e4.prototype.handlers.SaveHandler" command="_To8OskVhEeSxjfMveZwvQg"/>
<handlers xmi:id="_To8OtkVhEeSxjfMveZwvQg" elementId="e4.prototype.handler.aboutCommand" contributionURI="bundleclass://e4.prototype/e4.prototype.handlers.AboutHandler" command="_To8OtUVhEeSxjfMveZwvQg"/>
<handlers xmi:id="_iwUmkGMzEeSQG8PUWitY6g" elementId="e4.prototype.handler.0" contributionURI="bundleclass://e4.prototype/e4.prototype.handlers.WizardOverviewHandler" command="_gctlMGMzEeSQG8PUWitY6g"/>
<handlers xmi:id="_usgu8GM3EeSQG8PUWitY6g" elementId="e4.prototype.handler.1" contributionURI="bundleclass://e4.prototype/e4.prototype.handlers.HelpHandler" command="_s37L4GM3EeSQG8PUWitY6g"/>
<handlers xmi:id="_qCtZcJZUEeSFv-fBot4czg" elementId="e4.prototype.handler.info" contributionURI="bundleclass://e4.prototype/e4.prototype.handlers.InfoHandler" command="_gZdnQJZUEeSFv-fBot4czg"/>
<bindingTables xmi:id="_To8OrUVhEeSxjfMveZwvQg" bindingContext="_To8OqEVhEeSxjfMveZwvQg">
<bindings xmi:id="_To8OrkVhEeSxjfMveZwvQg" keySequence="M1+Q" command="_To8Oq0VhEeSxjfMveZwvQg"/>
<bindings xmi:id="_To8OsUVhEeSxjfMveZwvQg" keySequence="M1+O" command="_To8Or0VhEeSxjfMveZwvQg"/>
<bindings xmi:id="_To8OtEVhEeSxjfMveZwvQg" keySequence="M1+S" command="_To8OskVhEeSxjfMveZwvQg"/>
<bindings xmi:id="_To8Ot0VhEeSxjfMveZwvQg" keySequence="M1+A" command="_To8OtUVhEeSxjfMveZwvQg"/>
</bindingTables>
<rootContext xmi:id="_To8OqEVhEeSxjfMveZwvQg" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
<children xmi:id="_To8OqUVhEeSxjfMveZwvQg" elementId="org.eclipse.ui.contexts.window" name="In Windows"/>
<children xmi:id="_To8OqkVhEeSxjfMveZwvQg" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
</rootContext>
<commands xmi:id="_To8Oq0VhEeSxjfMveZwvQg" elementId="org.eclipse.ui.file.exit" commandName="quitCommand"/>
<commands xmi:id="_To8Or0VhEeSxjfMveZwvQg" elementId="e4.prototype.open" commandName="openCommand"/>
<commands xmi:id="_To8OskVhEeSxjfMveZwvQg" elementId="org.eclipse.ui.file.save" commandName="saveCommand"/>
<commands xmi:id="_To8OtUVhEeSxjfMveZwvQg" elementId="org.eclipse.ui.help.aboutAction" commandName="aboutCommand"/>
<commands xmi:id="_gctlMGMzEeSQG8PUWitY6g" elementId="e4.prototype.command.wizardoverviewcommand" commandName="wizardOverviewCommand"/>
<commands xmi:id="_s37L4GM3EeSQG8PUWitY6g" elementId="e4.prototype.command.helpcommand" commandName="helpCommand"/>
<commands xmi:id="_gZdnQJZUEeSFv-fBot4czg" elementId="e4.prototype.command.infocommand" commandName="infoCommand"/>
<addons xmi:id="_To8OoUVhEeSxjfMveZwvQg" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
<addons xmi:id="_To8OokVhEeSxjfMveZwvQg" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
<addons xmi:id="_To8Oo0VhEeSxjfMveZwvQg" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
<addons xmi:id="_To8OpEVhEeSxjfMveZwvQg" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
<addons xmi:id="_To8OpUVhEeSxjfMveZwvQg" elementId="org.eclipse.e4.ui.workbench.handler.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>
<addons xmi:id="_To8OpkVhEeSxjfMveZwvQg" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
<addons xmi:id="_To8Op0VhEeSxjfMveZwvQg" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
</application:Application>
Your expression definitions do not specify a <with> element to define what you want to test. Without this the default is an empty list. However I cannot find a variable which contains the current element so I am not sure that you can use this approach.
An alternative is to use the <systemTest> element to test a value set using the Java System.setPropery call. A expression definition would be something like:
<definition
id="greg.music.admin">
<systemTest
property="greg.music.isShowAdmin"
value="true"/>
</definition>
and the Java code:
System.setProperty("greg.music.isShowAdmin", "true");
(taken from working code in one of my e4 apps)