RCP PreferencesDialog Problem

maksbor80

Mitglied
Hallo...

In meiner Anwendung habe ich ApplicationActionBarAdvisor.makeActions eine Action für den Preferences Dialog gelegt.
PHP:
iShowPreferencesAction = ActionFactory.PREFERENCES.create(window);
    iShowPreferencesAction.setImageDescriptor(Activator.getInstance().getImageDescriptor(Activator.ICON_SETTINGS_16));
    register(iShowPreferencesAction);

Den PreferenceManager habe ich in ApplicationWorkbenchWindowAdvisor.postWindowOpen wie folgt erweitert
PHP:
final PreferenceManager manager = window.getWorkbench().getPreferenceManager();
    // Remove Generals
    manager.removeAll();
    // Add printer settings
    IPreferenceNode node = new PreferenceNode(PrinterPage.ID, new PrinterPage());
    manager.addToRoot(node);

Ich habe eine PreferencesPage angelegt, die wie folgt aussieht:

PHP:
public class PrinterPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
  public static final String ID = PrinterPage.class.getName();
  public PrinterPage() {
    super(FLAT);
    setPreferenceStore(Activator.getInstance().getPreferenceStore());
    setTitle("Drucker");
    setDescription("Legen Sie bitte Standard- und Barcode-Drucker fest.");
  }

  protected void createFieldEditors() {
    addField(new PrinterListEditor(PrintFactory.STANDARD, "Standard Drucker", getFieldEditorParent()));
    addField(new PrinterListEditor(PrintFactory.BARCODE, "Barcode Drucker", getFieldEditorParent()));
  }

  public void init(IWorkbench workbench) {
  }
}


Das ganze funktioniert soweit prima. Der Preferences Dialog öffnet sich und ich kann den Pfad verändern und durch klicken auf Ok speichern. Ich schliesse die Applikation, starte sie erneut, und der gespeicherte Wert ist noch vorhanden. Wenn ich die Applikation jedoch nicht schliesse und den Preferences Dialog ein zweites Mal durch klicken auf den Buuton aufrufe erscheint ein Error Message Dialog mit dem Hinweis "An Error has occurred, see error log for more details". Dann kommt der Preferences Editor ohne Inhalt!

Hat jemand nen Tipp woran das liegen kann?

Logfile sieht danach wie folgt aus:

!SESSION 2008-08-18 19:09:32.830 -----------------------------------------------
!ENTRY org.eclipse.jface 4 2 2008-08-18 19:09:50.264
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
!STACK 0
org.eclipse.core.runtime.AssertionFailedException: null argument:
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:84)
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:72)
at org.eclipse.jface.preference.PreferenceNode.createObject(PreferenceNode.java:135)
at org.eclipse.jface.preference.PreferenceNode.createPage(PreferenceNode.java:157)
at org.eclipse.jface.preference.PreferenceDialog.createPage(PreferenceDialog.java:1294)
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.createPage(FilteredPreferenceDialog.java:313)
at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1185)
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:433)
at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:698)
at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:857)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)
at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1642)
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1095)
at org.eclipse.jface.preference.PreferenceDialog.selectSavedItem(PreferenceDialog.java:1009)
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.selectSavedItem(FilteredPreferenceDialog.java:476)
at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:369)
at org.eclipse.swt.custom.BusyIndicator.showWhile(Unknown Source)
at org.eclipse.jface.preference.PreferenceDialog.createContents(PreferenceDialog.java:365)
at org.eclipse.jface.window.Window.create(Window.java:426)
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1083)
at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.createDialogOn(WorkbenchPreferenceDialog.java:96)
at org.eclipse.ui.dialogs.PreferencesUtil.createPreferenceDialogOn(PreferencesUtil.java:85)
at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:64)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at com.client.gui.Application.start(Application.java:47)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
at org.eclipse.equinox.launcher.Main.main(Main.java:1148)


Danke!
 
Zuletzt bearbeitet:
Hi maksbor80,

ich frage mich warum in deiner Ecxeption JFace steht. Falsche Preferences importiert?

Gruß
Leetus
 
Hallo
Zitat von maksbor80:
Ich schliesse die Applikation, starte sie erneut, und der gespeicherte Wert ist noch vorhanden. Wenn ich die Applikation jedoch nicht schliesse und den Preferences Dialog ein zweites Mal durch klicken auf den Buuton aufrufe erscheint ein Error Message Dialog mit dem Hinweis "An Error has occurred, see error log for more details

Ich habe nämlich das gleiche Problem.

@maksbor80
Es ist lange her, dass Du diesen Thread gestartet hast. Ich vermute Du hast das Problem gelöst. Könntest Du, beziehungsweise derjenige, der die Lösung kennt, mir bitte mitteilen ?

Für eine schnelle Hilfe bin ich sehr dankbar.

Beste Grüße,
Nouqrat
 
Zurück