面的扩展如何知道类似于“选择”这样的基本事件?
工作台“选择”更改时会告知所提供的操作(象我们提供的菜单下拉选项)。这在 selectionChanged 方法前面的 Javadoc 注释中得到了确认。让我们修改这个方法以告知有关“选择”的更多信息。首先,如果您还没有关闭工作台的运行时实例,那么现在就关闭。然后对 selectionChanged 方法添加清单 3 中的代码。
清单 3. selectionChanged 方法,首次修改
public void selectionChanged(IAction action, ISelection selection) {
System.out.println("==========> selectionChanged");
System.out.println(selection);
}
有了这个调试代码,我们将看到选择了什么,并了解到有关什么使 Eclipse 工作的更多信息。保存该方法,然后重新启动运行时工作台。
重要:Eclipse 有一个延迟装入的策略,以在用户执行需要插件代码的操作时才装入插件。所以您必须 先选择 Sample Action 菜单选项,以在调用 selectionChanged 方法之前装入您的插件。
现在选择其它东西,如编辑器中的文本、Navigator 中的文件,当然还有 Outline 视图中的成员(回忆一下:您必须创建一个 Java 项目和示例 Java 类来做到这一点,因为运行时实例使用不同的工作空间)。清单 4 显示了您将在 Eclipse 的 开发实例的控制台中看到的某个示例输出。
清单 4. selectionChanged 输出,首次修改
==========> selectionChanged
[package com.ibm.lab.soln.jdt.excerpt [in [Working copy] ChangeIMemberFlagAction.java
[in com.ibm.lab.soln.jdt.excerpt [in src [in com.ibm.lab.soln.jdt.excerpt]]]]]
==========> selectionChanged
<empty selection>
==========> selectionChanged
org.eclipse.jface.text.TextSelection@9fca283
==========> selectionChanged
<empty selection>
==========> selectionChanged
[package com.ibm.lab.soln.jdt.excerpt [in [Working copy] ChangeIMemberFlagAction.java
[in com.ibm.lab.soln.jdt.excerpt [in src [in com.ibm.lab.soln.jdt.excerpt]]]]]
==========> selectionChanged
[IMember[] members [in ChangeIMemberFlagAction [in [Working copy] ChangeIMemberFlagAction.java
[in com.ibm.lab.soln.jdt.excerpt [in src [in com.ibm.lab.soln.jdt.excerpt]]]]]]
==========> selectionChanged
<empty selection>
==========> selectionChanged
[ChangeIMemberFlagAction.java [in com.ibm.lab.soln.jdt.excerpt
[in src [in com.ibm.lab.soln.jdt.excerpt]]]
package com.ibm.lab.soln.jdt.excerpt
import org.eclipse.jdt.core.Flags
import org.eclipse.jdt.core.IBuffer
...lines omitted...
void selectionChanged(IAction, ISelection)]
==========> selectionChanged
[boolean isChecked(IAction, IMember) [in ToggleIMemberFinalAction
[in ToggleIMemberFinalAction.java [in com.ibm.lab.soln.jdt.excerpt
[in src [in com.ibm.lab.soln.jdt.excerpt]]]]]]
扩展Eclipse的Java开发工具(6)
时间:2011-02-23 IBM Dan Kehn
唔,这不如我们所希望的那么有启发性。很明显,这个“选择”不象 String 的实例那么基本,但没有明示涉及了什么类,因为这些类很明显覆盖了它们的缺省 toString 方法。如果不用多做一点研究就可以明白这些类向我们显示的信息,那我们就轻松了,但目前我们还没有达到这种程度。回到 selecti |