Попытка создать простой ГЭФ - PullRequest
0 голосов
/ 02 декабря 2010

Я пытаюсь создать простой инструмент автоматизации для тестирования. Я прошел простые уроки

в сети и создал RCP с видом на затмение. Теперь я попытался включить простой GEF

Компонент

в представлении выдает ошибку: «Не удалось создать представление: плагину« GEFTutorial »не удалось создать экземпляр класса« geftutorial.View ».

вот мой исходный код

особенно когда я раскомментирую создание

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

все приведенные выше операторы в представлении view.my отображаются обратно

вот мой исходный код для view.java

package geftutorial;

import org.eclipse.jface.viewers.IStructuredContentProvider;

import org.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();
    }
}

Может кто-нибудь подсказать мне об этом? я новичок в RCP и GEF: (

1 Ответ

0 голосов
/ 01 августа 2011

Я также только изучаю GEF, но из того, что я видел, редакторы gef - это не ViewPart (просмотры), а редакторы, расширяющие EditPart.

Проверьте мое текущее руководство по GEF здесь.Надеюсь, поможет.

Вы также можете получить доступ к другим учебным пособиям GEF с веб-сайта eclipse .

...