源参见:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-rcpclass/
BusyIndicator:
任务执行时鼠标显漏斗状,标识主线程忙碌,实际任务在另一线程执行。如下:
button.setText("Running...");//开始执行,设置一个标识
BusyIndicator.showWhile(button.getDisplay(), new MyThread(5000));
button.setText("BusyIndicator");//执行完成。
RCP程序的首选项(preferencePage)
增加扩展点<extension ? point="org.eclipse.ui.preferencePages">…
指定扩展项的class,在class中布局页面(继承自WorkbenchPreferencePage)
指定入口动作,菜单入口及Action:
preferenceAction = ActionFactory.PREFERENCES.create(window);
register(preferenceAction);
通过Window->Preferences 菜单打开。
(不扩展该扩展点也可,但是页面类还是需要继承WorkbenchPreferencePage,可以通过扩展命令command的方式,org.eclipse.ui.internal.handlers.ShowPreferencePageHandler,其内部也是用了PreferencesUtil.createPreferenceDialogOn(…)的方式打开,如下)。
PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(shell, preferencePageId, null, null);
dialog.open();
另外还有:PreferencesUtil .createPropertyDialogOn(Shell shell,final Object element, String propertyPageId, String[] displayedIds,Object data, int options).
IDialogSettings:
该接口提供了键值对的存储机制,键必须是字符串,值则可以是字符串或者字符串数组。
???? 作用
–? 为对话框设置提供持久化功能
???? 用法
–? 创建DialogSettings实例,或获取系统已有实例
–? 用put方法将需要保存的内容以键值对的方式保存到DialogSettings实例中,用get方法可读取。
–? 用save和load将DialogSettings实例中内容保存到xml文件中
创建自己的实例
IDialogSettings ds = new DialogSettings("myds");
??? String fileName = "c:/save.xml";
??? ds.put("iduc", id.getValue());
??? ds.save(fileName);
??? ……
??? ds.load(fileName);
??? String key = ds.get(key);
创建的文件格式:
<?xml version="1.0" encoding="UTF-8"?>
<section name="myds">
?????? <item key="iduc" value="11"/>
</section>
使用系统的实例:
IDialogSettings dlgSet = Activator.getDefault().getDialogSettings();
……
使用该语句,eclipse系统自动管理xml文件的加载与保存。
使用系统的对话框设置注意:
我们设置的对话框的内容保存在每个插件的对话框设置xml中,请参照PDE的对话框设置:E:\workspace\.metadata\.plugins\org.eclipse.pde.ui
我们可以将对话框的属性直接写到workbench这个section下,但为了防止属性名称冲突,请用dlgSet.addNewSection()添加自己的Section。
FileLocator:文件定位
它根据插件唯一标识,找到插件,new Path()是资源在插件中的相对位置,如下
URL location = FileLocator.find(Platform.getBundle("eclipse_system_class"), new Path("fileLocator.properties"), null);
InputStream is = location.openStream();
PropertyResourceBundle ?bundle = new PropertyResourceBundle(is);
……
IWorkbenchHelpSystem:
在了解 WorkbenchHelp 之前,读者需要了解 Eclipse 中的帮助扩张点,这个扩张点的目的是为开发者提供自定义帮助内容的方法,该扩展点的具体使用方法可以查看 Eclipse 官方开发文档。WorkbenchHelp 类提供了快捷的 API,用以设置、显示、获得帮助扩展点的帮助。
WorkbenchHelp.displayHelp("eclipse_system_class.contexthelp");
为组件设置帮助
Composite com = new Composite(parent, SWT.NONE);
WorkbenchHelp.setHelp(com, "eclipse_system_class.contexthelp");
...
它的第二个参数值 eclipse_system_class.contexthelp 中的 contexthelp,是附件程序扩展 org.eclipse.help.contexts 扩展点定义的 context 的 id,eclipse_system_class 则为附件程序的插件 ID
?
其实workbenchHelp已经不推荐使用了,使用下面的代替。
PlatformUI.getWorkbench().getHelpSystem().displayHelp("eclipse_system_class.contexthelp");
MessageDialogWithToggle 的用法
MessageDialogWithToggle 是一个带有 CheckBox 的提示对话框,MessageDialogWithToggle 不仅保存了用户点击的按钮信息,还保存了用户是否选中了 ChekBox。MessageDialogWithToggle 在 Eclipse 中的使用例子很多,比如关闭 Eclipse 时,会弹出是否保存工程的对话框。该对话框就是 MessageDialogWithToggle 的实例。