当前位置: 代码迷 >> Eclipse >> eclipse中RCP开发几个适用类
  详细解决方案

eclipse中RCP开发几个适用类

热度:14   发布时间:2016-04-23 01:07:42.0
eclipse中RCP开发几个实用类

源参见: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方法可读取。

? saveloadDialogSettings实例中内容保存到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 ideclipse_system_class 则为附件程序的插件 ID

?

其实workbenchHelp已经不推荐使用了,使用下面的代替。

PlatformUI.getWorkbench().getHelpSystem().displayHelp("eclipse_system_class.contexthelp");

MessageDialogWithToggle 的用法

MessageDialogWithToggle 是一个带有 CheckBox 的提示对话框,MessageDialogWithToggle 不仅保存了用户点击的按钮信息,还保存了用户是否选中了 ChekBoxMessageDialogWithToggle Eclipse 中的使用例子很多,比如关闭 Eclipse 时,会弹出是否保存工程的对话框。该对话框就是 MessageDialogWithToggle 的实例。

  相关解决方案