扩展Eclipse的Java开发工具(三) (1)
[ 来源:互网络 | 更新日期:2007-09-26 11:55:59 | 浏览次数:13971]
简介:ibm
如何扩展 JDT 的特定元素的用户界面(象 Outline 视图中的成员)?扩展视图还是它们的底层模型?
简单的“Hello, World”示例显示了添加菜单选项只需要在插件清单文件中添加几行 XML()以及一个处理实际操作的类(com.ibm.lab.helloworld.SampleAction)。向视图的下拉菜单、公共编辑器的工具栏以及弹出菜单添加操作基本上很简单。所提供的弹出菜单归结为两类:一类只与视图相关而与所选的对象无关(也就是,对视图的“空白处”单击鼠标右键通常会显示的“缺省”弹出菜单),另一类则更常见,它们与应用于所选对象的选项相关。在我们的例子中,我们希望目标只是具体选择的对象,所以通过在插件清单文件中定义一个扩展,我们将提供的操作对象提供给这些对象的弹出菜单(对下面几个标识符进行了缩写,以获得更佳的格式;用‘…’表示),如清单 8 所示。
清单 8. 修饰符操作
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
objectClass="org.eclipse.jdt.core.IMember"
id="...imember">
<menu
label="Soln: Modifiers"
path="group.reorganize"
id="...imember.modifiers">
<separator name="group1"/>
<separator name="group2"/>
</menu>
<action
label="Private"
menubarPath="...imember.modifiers/group1"
class="...jdt.excerpt.MakeIMemberPrivateAction"
id="...imember.makeprivate">
</action>
<action
label="Protected"
menubarPath="...imember.modifiers/group1"
class="...jdt.excerpt.MakeIMemberProtectedAction"
id="...imember.makeprotected">
</action>
...all menu choices not shown...
</objectContribution>
</extension>
扩展点命名为 org.eclipse.ui.popupMenus,顾名思义,它定义了向出现在工作台中的弹出菜单提供的对象。这个特殊示例只提供给明确选择的对象,即实现 IMember 接口的对象(请回忆一下 Java 语言规范中的定义,成员包含方法和字段)。我们的研究没有白费;我们得到了当前问题的答案,我们差不多准备好回答下一个问题了。
在这样做之前,此时请注意,我们找到的用于简单“Hello, World”操作示例的模式将对所提供的其它菜单操作进行重复。即,将把选择更改告知 class 属性中指定的类(通过其 selectionChanged 方法),并还将告知它用户何时选择菜单选项(通过其 run 方法)。我们“旅行”的用户界面部分快要结束了;更困难的部分,也是影响我们所期望更改的部分还在前面。正如下一个问题所说的那样,在继续之前只要做一两次观察。
Package Explorer 中显示的元素和其它视图(如 Outline 视图)中显示的相同元素之间有什么关系?我们的扩展是否需要知道它们之间的任何区别?
您可能已经注意到,当您在 Outline 视图和 Hierarchy 视图中选择了一个方法时,所选对象的类并非总是相同的。例如,如果您在 Package Explorer 中展开一个库(JAR 文件)的内容,随后选择了一个类(或方法),那么它也不会是 Java 编辑器的 Outline 视图中同一选择的那个类。到底怎么回事?
这里,我们正在观察 JDT 的 Java 模型中“可编辑的”部分和始终为只读的部分之间的差别。这两部分 Java 模型都实现了公共接口(象 IMember),但是它们拥有用来理解底层限制


您的位置:
