GEF MultiEditor

来源:互联网 发布:淘宝精品店 编辑:程序博客网 时间:2024/05/18 03:24

eclipse 多页编辑器 multi editor

 (2010-06-24 15:52:48)
标签: 

eclipse

 

多页编辑器

 

multi

 

editor

 

it

分类: Eclipse
1.首先写的个类继承MultiPageEditorPart。
public class HouseMultiPageEditorPart extends MultiPageEditorPart {

    public static final String ID = "houseMultiPageEditorPart"; //$NON-NLS-1$

    public HouseMultiPageEditorPart() {
    }

    @Override
    protected void createPages() {

    }

    @Override
    public boolean isSaveAsAllowed() {
        // TODO Auto-generated method stub
        return false;
    }
}
2.在Plugin.xml中对org.eclipse.ui.editors进行扩展。
id*:houseMultiPageEditorPart
name : New MultiPageEditorPart
class : package.HouseMultiPageEditorPart
3.实现接口IEditorInput,里面描述的是Editor的一些基本信息。
public class HouseEditorInput implements IEditorInput {

    public boolean exists() {
        // TODO Auto-generated method stub
        return false;
    }

    public ImageDescriptor getImageDescriptor() {
        // TODO Auto-generated method stub
        return null;
    }

    public String getName() {
        // TODO Auto-generated method stub
        return "House";
    }

    public IPersistableElement getPersistable() {
        // TODO Auto-generated method stub
        return null;
    }

    public String getToolTipText() {
        // TODO Auto-generated method stub
        return "House";
    }

    public Object getAdapter(Class adapter) {
        // TODO Auto-generated method stub
        return null;
    }

}
4.在HouseMultiPageEditorPart.java的createPages方法中加入两个页面(可以是Swt的容器,也可是其它的Editor)
@Override
    protected void createPages() {

        Composite composite = new Composite(getContainer(), SWT.NONE);
        GridLayout layout = new GridLayout();
        composite.setLayout(layout);
        layout.numColumns = 2;

        Button fontButton = new Button(composite, SWT.NONE);
        GridData gd = new GridData(GridData.BEGINNING);
        gd.horizontalSpan = 2;
        fontButton.setLayoutData(gd);
        fontButton.setText("one");

        int index = addPage(composite);
        setPageText(index, "Properties");
       

        Composite composite1 = new Composite(getContainer(), SWT.NONE);
        GridLayout layout1 = new GridLayout();
        composite1.setLayout(layout1);
        layout1.numColumns = 2;

        Button fontButton1 = new Button(composite1, SWT.NONE);
        GridData gd1 = new GridData(GridData.BEGINNING);
        gd1.horizontalSpan = 2;
        fontButton1.setLayoutData(gd);
        fontButton1.setText("two");
       
        index = addPage(composite1);
        setPageText(index, "Properties1");
    }
5.打开此Editor。

IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();

try {
   page.openEditor(new HouseEditorInput(), HouseMultiPageEditorPart.ID);
} catch (PartInitException e1) {
   // TODO Auto-generated catch block
    e1.printStackTrace();
}