Skip to main content



      Home
Home » Eclipse Projects » Eclipse 4 » Adding 3.x ViewParts to E4XMI
Adding 3.x ViewParts to E4XMI [message #881270] Mon, 04 June 2012 04:56 Go to next message
Eclipse UserFriend
Hi Everybody,

this is just a quick and possibly easy to answer question, unfortunately I wasn't able to find much about this.

Is there an easy and straight forward way to add 3.x ViewParts to the E4XMI application model, while using the compatibility layer (especially using the E4 Workbench Model Editor)?

Thank you very much for your help!
Re: Adding 3.x ViewParts to E4XMI [message #881274 is a reply to message #881270] Mon, 04 June 2012 05:09 Go to previous messageGo to next message
Eclipse UserFriend
You could try (but I never tried this myself) and take a look how the
XMI-Elements produced by the compat layer look like when a view is
opened through it.

An important fact is that e3 views are stored in the shared elements of
your window and then then linked into a perspective using Placeholders!

Tom

Am 04.06.12 10:56, schrieb Philipp Arnold:
> Hi Everybody,
>
> this is just a quick and possibly easy to answer question, unfortunately
> I wasn't able to find much about this.
>
> Is there an easy and straight forward way to add 3.x ViewParts to the
> E4XMI application model, while using the compatibility layer (especially
> using the E4 Workbench Model Editor)?
>
> Thank you very much for your help!
Re: Adding 3.x ViewParts to E4XMI [message #881287 is a reply to message #881270] Mon, 04 June 2012 05:34 Go to previous messageGo to next message
Eclipse UserFriend
Hi Thomas,

thanks for your help. That indeed did the trick.

I just created a new shared element, using "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" as class URI while referencing the unique ID of the 3.x ViewParts class. I then used that shared element as reference for a placeholder which I put in place of the original part and everything works as expected.

Again, thank you very much for your quick reply. I really appreciate it.

Cheers Philipp.
Re: Adding 3.x ViewParts to E4XMI [message #932491 is a reply to message #881287] Thu, 04 October 2012 02:33 Go to previous messageGo to next message
Eclipse UserFriend
Hi Philipp and Thomas !

I am writing an E4 RCP application in which I want to add regular Eclipse views such as Console and Error Log. I did the following in the Application.e4xmi file:

1 - Add a PartDescriptor to the Part Descriptors section with:
Id = org.eclipse.ui.console.ConsoleView
Label = Console
Class URI = bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView


2 - Add a Part to the Shared Elements section with the same parameters as above.

3 - Add a Placeholder in the Perspective section with:
Id = org.eclipse.ui.console.ConsoleView
Reference = Part - Console


Things seem to be declared like they appear in the model editor of Juno itself.
But, when I launch my application, I get the following error messages:
!ENTRY org.eclipse.e4.ui.workbench 4 0 2012-10-04 08:10:01.167
!MESSAGE Unable to create class 'org.eclipse.ui.internal.e4.compatibility.CompatibilityView' from bundle '229'
!STACK 0
org.eclipse.e4.core.di.InjectionException: Could not find satisfiable constructor in org.eclipse.ui.internal.e4.compatibility.CompatibilityView
	at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:327)


Can you help me to fix this, please ?

Georges
Re: Adding 3.x ViewParts to E4XMI [message #972206 is a reply to message #932491] Mon, 05 November 2012 07:45 Go to previous messageGo to next message
Eclipse UserFriend
Hi Georges,

I do have the same problem. I started by using the wizard to create a simple E4-Application example. I then tried to add an old Eclipse3 view to. Im failing with the same error messages you got. Do you have any solution to that issue?

Cheers

Phil
Re: Adding 3.x ViewParts to E4XMI [message #972343 is a reply to message #972206] Mon, 05 November 2012 09:55 Go to previous messageGo to next message
Eclipse UserFriend
Allright.... I found some answer by myself. Instead of creating an E4 RCP Application using an E3 RCP APplication it works. I just defined the E3 App to use the e4xmi model. Still I am not sure about the implications doing it this way :-/

Cheers

Phil
Re: Adding 3.x ViewParts to E4XMI [message #1732196 is a reply to message #972343] Fri, 13 May 2016 07:41 Go to previous messageGo to next message
Eclipse UserFriend
Quick questions, has anyone tried this using a fragment?

I'm trying to contribute a perspective as fragment to the 'org.eclipse.e4.legacy.ide.application'. I do get the empty perspective to show up. I also do get to add parts to it. However, I'm sort of stuck adding placeholders for things like the editor area and existing views. It doesn't even work for views contributed as e4 fragment as well. The trouble seems to be the references. The fragment model does not have any visibility to shared elements. Thus, I'm unable to select any reference in the e4 model editor.

Does anyone have any tips how to add the editor area and other views to such a contributed perspective? Is placeholders the right approach or should I add parts and area directly?
Re: Adding 3.x ViewParts to E4XMI [message #1732200 is a reply to message #1732196] Fri, 13 May 2016 07:48 Go to previous messageGo to next message
Eclipse UserFriend
Do you know this: https://dirksmetric.wordpress.com/2012/08/01/tutorial-eclipse-rcp-e4-with-3-x-views-like-project-explorer-properties-etc/

Are you aware that you need to contribute a perspective to a compat layer via snippet instead of a perspective to the perspective stack?
Re: Adding 3.x ViewParts to E4XMI [message #1732204 is a reply to message #1732200] Fri, 13 May 2016 08:25 Go to previous messageGo to next message
Eclipse UserFriend
Thanks, I figured that out earlier today through various postings. However, the part that's also not document is how to get placeholders working. Thanks to the link you provided, I now made a bit more progress.

That's what I have in my fragment which sort of works:
<?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:fragment="http://www.eclipse.org/ui/2010/UIModel/fragment" xmi:id="_BxaXACerEeWxCPrV0pAZQQ">
  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_EI7oACerEeWxCPrV0pAZQQ" featurename="descriptors" parentElementId="xpath:/">
    <elements xsi:type="basic:PartDescriptor" xmi:id="_KMklcCerEeWxCPrV0pAZQQ" elementId="gunnars.ide.views.toolbelt" label="Toolbelt Commands" iconURI="platform:/plugin/gunnars.ide/icon16.png" tooltip="" category="Gunnar" contributionURI="bundleclass://gunnars.ide/gunnars.ide.cli.parts.ToolbeltView">
      <tags>View</tags>
      <tags>categoryTag:Gunnar</tags>
    </elements>
  </fragments>
  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_fqQIEBjnEeaRNZC3Vs8uvw" featurename="snippets" parentElementId="org.eclipse.e4.legacy.ide.application" positionInList="">
    <elements xsi:type="advanced:Perspective" xmi:id="_guJ1EBjnEeaRNZC3Vs8uvw" elementId="gunnars.ide.perspective.appcloud" label="Gunnar's View" iconURI="platform:/plugin/gunnars.ide/icon16.png">
      <children xsi:type="basic_1:PartSashContainer" xmi:id="_jJuvkBj7Eea2ENFkqfwc7g" elementId="gunnars.ide.partsashcontainer.0">
        <children xsi:type="basic_1:PartSashContainer" xmi:id="_xRfUcBj7Eea2ENFkqfwc7g" elementId="top" containerData="75" horizontal="true">
          <children xsi:type="basic_1:PartStack" xmi:id="_zrPaEBj7Eea2ENFkqfwc7g" elementId="gunnars.ide.partstack.0" containerData="26">
            <children xsi:type="advanced:Placeholder" xmi:id="_sDtHUBkDEea2ENFkqfwc7g" elementId="org.eclipse.ui.navigator.ProjectExplorer" ref="_Ww7GMBkDEea2ENFkqfwc7g"/>
            <children xsi:type="advanced:Placeholder" xmi:id="_ydjI0BkEEea2ENFkqfwc7g" elementId="org.eclipse.egit.ui.RepositoriesView" ref="_cVUtcBkEEea2ENFkqfwc7g"/>
          </children>
          <children xsi:type="advanced:Placeholder" xmi:id="_m8LewBkBEea2ENFkqfwc7g" elementId="org.eclipse.ui.editorss" containerData="74" ref="_S91hABkBEea2ENFkqfwc7g"/>
        </children>
        <children xsi:type="basic_1:PartSashContainer" xmi:id="_orGtcBj7Eea2ENFkqfwc7g" elementId="bottom" containerData="25" horizontal="true">
          <children xsi:type="advanced:Placeholder" xmi:id="_Biv4QBkDEea2ENFkqfwc7g" elementId="gunnars.ide.part.toolbelt" containerData="26" ref="_yWl3IBkCEea2ENFkqfwc7g"/>
          <children xsi:type="advanced:Placeholder" xmi:id="_J0-poBkCEea2ENFkqfwc7g" elementId="org.eclipse.ui.console.ConsoleView" containerData="74" ref="_DHSpoBkCEea2ENFkqfwc7g"/>
        </children>
      </children>
    </elements>
  </fragments>
  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_zLGvMBkAEea2ENFkqfwc7g" featurename="sharedElements" parentElementId="IDEWindow">
    <elements xsi:type="advanced:Area" xmi:id="_S91hABkBEea2ENFkqfwc7g" elementId="org.eclipse.ui.editorss" label="Editor Area">
      <children xsi:type="basic_1:PartStack" xmi:id="_asB7wBkBEea2ENFkqfwc7g" 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://gunnars.ide/gunnars.ide.cli.parts.ToolbeltView" label="Toolbelt Commands" iconURI="platform:/plugin/gunnars.ide/icon16.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/org.eclipse.egit.ui/icons/eview16/repo_rep.gif"/>
  </fragments>
</fragment:ModelFragments>



The trick is to define a fragment which adds things to the "sharedElements" of "IDEWindow". However, I'm unsure if this approach is sane, i.e. will it create duplicate shared elements?
Re: Adding 3.x ViewParts to E4XMI [message #1732205 is a reply to message #1732204] Fri, 13 May 2016 08:28 Go to previous messageGo to next message
Eclipse UserFriend
Could you import shared elements?
Re: Adding 3.x ViewParts to E4XMI [message #1732208 is a reply to message #1732205] Fri, 13 May 2016 08:56 Go to previous messageGo to next message
Eclipse UserFriend
Dirk Fauth wrote on Fri, 13 May 2016 12:28
Could you import shared elements?


I don't know. The model editor in Neon does not give me an option in the drop-down to import a shared element.

Importing a "Part" does not work. There are none and/or the ones created by the compatibility layer are not visible to the model editor. I'm also not sure if the compatibility layer uses stable xmi ids that would work as stable references.

index.php/fa/25902/0/

[Updated on: Fri, 13 May 2016 09:06] by Moderator

Re: Adding 3.x ViewParts to E4XMI [message #1740537 is a reply to message #881287] Mon, 15 August 2016 10:06 Go to previous messageGo to next message
Eclipse UserFriend
Quote:

I just created a new shared element, using "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" as class URI while referencing the unique ID of the 3.x ViewParts class. I then used that shared element as reference for a placeholder which I put in place of the original part and everything works as expected.


How did you do this? Did you right click on the project, then New -> Other... then what did you choose? Thanks. IS Eclipse supposed to generate an e4xmi for you?
Re: Adding 3.x ViewParts to E4XMI [message #1834603 is a reply to message #1732204] Fri, 13 November 2020 06:58 Go to previous message
Eclipse UserFriend
Gunnar Wagenknecht wrote on Fri, 13 May 2016 12:25
Thanks, I figured that out earlier today through various postings. However, the part that's also not document is how to get placeholders working. Thanks to the link you provided, I now made a bit more progress.

That's what I have in my fragment which sort of works:
<?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:fragment="http://www.eclipse.org/ui/2010/UIModel/fragment" xmi:id="_BxaXACerEeWxCPrV0pAZQQ">
  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_EI7oACerEeWxCPrV0pAZQQ" featurename="descriptors" parentElementId="xpath:/">
    <elements xsi:type="basic:PartDescriptor" xmi:id="_KMklcCerEeWxCPrV0pAZQQ" elementId="gunnars.ide.views.toolbelt" label="Toolbelt Commands" iconURI="platform:/plugin/gunnars.ide/icon16.png" tooltip="" category="Gunnar" contributionURI="bundleclass://gunnars.ide/gunnars.ide.cli.parts.ToolbeltView">
      <tags>View</tags>
      <tags>categoryTag:Gunnar</tags>
    </elements>
  </fragments>
  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_fqQIEBjnEeaRNZC3Vs8uvw" featurename="snippets" parentElementId="org.eclipse.e4.legacy.ide.application" positionInList="">
    <elements xsi:type="advanced:Perspective" xmi:id="_guJ1EBjnEeaRNZC3Vs8uvw" elementId="gunnars.ide.perspective.appcloud" label="Gunnar's View" iconURI="platform:/plugin/gunnars.ide/icon16.png">
      <children xsi:type="basic_1:PartSashContainer" xmi:id="_jJuvkBj7Eea2ENFkqfwc7g" elementId="gunnars.ide.partsashcontainer.0">
        <children xsi:type="basic_1:PartSashContainer" xmi:id="_xRfUcBj7Eea2ENFkqfwc7g" elementId="top" containerData="75" horizontal="true">
          <children xsi:type="basic_1:PartStack" xmi:id="_zrPaEBj7Eea2ENFkqfwc7g" elementId="gunnars.ide.partstack.0" containerData="26">
            <children xsi:type="advanced:Placeholder" xmi:id="_sDtHUBkDEea2ENFkqfwc7g" elementId="org.eclipse.ui.navigator.ProjectExplorer" ref="_Ww7GMBkDEea2ENFkqfwc7g"/>
            <children xsi:type="advanced:Placeholder" xmi:id="_ydjI0BkEEea2ENFkqfwc7g" elementId="org.eclipse.egit.ui.RepositoriesView" ref="_cVUtcBkEEea2ENFkqfwc7g"/>
          </children>
          <children xsi:type="advanced:Placeholder" xmi:id="_m8LewBkBEea2ENFkqfwc7g" elementId="org.eclipse.ui.editorss" containerData="74" ref="_S91hABkBEea2ENFkqfwc7g"/>
        </children>
        <children xsi:type="basic_1:PartSashContainer" xmi:id="_orGtcBj7Eea2ENFkqfwc7g" elementId="bottom" containerData="25" horizontal="true">
          <children xsi:type="advanced:Placeholder" xmi:id="_Biv4QBkDEea2ENFkqfwc7g" elementId="gunnars.ide.part.toolbelt" containerData="26" ref="_yWl3IBkCEea2ENFkqfwc7g"/>
          <children xsi:type="advanced:Placeholder" xmi:id="_J0-poBkCEea2ENFkqfwc7g" elementId="org.eclipse.ui.console.ConsoleView" containerData="74" ref="_DHSpoBkCEea2ENFkqfwc7g"/>
        </children>
      </children>
    </elements>
  </fragments>
  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_zLGvMBkAEea2ENFkqfwc7g" featurename="sharedElements" parentElementId="IDEWindow">
    <elements xsi:type="advanced:Area" xmi:id="_S91hABkBEea2ENFkqfwc7g" elementId="org.eclipse.ui.editorss" label="Editor Area">
      <children xsi:type="basic_1:PartStack" xmi:id="_asB7wBkBEea2ENFkqfwc7g" 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://gunnars.ide/gunnars.ide.cli.parts.ToolbeltView" label="Toolbelt Commands" iconURI="platform:/plugin/gunnars.ide/icon16.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/org.eclipse.egit.ui/icons/eview16/repo_rep.gif"/>
  </fragments>
</fragment:ModelFragments>



The trick is to define a fragment which adds things to the "sharedElements" of "IDEWindow". However, I'm unsure if this approach is sane, i.e. will it create duplicate shared elements?


Hi Gunnar, I am following your e4xmi to integrate Egit into my E4 project. But This method does not seem to work with Egit on 2020-09 version. Do you still able to make it work?

Thanks.
Previous Topic:How to contribute to main toolbar using Eclipse 4?
Next Topic:E4 @Named dependency injection and OSGi services
Goto Forum:
  


Current Time: Tue May 13 04:53:44 EDT 2025

Powered by FUDForum. Page generated in 0.04977 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top