Я пишу плагин для затмения. Моя проблема: я написал класс 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
}
}
заранее спасибо