快速业务通道

扩展Eclipse的Java开发工具 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
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>

扩展Eclipse的Java开发工具(8)

时间:2011-02-23 IBM Dan Kehn

扩展点命名为 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 ),但是它们拥有用来理解底层限制的实现类是不同的。另一个示例是,有一个表示 Java 编译单元的实现类,它派生自 Package Explorer 所显示的 JAR 文件的 .class 文件,还有另一个类表示直接派生自 .java 文件的编译单元。后一个实现将允许进行一些前者所不允许的修改,而它们 API 的共享部分是由接口 ICompilationUnit 表示的。

您以前在编辑 Java 源代码时,一定会观察到:在您输入方法特征符时 Outline 视图进行了更新(如果您没有注意到,那就试一下!)。这个示例说明了 JDT 如何在不同的区域暂放其“未提交的更改”,这与处理那些已保存、编译和集成到 Java 模型中的更改不同。有些视图(象 Java 编辑器的 Outline 视图)知道未提交的更改和已提交的更改,而其它象 Navigator 这样的视图只关心已保存到文件系统的已提交更改。

随后,我们所提供的用来修改 Java 成员的操作必须(至少在某种程度上)知道在什么上下文中调用它。即,它必须识别出某些所选成员是可修改的(那些位于 Java 编辑器的 Outline 视图中的成员),而另一些成员是不可以修改的(存储在 JAR 文件中以及显示在 Package Explorer 中的 .class 文件中的成员)。记住这一点,让我们继续下一个问题。

如何通过编程更改 JDT 模型?

如果您在前面的“旅行”中稍作了研究,那么可能已经注意到 IMember 、 IJavaElement 以及我们的操作所看到的由所选的与 Java 相关的项实现的作为大部分接口的那部分都没有 setXXX 方法。那么如何修改这些接

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号