Eclipse:以编程方式创建首选项页面 [英] Eclipse: create preference page programmatically

查看:327
本文介绍了Eclipse:以编程方式创建首选项页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在以编程方式创建一个偏好页面,我需要使用偏好页面,而不需要在plugin.xml中定义preferencesPage扩展点
我非常接近解决方案,我可以加载页面和保存第一次应用程序加载的值,

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,

我的代码的核心是

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);

其中PreferencePageRCP是我的自定义首选项,所以这一点我有我的PreferencePage工作!!!

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

但是当我第二次到首选项窗口时,我在PreferenceNode.createPage上有一个错误,所以现在我做了我自己的PreferenceNode类覆盖createPage,但现在我有一个UI错误

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
.................

所以第二次在UI
中有一些东西我在这一点上我无法修复我的代码,有人成功创建首选项页面编程???

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???

推荐答案

这是java代码,它允许以编程方式创建一个偏好页:

Here is the java code, which allows the creation of a preference Page programmatically:


//create an instance of the custom MyPreference class
IPreferencePage page = new MyPreference(); 
page.setTitle("Custom Configurations");

//创建一个新的PreferenceNode,将出现在首选项窗口
PreferenceNode node = new PreferenceNode(1,page);

//create a new PreferenceNode that will appear in the Preference window PreferenceNode node = new PreferenceNode("1", page);

//使用workbenches的偏好管理器
PreferenceManager pm = PlatformUI.getWorkbench()。getPreferenceManager();

//use workbenches's preference manager PreferenceManager pm= PlatformUI.getWorkbench().getPreferenceManager();

pm.addToRoot(node); //在PreferenceManager中添加节点

pm.addToRoot(node); //add the node in the PreferenceManager

Shell shell = PlatformUI.getWorkbench()。getActiveWorkbenchWindow()。getShell();

Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();

//实例化PreferenceDialog
PreferenceDialog pd = new PreferenceDialog(shell,pm);

//instantiate the PreferenceDialog PreferenceDialog pd = new PreferenceDialog(shell, pm);

//这行很重要,它告诉PreferenceDialog哪个首选项应该写入
pd.setPreferenceStore(Activator.getDefault()。getPreferenceStore( ));
pd.create();
pd.open();

//this line is important, it tell's the PreferenceDialog which preference-store it should write to pd.setPreferenceStore(Activator.getDefault().getPreferenceStore()); pd.create(); pd.open();

这篇关于Eclipse:以编程方式创建首选项页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆