views:

36

answers:

1

I'm trying to create a preference page programmatically, I need to work with preference pages without define preferencePage extension point in plugin.xml I'm very close to solution, I'm able to load page and save the value the first time application loads,

the core of my code is

PreferenceManager pmngr= PlatformUI.getWorkbench().getPreferenceManager();
 //this come from other plugins that implements my personal IPreferences 
    PreferencePageRCP page =new PreferencePageRCP((IPreferences) element.createExecutableExtension("class"));

    PreferenceNodeRCP node= new PreferenceNodeRCP(page.getId(), page.getTitle(),null,PreferencePageRCP.class.getName());

    node.setPage(page);
     pmngr.addToRoot(node);

where PreferencePageRCP is my Custom PreferencePage so a this point I have my PreferencePage working!!!

but when I go a second time to preference window I got an error on PreferenceNode.createPage, so now I did my own PreferenceNode class overriding createPage but now I got an UI error

Problems occurred when invoking code from plug-in: "org.eclipse.jface".
!STACK 0
org.eclipse.swt.SWTException: Widget is disposed
 at org.eclipse.swt.SWT.error(SWT.java:4083)
 at org.eclipse.swt.SWT.error(SWT.java:3998)
 at org.eclipse.swt.SWT.error(SWT.java:3969)
 at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
 at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:340)
 at org.eclipse.swt.widgets.Control.setVisible(Control.java:3370)
 at org.eclipse.jface.dialogs.DialogPage.setVisible(DialogPage.java:470)
 at org.eclipse.jface.preference.FieldEditorPreferencePage.setVisible(FieldEditorPreferencePage.java:374)
 at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1323)
 at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:673)
 at org.eclipse.jface.preference.PreferenceDialog$10.run(PreferenceDialog.java:708)
 at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
 andContributionItem.java:796
.................

So the second time there is something missing in UI I at this point I'm not able to fix my code, there is someone who had success in create Preference Page Programmatically???

+2  A: 

Finally I discovered That simply I can't do this by code using default preference page viewer!

So I realized an handler that load a PreferenceDialog everytime is called and every time create nodes and pages. that the only way I find and it works.

Achille