处理eclipse插件上的工具栏操作

时间:2011-11-30 16:05:35

标签: java eclipse plugins

我正在为eclipse写一个插件。我的问题是:我写了一个类MyEditor扩展MultiPageEditorPart来编辑我的文件,一个MyContributor类扩展MultiPageEditorActionBarContributor来向工具栏添加动作。

到目前为止,我可以看到工具栏上的按钮由MyContributore.contributeToolbar()添加,但它们总是被停用,即使我在编辑器中选择了一些editparts。

我可以使用“普通”编辑器(即扩展EditorPart),但我不知道为什么它不能用于多页面编辑器。

除了通常实现的方法之外,以下是我在init中编写的createPageMyEditor重写方法(名称为XALDesignerMultiPage,在下面的代码段中),根据需要评论:

@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException
{
    super.init(site, input);

    this.setPartName(input.getName());

    XALDesignerMultiPage.site = this.getSite();

    //this.model = new Program();
    try {
        this.model = XALInput.parseXALFile((FileEditorInput)input);
    } catch (Exception e) {
        // ... do something
    }
}
...
@Override
protected void createPages() {
    try
    {
        for (Automaton currAut : this.model.getAutomata())
        {
            createGraphicalEditor(currAut);
        }
    }
    catch (Exception e)
    {
        // ... do something
    }

    // ... other stuff
}
...
private void createGraphicalEditor(Automaton currAut)
{
    try
    {
        IEditorPart editor = new XALDesigner(); // XALDesigner is an instance of single page editor

        int index = this.getPageCount();


        addPage(index, editor, new AutomatonInput(((FileEditorInput)getEditorInput()).getFile(), currAut)); // AutomatonInput wraps the single page input

        String autName = AutomatonInput.defaultName;
        if (currAut != null)
        {
            autName = currAut.getName();
        }
        setPageText(index, autName);
    }
    catch (PartInitException e)
    {
        // ... do something
    }
    catch (Throwable t)
    {
                // ... do something
    }
}

提前致谢

0 个答案:

没有答案