0

テスト用の簡単な自動化ツールを作成しようとしています。簡単なチュートリアルに従っています

ネット上で、Eclipse を表示する 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が初めてです:(

4

1 に答える 1

0

私もGEFを学んでいますが、私が見たところ、gefエディターはViewPart(ビュー)ではなく、エディターであり、拡張されていEditPartます。

ここで私の進行中のGEFチュートリアルを確認してください。それが役に立てば幸い。

EclipseのWebサイトから他のGEFチュートリアルにアクセスすることもできます。

于 2011-08-01T09:22:34.143 に答える