обрабатывать действия панели инструментов на плагине Eclipse - PullRequest
0 голосов
/ 30 ноября 2011

Я пишу плагин для затмения. Моя проблема: я написал класс MyEditor расширяет MultiPageEditorPart для редактирования моих файлов, а класс MyContributor расширяет MultiPageEditorActionBarContributor для добавления действий на панель инструментов.

Пока я вижу кнопки на панели инструментов, добавленные MyContributore.contributeToolbar (), но они всегда деактивируются, даже когда я выбираю некоторые редактируемые части в моем редакторе.

я могу заставить его работать с «обычными» редакторами (то есть с расширением EditorPart), но я не знаю, почему он не работает для многостраничного редактора.

Помимо обычных реализованных методов, здесь есть переопределенный метод init и createPage, который я написал в MyEditor (с именем 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
    }
}

заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...