开发者

Trying to create simple GEF

i am trying to create simple automation tool for testing.I have followed a simple tutorials

on net and created a RCP with view on eclipse. now i have tried to include simple GEF

component on the view it throws me error saying " Could not create the view: Plug-in "GEFTutorial" was unable to instantiate class "geftutorial.View"."

here is my source code

particularly when i uncomment creation of

 private ScrollingGraphicalViewer viewer = new ScrollingGraphicalViewer();
 private RootEditPart rootEditPart = new ScalableFreeformRootEditPart();
 private EditPartFactory editPartFactory = new SimpleGEFEditPartFactory();

all the above statements on the view.my view appears back

here is my source code for view.java

package geftutorial;

import org.eclipse.jface.viewers.IStructuredContentProvider;

import o开发者_如何学Gorg.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.gef.*;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;    

public class View extends ViewPart {
    public static final String ID = "GEFTutorial.view";

    //Use a standard Viewer for the Draw2d canvas
     private ScrollingGraphicalViewer viewer = new ScrollingGraphicalViewer();
    //Use standard RootEditPart as holder for all other edit parts
    private RootEditPart rootEditPart = new ScalableFreeformRootEditPart();
    //Custom made EditPartFactory, will automatically be called to create
    //edit
    // parts for model elements
    private EditPartFactory editPartFactory = new SimpleGEFEditPartFactory();
    //The model
    private SuperWidget model;

    //private TableViewer viewer;

    /**
     * The content provider class is responsible for providing objects to the
     * view. It can wrap existing objects in adapters or simply return objects
     * as-is. These objects may be sensitive to the current input of the view,
     * or ignore it and always show the same content (like Task List, for
     * example).
     */
    class ViewContentProvider implements IStructuredContentProvider {
        public void inputChanged(Viewer v, Object oldInput, Object newInput) {
        }

        public void dispose() {
        }

        public Object[] getElements(Object parent) {
            if (parent instanceof Object[]) {
                return (Object[]) parent;
            }
            return new Object[0];
        }
    }

    class ViewLabelProvider extends LabelProvider implements
            ITableLabelProvider {
        public String getColumnText(Object obj, int index) {
            return getText(obj);
        }

        public Image getColumnImage(Object obj, int index) {
            return getImage(obj);
        }

        public Image getImage(Object obj) {
            return PlatformUI.getWorkbench().getSharedImages().getImage(
                    ISharedImages.IMG_OBJ_ELEMENT);
        }
    }

    /**
     * This is a callback that will allow us to create the viewer and initialize
     * it.
     */
    public void createPartControl(Composite parent) {
        /*viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
                | SWT.V_SCROLL);
        viewer.setContentProvider(new ViewContentProvider());
        viewer.setLabelProvider(new ViewLabelProvider());
        // Provide the input to the ContentProvider
        viewer.setInput(new String[] {"One", "Two", "Three"});
        */



        //Create a dummy model
        model = new SuperWidget("Model");
        model.createDummyModel();
        //Initialize the viewer, 'parent' is the
        // enclosing RCP windowframe
        viewer.createControl(parent);
        viewer.setRootEditPart(rootEditPart);
        viewer.setEditPartFactory(editPartFactory);
        //Inject the model into the viewer, the viewer will
        // traverse the model automatically
        viewer.setContents(model);
        //Set the view's background to white
        viewer.getControl().setBackground(new Color(null, 255,255,255));            
    }

    /**
     * Passing the focus request to the viewer's control.
     */
    public void setFocus() {
        viewer.getControl().setFocus();
    }
}

Can someone give me a clue about this? i am new to RCP and GEF :(


I'm also just learning GEF, but from what I have seen gef editors are not ViewPart (views) but editors, extending EditPart.

Check my ongoing GEF tutorial here. Hope it helps.

You can also access other GEF tutorial from the eclipse website.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜