技术开发 频道

将基于 Swing 的开发工具插入 Eclipse 中

  要为用户提供丰富的、易于使用的功能,工具应该提供可以通过启动参数访问的、或者可以通过 GUI(它不是编辑器的核心图形界面的一部分)访问的可配置的选项。在用于 Eclipse Platform 的插件的情况中,强烈推荐通过 Platform 的 Preference Page 框架(Window -> Preferences)对这些选项进行配置。

  为了举例起见,我们将 Ed 的颜色作为一个使用 Platform 首选项页面的可配置的选项来控制。

  在插件清单文件中添加一个首选项页面扩展点

  在 Eclipse Platform 中,首选项页面被定义为一个扩展点。要使用它,请将它添加到插件清单文件编辑器中,或者将下列代码放入 plugin.xml 中:

  清单 5. 将首选项页面添加到 plugin.xml

1 <extension
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() 方法

1 protected void 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() 方法

1 public boolean 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 编辑器的颜色

0
相关文章