Ich habe eine wirklich grundlegende FormEditor
und FormPage
:Stackoverflow Während formpage Hinzufügen 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) { }
}
Diese zugegebenermaßen komplexe und exotische Anwendungsfall bringt die folgende Ausnahme:
java.lang.StackOverflowError bei org.eclipse.swt.widgets.Widget.getData (Widget.java:525) bei org.eclipse.ui.part.MultiPageEditorPart.getEditor (MultiPageEditorPart.java:599) bei org.eclipse.ui.part.MultiPageEditorPar t.getActiveEditor (MultiPageEditorPart.java:523) bei org.eclipse.ui.forms.editor.FormEditor.getActiveEditor (FormEditor.java:430) bei org.eclipse.ui.forms.editor.FormEditor $ FormEditorSelectionProvider.getSelection (FormEditor.java:84) bei org.eclipse.ui.forms.editor.FormEditor $ FormEditorSelectionProvider.getSelection (FormEditor.java:89) bei org.eclipse.ui.forms.editor.FormEditor $ FormEditorSelectionProvider.getSelection (FormEditor. java: 89) bei org.eclipse.ui.forms.editor.FormEditor $ FormEditorSelectionProvider.getSelection (FormEditor.java:89) ...
wenn ich jedoch addPage(IFormPage)
stattverwendenes funktioniert. Es gibt sogar einen "Bug" -Bericht für dieses Problem: Bug 283039 (es ist kein Bug, weil ... es gibt keinen Grund gegeben).
Wir müssen nicht diskutieren, ob das ein Fehler ist, aber was ich wissen will ist: Wie füge ich eine FormPage
zu einer FormEditor
hinzu, während ich noch die IEditorInput
definiere?