13 novembre 2012

Migrating plug-ins from Eclipse 3.x to Eclipse 4 – getting ready for Eclipse 4

Migrating plug-ins from Eclipse 3.x to Eclipse 4 – getting ready for Eclipse 4:
To migrate your Views and Editors to Eclipse 4 you can choice to use org.eclipse.e4.tools.compat plug-in from the e4 tooling projects. This bridge was developed by Tom Schindl a while ago.
To use this bridge in Eclipse 4.2 or Eclipse 3.8 install the org.eclipse.e4.tools.e3x.bridge feature into your Eclipse IDE.
Afterwards add the following plug-ins to your MANIFEST.MF.
org.eclipse.e4.tools.compat;bundle-version=”0.12.0″,

org.eclipse.e4.core.contexts;bundle-version=”1.1.0″
You can now develop your Parts as Pojos:
package example.compat.parts;

import javax.annotation.PostConstruct;

import org.eclipse.e4.ui.di.Focus;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;

public class View {
 public static final String ID = "example.compat.view";

 private TableViewer viewer;

 @PostConstruct
 public void createPartControl(Composite parent) {
  viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
    | SWT.V_SCROLL);
  viewer.setContentProvider(ArrayContentProvider.getInstance());
  TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
  column.getColumn().setWidth(100);
  column.setLabelProvider(new ColumnLabelProvider(){
   @Override
   public String getText(Object element) {
    return element.toString();
   }
  });
  
  // Provide the input to the ContentProvider
  viewer.setInput(new String[] { "One", "Two", "Three" });
 }

 @Focus
 public void setFocus() {
  viewer.getControl().setFocus();
 }
}

You only have to wrap them into an instance of DIViewPart:
package example.compat;

import org.eclipse.e4.tools.compat.parts.DIViewPart;

import example.compat.parts.View;

public class ViewWrapper extends DIViewPart<View> {

 public ViewWrapper() {
  super(View.class);
 }

}

In your plugin.xml you use ViewWrapper to define your Views.
This way you can use the dependency injection already in your Eclipse 3.x plugin, have a better possibility to test your user interface components in plain JUnit test (they are just POJO) and get ready for for a full Eclipse 4 migration.

Nessun commento:

Posta un commento