У меня есть на самом деле основной FormEditor
и FormPage
:StackOverflowError Хотя Добавление FormPage к FormEditor
public class CustomFieldSetVersionEditor extends FormEditor {
@Override
protected void addPages() {
try {
addPage(new MyFormPage(this), getEditorInput());
} catch (final PartInitException ex) {
ex.printStackTrace();
}
}
@Override
public void doSave(final IProgressMonitor monitor) {}
@Override
public void doSaveAs() {}
@Override
public boolean isSaveAsAllowed() { return false; }
}
class MyFormPage extends FormPage {
public MyFormPage(final FormEditor editor) {
super(editor, "id", "Title");
}
@Override
protected void createFormContent(final IManagedForm managedForm) { }
}
Это правда, сложный и экзотический случай использования приносит следующее исключение:
java.lang.StackOverflowError в org.eclipse.swt.widgets.Widget.getData (Widget.java:525) на org.eclipse.ui.part.MultiPageEditorPart.getEditor (MultiPageEditorPart.java:599) на org.eclipse.ui.part.MultiPageEditorPar t.getActiveEditor (MultiPageEditorPart.java:523) на org.eclipse.ui.forms.editor.FormEditor.getActiveEditor (FormEditor.java:430) на org.eclipse.ui.forms.editor.FormEditor $ FormEditorSelectionProvider.getSelection (FormEditor.java:84) at org.eclipse.ui.forms.editor.FormEditor $ FormEditorSelectionProvider.getSelection (FormEditor.java:89) at org.eclipse.ui.forms.editor.FormEditor $ FormEditorSelectionProvider.getSelection (FormEditor. Java: 89) в org.eclipse.ui.forms.editor.FormEditor $ FormEditorSelectionProvider.getSelection (FormEditor.java:89) ...
Однако, если я использую addPage(IFormPage)
вместо addPage(IEditorPart, IEditorInput)
работает. Для этой проблемы есть даже «ошибка»: Bug 283039 (это не ошибка, потому что ... нет причин).
Нам не нужно обсуждать, если это ошибка, но то, что я хочу знать: Как добавить FormPage
к FormEditor
в то же время определения IEditorInput
?