要为用户提供丰富的、易于使用的功能,工具应该提供可以通过启动参数访问的、或者可以通过 GUI(它不是编辑器的核心图形界面的一部分)访问的可配置的选项。在用于 Eclipse Platform 的插件的情况中,强烈推荐通过 Platform 的 Preference Page 框架(Window -> Preferences)对这些选项进行配置。
为了举例起见,我们将 Ed 的颜色作为一个使用 Platform 首选项页面的可配置的选项来控制。
在插件清单文件中添加一个首选项页面扩展点
在 Eclipse Platform 中,首选项页面被定义为一个扩展点。要使用它,请将它添加到插件清单文件编辑器中,或者将下列代码放入 plugin.xml 中:
清单 5. 将首选项页面添加到 plugin.xml
2 id="org.eclipse.jumpstart.editorintegration.pref"
3 name="Ed Preference"
4 point="org.eclipse.ui.preferencePages">
5 <page
6 name="Swing Editor Preference Page"
7 class="org.eclipse.jumpstart.editorintegration.EdPreferencePage1"
8 id="Swing Editor Preference Page"
9 </page>
10 </extension>
11
首选项页面类
首选项页面继承了 org.eclipse.jface.preference.PreferencePage 。在这个示例中,简单的首选项页面由三个最大值为 255 的滑动条(slider bar)组成,表示 Ed 的 java.awt.Color 对象的颜色(红、绿和蓝)。
在插件项目中创建清单文件中指定的类 org.eclipse.jumpstart.editorintegration.EdPreferencePage1 。这个类必须继承 org.eclipse.jface.preference.PreferencePage 并实现接口 org.eclipse.ui.IWorkbenchPreferencePage 。
首选项页面呈现出与编辑器启动程序类似的编码问题:JFace/SWT 将如何与 Swing 通信?幸运的是,同样的方式适用。例如, performApply() 方法可能看上去像这样:
清单 6. performApply() 方法
2 int red = redSWTSlider.getSelection();
3 int green = greenSWTSlider.getSelection();
4 int blue = blueSWTSlider.getSelection();
5
6 java.awt.Color newColor = new java.awt.Color(red, green, blue);
7 EditorintegrationPlugin.getDefault().getEd().getContentPane().setBackground(
8 newColor);
9 }
10
插件应该使用 Platform 的 Preference Store 机制存储已配置的值,任何其他的插件也应该这么做。 performOk() 方法可能看上去像这样:
清单 7. performOk() 方法
2 getPreferenceStore().setValue("redValue", redSWTSlider.getSelection();
3 getPreferenceStore().setValue("greenValue", greenSWTSlider.getSelection());
4 getPreferenceStore().setValue("blueValue", blueSWTSlider.getSelection());
5 return true;
6 }
7
图 4中显示了从首选项页面控制 Swing 编辑器的颜色。
图 4. 从首选项页面控制 Swing 编辑器的颜色