onChanged 方法,浏览 selection 参数的接口 ISelection 的层次结构。其层次结构表明它的通用子类型接口并不多,只有 IStructuredSelection (用于列表)和 ITextSelection 。通过输出所选的类,我们可以使 selectionChanged 方法稍微更智能一点。如清单 5 所示修改 selectionChanged 方法。
清单 5. selectionChanged 方法,第二次修改
public void selectionChanged(IAction action, ISelection selection) {
System.out.println("==========> selectionChanged");
if (selection != null) {
if (selection instanceof IStructuredSelection) {
IStructuredSelection ss = (IStructuredSelection) selection;
if (ss.isEmpty())
System.out.println("<empty selection>");
else
System.out.println("First selected element is " + ss.getFirstElement().getClass());
} else if (selection instanceof ITextSelection) {
ITextSelection ts = (ITextSelection) selection;
System.out.println("Selected text is <" + ts.getText() + ">");
}
} else {
System.out.println("<empty selection>");
}
}
同样,请记住关闭运行时实例,然后重新启动。现在当您选择用户界面的各种元素时,它们是不是提供了更多信息,如清单 6 所示。
清单 6. selectionChanged 输出,第二次修改
----selected some methods in the Outline view
==========> selectionChanged
First selected element is class org.eclipse.jdt.internal.core.SourceMethod
==========> selectionChanged
First selected element is class org.eclipse.jdt.internal.core.SourceMethod
==========> selectionChanged
<selection is empty>
activated the Java editor
==========> selectionChanged
Selected text is <isChecked>
==========> selectionChanged
<selection is empty>
selected same methods and classes, package in the Package Explorer
==========> selectionChanged
First selected element is class org.eclipse.jdt.internal.core.SourceMethod
==========> selectionChanged
First selected element is class org.eclipse.jdt.internal.core.SourceType
==========> selectionChanged
First selected element is class org.eclipse.jdt.internal.core.PackageFragment
activated the Navigator view, selected some files, folders, and projects
==========> selectionChanged
First selected element is class org.eclipse.core.internal.resources.File
==========> selectionChanged
<selection is empty>
==========> selectionChanged
First selected element is class org.eclipse.core.internal.resources.File
==========> selectionChanged
First selected element is class org.eclipse.core.internal.resources.Project
==========> selectionChanged
First selected element is class org.eclipse.core.internal.resources.Folder
==========> selectionChanged
<selection is empty>
reactivated the Package Explorer,
selected some classes and methods in JARs of refere
|