/** @see IEditorActionDelegate#run */ public void run(IAction action) { try { clearErrorMessage(); if (editor instanceof JavaEditor) { try { IJavaElement[] editorElements = SelectionConverter.codeResolve((JavaEditor) editor); IJavaElement[] elements = internalSearch(editorElements, getProgressMonitor()); if (elements != null) { if (elements.length == 1) { jumpToElement(elements[0]); } else if (elements.length > 1) { selectElementToJumpTo(elements); } else { showInfoMessage(getNoResultsMessage()); } } } catch (JavaModelException e) { ImplementorsUI.log(e); } } } catch (RuntimeException e) { ImplementorsUI.log(e); } }
/** * Select the IJavaElement to jump to from a list of choices. * * @param implementors */ private void selectElementToJumpTo(IJavaElement[] implementors) { ElementListSelectionDialog dialog = new ElementListSelectionDialog( ImplementorsUI.getInstance().getWorkbench().getActiveWorkbenchWindow().getShell(), new AppearanceAwareLabelProvider( AppearanceAwareLabelProvider.DEFAULT_TEXTFLAGS | JavaElementLabels.ALL_POST_QUALIFIED | JavaElementLabels.APPEND_ROOT_PATH, AppearanceAwareLabelProvider.DEFAULT_IMAGEFLAGS)); dialog.setTitle(getSelectMethodTitle()); dialog.setMessage(getSelectMethodMessage()); dialog.setElements(implementors); dialog.setEmptySelectionMessage(getEmptySelectionMessage()); dialog.setMultipleSelection(false); dialog.setBlockOnOpen(true); dialog.setDialogBoundsSettings( ImplementorsUI.getInstance().getDialogSettings(), ElementListSelectionDialog.DIALOG_PERSISTSIZE); if (dialog.open() == IDialogConstants.CANCEL_ID) return; Object[] selectedImplementors = dialog.getResult(); if (selectedImplementors != null && selectedImplementors.length == 1) { IJavaElement element = (IJavaElement) selectedImplementors[0]; jumpToElement(element); } }
private void jumpToElement(IJavaElement element) { if (element != null) { try { IEditorPart methodEditor = ImplementorsUtility.openInEditor(element, true); if (methodEditor != null) { JavaUI.revealInEditor(methodEditor, element); } else { showErrorMessage( ImplementorsMessages.getString( "AbstractGotoActionDelegate.error_opening_editor")); //$NON-NLS-1$ } } catch (JavaModelException e) { ImplementorsUI.log(e); } catch (PartInitException e) { ImplementorsUI.log(e); } } }