商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文


通过首选项页面设置首选项

    在一个 Java 程序中,设置通常是在程序外部的属性文件中完成的。除此之外,基于 Eclipse 的应用程序还提供了一些扩展点,允许 Eclipse 开发人员为基于 Eclipse 的应用程序(在我们的例子中是 Lotus Sametime 客户机)的首选项添加一个首选项页面。在您的首选项页面中有两个首选项。第一个首选项是 Google 路线中的起点地址。第二个首选项是 Internet 浏览器的位置。例如,编辑浏览器位置,Sametime 用户可选择使用 Internet Explorer 或 Firefox 来显示路线和/或地图。

Google Map 首选项页面

    您将在一个名为 Google Map 的首选项页面中存储首选项,如图 8 所示。

首选项页面
图 8. 首选项页面

    要创建 Google Map 首选项页面,打开您的 META-INF/MANIFEST.MF 文件。选择 Extensions 选项卡并单击 Add 按钮打开 New Extension 窗口。在 New Extension 窗口中,选择 Extension Wizards 选项卡。在 Extension Wizards 选项卡的右窗格中选择 Preference Page 扩展模板并单击 Next。参见图 9。

New Extension 向导
图 9. New Extension 向导

    这将为您的首选项页面创建一个模板,您可按照自己的需求修改此模板。将首选项页面的类名设置为 GMapPreferencePage。首选项页面的名称设置为 Google Map。使用默认包名称 com.devworks.example.map.preferences 作为 Java 包名称,单击 Finish(参见图 10)。按 Ctrl+S 保存 Extensions 视图中的更改。

Preference Page 对话框
图 10. Preference Page 对话框

    在您创建模板时,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 2 3 4 5 6 7 8
©版权所有。未经许可,不得转载。
[责任编辑:郑重]
[an error occurred while processing this directive]