通过首选项页面设置首选项
在一个 Java 程序中,设置通常是在程序外部的属性文件中完成的。除此之外,基于 Eclipse 的应用程序还提供了一些扩展点,允许 Eclipse 开发人员为基于 Eclipse 的应用程序(在我们的例子中是 Lotus Sametime 客户机)的首选项添加一个首选项页面。在您的首选项页面中有两个首选项。第一个首选项是 Google 路线中的起点地址。第二个首选项是 Internet 浏览器的位置。例如,编辑浏览器位置,Sametime 用户可选择使用 Internet Explorer 或 Firefox 来显示路线和/或地图。
您将在一个名为 Google Map 的首选项页面中存储首选项,如图 8 所示。
要创建 Google Map 首选项页面,打开您的 META-INF/MANIFEST.MF 文件。选择 Extensions 选项卡并单击 Add 按钮打开 New Extension 窗口。在 New Extension 窗口中,选择 Extension Wizards 选项卡。在 Extension Wizards 选项卡的右窗格中选择 Preference Page 扩展模板并单击 Next。参见图 9。
这将为您的首选项页面创建一个模板,您可按照自己的需求修改此模板。将首选项页面的类名设置为 GMapPreferencePage。首选项页面的名称设置为 Google Map。使用默认包名称 com.devworks.example.map.preferences 作为 Java 包名称,单击 Finish(参见图 10)。按 Ctrl+S 保存 Extensions 视图中的更改。
在您创建模板时,Eclipse 会为您生成一个名为 PreferenceConstants 的类。这是一个方便的类,可用于存储您的首选项页面所使用的常量值。可使用如下代码替换自动生成的代码:
/** * Constant definitions for plug-in preferences */ public class PreferenceConstants { public static final String MY_LOCATION = "myLocation"; public static final String BROWSER_LOCATION = "browserLocation"; }
从上述代码中可以看到,插件使用两个常量:MY_LOCATION 和 BROWSER_LOCATION,前者表示使用 Lotus Sametime 客户机的人的实际地址,后者表示他/她的 Internet 浏览器的可执行文件所在的磁盘位置。
为您自动生成的另外一个类就是 PreferenceInitializer 类。这个类的 initializeDefaultPreference 方法用于为首选项值填充默认值。在下面的代码中,请注意该类是如何使用您在 PreferencesConstants 类中定义的常量的。默认情况下,浏览器位置设置为 Microsoft Internet Explorer 的默认安装位置(c:\Program Files\Internet Explorer\iexplore.exe)。
public class PreferenceInitializer extends AbstractPreferenceInitializer { public void initializeDefaultPreferences() { IPreferenceStore store = Activator.getDefault() .getPreferenceStore(); store.setDefault(PreferenceConstants.MY_LOCATION, ""); store.setDefault(PreferenceConstants.BROWSER_LOCATION, "c:\\progra~1\\intern~1\\iexplore.exe"); } }
模板生成创建了另外一个名为 GMapPreferencePage 的类。这个类定义首选项页面的布局。可用如下构造函数片段取代自动生成的构造函数:
public GMapPreferencePage() { super(GRID); setPreferenceStore(Activator.getDefault().getPreferenceStore()); setDescription("Preferences for the Google Map feature."); }
在上述代码中,父类的构造函数接受一个参数,一个表示布局的整型参数。我们选择了 GRID 布局,这种布局默认具有一列。您添加的各 FieldEditor 部件都将具有自己的一行。
您需要提供输入区域,使客户机可通过这个区域编辑其首选项的值(更具体地说,也就是浏览器位置和实际地址)。本文前面的图 2 已经展示了结合到您的首选项页面中的图形化输入工具。
为创建输入区域,使用您自己的代码替换所生成的 createFieldEditors 方法(您必须在父类 FieldEditorPreferencePage 中覆盖此方法)。在以下代码中,我们通过编程的方式使用 StringFieldEditor Eclipse 部件添加了两个字段编辑器:一个字段编辑器用于捕获 Sametime 用户的实际地址,另外一个用于捕获其浏览器位置。
public void createFieldEditors() { addField( new StringFieldEditor(PreferenceConstants.MY_LOCATION, "My Location:", getFieldEditorParent())); addField( new StringFieldEditor(PreferenceConstants.BROWSER_LOCATION, "Browser Path:", getFieldEditorParent())); } public void init(IWorkbench workbench) {}
| 第1页: 概述与Eclipse 首选项 | 第2页: 更改目标平台、创建插件项目及设置插... |
| 第3页: 通过首选项页面设置首选项 | 第4页: MapUtilities 类 |
| 第5页: 扩展和扩展点 | 第6页: Eclipse平台内测试及部署到Lotus Samet... |
| 第7页: 第7页 | 第8页: 结束语 |