diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/opentype/OpenTypeAction.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/opentype/OpenTypeAction.java index 13ec53d6a5f..9f1cfe52a65 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/opentype/OpenTypeAction.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/opentype/OpenTypeAction.java @@ -16,9 +16,12 @@ import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.PartInitException; @@ -28,12 +31,13 @@ import org.eclipse.cdt.core.browser.ITypeInfo; import org.eclipse.cdt.core.browser.ITypeReference; import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.ITranslationUnit; -import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.internal.ui.util.EditorUtility; public class OpenTypeAction implements IWorkbenchWindowActionDelegate { + private IWorkbenchWindow fWorkbenchWindow; + public OpenTypeAction() { super(); } @@ -45,6 +49,7 @@ public class OpenTypeAction implements IWorkbenchWindowActionDelegate { */ public void run(IAction action) { OpenTypeDialog dialog = new OpenTypeDialog(getShell()); + configureDialog(dialog); int result = dialog.open(); if (result != IDialogConstants.OK_ID) return; @@ -67,8 +72,26 @@ public class OpenTypeAction implements IWorkbenchWindowActionDelegate { } } + private void configureDialog(OpenTypeDialog dialog) { + if (fWorkbenchWindow != null) { + IWorkbenchPage page= fWorkbenchWindow.getActivePage(); + if (page != null) { + IWorkbenchPart part= page.getActivePart(); + if (part instanceof ITextEditor) { + ISelection sel= ((ITextEditor) part).getSelectionProvider().getSelection(); + if (sel instanceof ITextSelection) { + String txt= ((ITextSelection) sel).getText(); + if (txt.length() > 0 && txt.length() < 80) { + dialog.setFilter(txt, true); + } + } + } + } + } + } + protected Shell getShell() { - return CUIPlugin.getActiveWorkbenchShell(); + return fWorkbenchWindow.getShell(); } /** @@ -127,6 +150,7 @@ public class OpenTypeAction implements IWorkbenchWindowActionDelegate { * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose() */ public void dispose() { + fWorkbenchWindow= null; } /* @@ -135,6 +159,7 @@ public class OpenTypeAction implements IWorkbenchWindowActionDelegate { * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(org.eclipse.ui.IWorkbenchWindow) */ public void init(IWorkbenchWindow window) { + fWorkbenchWindow= window; } /* diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/opentype/OpenTypeDialog.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/opentype/OpenTypeDialog.java index f6ef53ea053..385c11b52a9 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/opentype/OpenTypeDialog.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/opentype/OpenTypeDialog.java @@ -116,7 +116,7 @@ public class OpenTypeDialog extends TypeSelectionDialog { } protected void handleEmptyList() { - // override super-class behaviour with no-op + update(getFilter()); } protected Text createFilterText(Composite parent) { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHMessages.java index 1adb4ce31e6..4d433f3894e 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHMessages.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHMessages.java @@ -53,6 +53,9 @@ public class CHMessages extends NLS { public static String OpenCallHierarchyAction_tooltip; public static String OpenElementInCallHierarchyAction_errorDlgTitle; public static String OpenElementInCallHierarchyAction_errorNoDefinition; + public static String OpenElementInCallHierarchyAction_message; + public static String OpenElementInCallHierarchyAction_title; + public static String OpenElementInCallHierarchyAction_upperListLabel; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, CHMessages.class); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHMessages.properties index a3b26e9e052..c4c884927d0 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHMessages.properties +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/CHMessages.properties @@ -45,4 +45,7 @@ OpenCallHierarchyAction_tooltip=Open Call Hierarchy CallHierarchyUI_label=Open Call Hierarchy CallHierarchyUI_selectMessage=Select one element from the list OpenElementInCallHierarchyAction_errorDlgTitle=Open Element in Call Hierarchy +OpenElementInCallHierarchyAction_title=Open Element in Call Hierarchy +OpenElementInCallHierarchyAction_upperListLabel=&Matching Elements: +OpenElementInCallHierarchyAction_message=&Choose an element (? = any character, * = any string): OpenElementInCallHierarchyAction_errorNoDefinition=Could not locate definition of element '{0}' diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/OpenElementInCallHierarchyAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/OpenElementInCallHierarchyAction.java index e0fb191a133..824d6700229 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/OpenElementInCallHierarchyAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/callhierarchy/OpenElementInCallHierarchyAction.java @@ -14,11 +14,15 @@ package org.eclipse.cdt.internal.ui.callhierarchy; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; +import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.cdt.core.browser.ITypeInfo; import org.eclipse.cdt.core.browser.ITypeReference; @@ -65,6 +69,25 @@ public class OpenElementInCallHierarchyAction implements IWorkbenchWindowActionD private void configureDialog(OpenTypeDialog dialog) { dialog.setVisibleTypes(VISIBLE_TYPES); + dialog.setTitle(CHMessages.OpenElementInCallHierarchyAction_title); + dialog.setUpperListLabel(CHMessages.OpenElementInCallHierarchyAction_upperListLabel); + dialog.setMessage(CHMessages.OpenElementInCallHierarchyAction_message); + + if (fWorkbenchWindow != null) { + IWorkbenchPage page= fWorkbenchWindow.getActivePage(); + if (page != null) { + IWorkbenchPart part= page.getActivePart(); + if (part instanceof ITextEditor) { + ISelection sel= ((ITextEditor) part).getSelectionProvider().getSelection(); + if (sel instanceof ITextSelection) { + String txt= ((ITextSelection) sel).getText(); + if (txt.length() > 0 && txt.length() < 80) { + dialog.setFilter(txt, true); + } + } + } + } + } } private Shell getShell() { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/Messages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/Messages.java index e8768c8b3a5..bcf920c7f35 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/Messages.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/Messages.java @@ -19,6 +19,9 @@ public class Messages extends NLS { public static String OpenTypeHierarchyAction_tooltip; public static String OpenTypeInHierarchyAction_errorNoDefinition; public static String OpenTypeInHierarchyAction_errorTitle; + public static String OpenTypeInHierarchyAction_message; + public static String OpenTypeInHierarchyAction_title; + public static String OpenTypeInHierarchyAction_upperListLabel; public static String THGraph_error_elementNotFound; public static String THHierarchyModel_errorComputingHierarchy; public static String THHierarchyModel_Job_title; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/OpenTypeInHierarchyAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/OpenTypeInHierarchyAction.java index bcd047e36db..e9138a2d695 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/OpenTypeInHierarchyAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/OpenTypeInHierarchyAction.java @@ -14,11 +14,15 @@ package org.eclipse.cdt.internal.ui.typehierarchy; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; +import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.cdt.core.browser.ITypeInfo; import org.eclipse.cdt.core.browser.ITypeReference; @@ -65,6 +69,25 @@ public class OpenTypeInHierarchyAction implements IWorkbenchWindowActionDelegate private void configureDialog(OpenTypeDialog dialog) { dialog.setVisibleTypes(VISIBLE_TYPES); + dialog.setTitle(Messages.OpenTypeInHierarchyAction_title); + dialog.setUpperListLabel(Messages.OpenTypeInHierarchyAction_upperListLabel); + dialog.setMessage(Messages.OpenTypeInHierarchyAction_message); + + if (fWorkbenchWindow != null) { + IWorkbenchPage page= fWorkbenchWindow.getActivePage(); + if (page != null) { + IWorkbenchPart part= page.getActivePart(); + if (part instanceof ITextEditor) { + ISelection sel= ((ITextEditor) part).getSelectionProvider().getSelection(); + if (sel instanceof ITextSelection) { + String txt= ((ITextSelection) sel).getText(); + if (txt.length() > 0 && txt.length() < 80) { + dialog.setFilter(txt, true); + } + } + } + } + } } private Shell getShell() { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/messages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/messages.properties index 240821f4213..982e464d8e0 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/messages.properties +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/typehierarchy/messages.properties @@ -52,6 +52,9 @@ TypeHierarchyUI_SelectFromList=Select one element from the list OpenTypeHierarchyAction_label=Open Type Hierarchy OpenTypeHierarchyAction_tooltip=Open Type Hierarchy OpenTypeInHierarchyAction_errorTitle=Open Type in Hierarchy +OpenTypeInHierarchyAction_title=Open Type in Hierarchy +OpenTypeInHierarchyAction_message=&Choose a type (? = any character, * = any string): THInformationControl_regularTitle=Type Hierarchy of {0} THInformationControl_showDefiningTypesTitle=Types defining or implementing {0} OpenTypeInHierarchyAction_errorNoDefinition=Could not locate definition of type '{0}' +OpenTypeInHierarchyAction_upperListLabel=&Matching Types: