public void run(IStructuredSelection selection) {
if (selection.size() != 1)
return;
Object input= selection.getFirstElement();
if (input instanceof LogicalPackage) {
IPackageFragment[] fragments= ((LogicalPackage)input).getFragments();
if (fragments.length == 0)
return;
input= fragments[0];
}
if (!(input instanceof IJavaElement)) {
IStatus status= createStatus(ActionMessages.OpenTypeHierarchyAction_messages_no_java_element);
ErrorDialog.openError(getShell(), getDialogTitle(), ActionMessages.OpenTypeHierarchyAction_messages_title, status);
return;
}
IJavaElement element= (IJavaElement) input;
if (!ActionUtil.isProcessable(getShell(), element))
return;
List result= new ArrayList(1);
IStatus status= compileCandidates(result, element);
if (status.isOK()) {
run((IJavaElement[]) result.toArray(new IJavaElement[result.size()]));
} else {
ErrorDialog.openError(getShell(), getDialogTitle(), ActionMessages.OpenTypeHierarchyAction_messages_title, status);
}
}