【发布时间】:2016-10-16 09:21:34
【问题描述】:
我有一个非常基本的FormEditor 和FormPage:
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.MultiPageEditorPart.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) 在 org.eclipse.ui.forms.editor.FormEditor$FormEditorSelectionProvider.getSelection(FormEditor.java:89) 在 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(这不是错误,因为......没有给出原因)。
我们不需要讨论这是否是一个错误,但我想知道的是:如何在仍定义 IEditorInput 的同时将 FormPage 添加到 FormEditor?
【问题讨论】:
标签: java eclipse-plugin