Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "E4/Compatibility/Running the compatibility layer"

(Setup)
Line 4: Line 4:
  
 
The views and editors are created through the LegacyViewFactory, a specialized PartFactory that mimics the part creation protocol (creating the executable extension for the part, calling 'createPartControl'...) in eclipse 3.x.
 
The views and editors are created through the LegacyViewFactory, a specialized PartFactory that mimics the part creation protocol (creating the executable extension for the part, calling 'createPartControl'...) in eclipse 3.x.
 
For an explanation of what the compatibility layer does and information about its current implementation go to the [[E4/Compatibility | e4 Compatibility ]]  page
 
  
 
==Setup==
 
==Setup==

Revision as of 11:19, 20 March 2009

A screenshot showing the current state of the Eclipse 3.x compatibility layer.

This demo shows the current state of the eclipse 3.x compatibility layer . The image shows a workbench populated from an IPerspectiveFactory. The resulting menu, stacks, views and Editor Area are creating by turning the API calls into changes to the modeled UI's structure.

The views and editors are created through the LegacyViewFactory, a specialized PartFactory that mimics the part creation protocol (creating the executable extension for the part, calling 'createPartControl'...) in eclipse 3.x.

Setup

Warning: These setup instructions are significantly different from the various e4 demos because of technical constraints on fragment development.

Unlike the demos, we have to sacrifice (possibly) some stability because the current fragment handling code requires that the workspace contains a checked out org.eclipse.ui.workbench project. If the base eclipse that you are running is not recent then the workbench project may fail to compile due to underlying project changes and you could end up 'pulling on a piece of thread' (i.e. checking out multiple other projects one after the other to satisfy the compilation requirements).

Install Eclipse

Start with a fresh install of the latest I-build.

Install EMF

  1. "Help" -> "Install New Software..."
  2. Select the "http://download.eclipse.org/releases/galileo" update site
  3. Open "Models and Model Development"
  4. Check "EMF SDK - Eclipse Modeling Framework SDK"
  5. Hit "Next" as necessary (accepting the license agreement)
  6. Hit "Finish"
  7. Restart eclipse when prompted

Load the compatibility layer

  1. Open the CVS Repositories view
  2. Add a new connection to dev.eclipse.org with the repository path 'cvsroot/eclipse', if you are not a committer simply use 'anonymous' as the User name.
  3. Check out the 'e4\releng' project from HEAD

Now you should have a 'releng' project in your workspace. Drill down into 'org.eclipse.e4.ui.releng', select both 'e4.ui.psf' and 'e4.ui.compatibility.psf', right-click and select 'Import Project Set...'. This will check out the porjects that you need in order to run the compatibility layer.

Running the Code

  1. Open the "Run Configurations..." dialog. Under "Eclipse Application" you should see a configuration called legacy.workbench.product, select it.
  2. The default workspace location likely won't exist and until we get the CVS view working we have no way to populate an empty workspace. Change the Workspace data location to point to some existing (populated) workspace so that when you bring up the demo the Project Explorer will have something to show.
  3. Run it.

You should see a Shell similar to the one depicted above. You should be able to use the Project Explorer to examine the workspace. If you right-click and select Open, the editor(s) for the selected resource(s) will be created.

Under the Covers

What do we have and how is it done? Providing the ability to host 3.x components in the e4 workbench is a mix of three different approaches...

  • Replace:

The bulk of the compatibility layer's implementation resides in the /org.eclipse.e4.ui.workbench.fragment project. A 'fragment' is a special type of OSGI bundle that has the ability to provide a relpacement for classes defined in some other bundle (in this case org.eclipse.ui.workbench).

This fragment currently provides replacements for the following

  • Re-use:

Many of the capabilities available through the Workbench[Window[View|Editor]]] are implemented as discreet classes that encapsulate their functionality. Where appropriate we simply instantiate the 3.x class. In some cases (i.e. providing selections, Command infrastructure) we will be forced to re-implement the functionality in order to merge it into the e4 architecture correctly.

  • Re-implement:

Where the API returns an interface the layer will re-implement the inteface itself, mapping the various method's functionality into the e4 structure.

Back to the top