### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.debug.ui Index: ui/org/eclipse/jdt/internal/debug/ui/breakpoints/AddExceptionAction.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/breakpoints/AddExceptionAction.java,v retrieving revision 1.16 diff -u -r1.16 AddExceptionAction.java --- ui/org/eclipse/jdt/internal/debug/ui/breakpoints/AddExceptionAction.java 17 Jul 2007 17:14:14 -0000 1.16 +++ ui/org/eclipse/jdt/internal/debug/ui/breakpoints/AddExceptionAction.java 4 Sep 2008 15:54:02 -0000 @@ -14,6 +14,9 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; @@ -39,17 +42,17 @@ import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.ISelection; -import org.eclipse.ui.IViewActionDelegate; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.SelectionDialog; +import org.eclipse.ui.handlers.HandlerUtil; /** * The workbench menu action for adding an exception breakpoint */ -public class AddExceptionAction implements IViewActionDelegate, IWorkbenchWindowActionDelegate { +public class AddExceptionAction extends AbstractHandler implements IWorkbenchWindowActionDelegate { public static final String CAUGHT_CHECKED = "caughtChecked"; //$NON-NLS-1$ public static final String UNCAUGHT_CHECKED = "uncaughtChecked"; //$NON-NLS-1$ @@ -61,33 +64,42 @@ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) */ public void run(IAction action) { - try { - IDialogSettings settings = getDialogSettings(); - AddExceptionTypeDialogExtension ext = new AddExceptionTypeDialogExtension(settings.getBoolean(CAUGHT_CHECKED), settings.getBoolean(UNCAUGHT_CHECKED)); - SelectionDialog dialog = JavaUI.createTypeDialog(JDIDebugUIPlugin.getActiveWorkbenchShell(), - fWindow, - SearchEngine.createWorkspaceScope(), - IJavaElementSearchConstants.CONSIDER_CLASSES, false, "*Exception*", ext); //$NON-NLS-1$ - dialog.setTitle(BreakpointMessages.AddExceptionAction_0); - dialog.setMessage(BreakpointMessages.AddExceptionAction_1); - dialog.create(); - PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(), IJavaDebugHelpContextIds.ADD_EXCEPTION_DIALOG); - if(dialog.open() == IDialogConstants.OK_ID) { - boolean caught = ext.shouldHandleCaughtExceptions(), - uncaught = ext.shouldHandleUncaughtExceptions(); - Object[] results = dialog.getResult(); - if(results != null && results.length > 0) { - try { - createBreakpoint(caught, uncaught, (IType)results[0]); - settings.put(CAUGHT_CHECKED, caught); - settings.put(UNCAUGHT_CHECKED, uncaught); - } - catch (CoreException e) {JDIDebugUIPlugin.statusDialog(e.getStatus());} - } - - } - } - catch (JavaModelException e1) {} + doRun(fWindow); + } + + public Object execute(ExecutionEvent event) throws ExecutionException { + doRun(HandlerUtil.getActiveWorkbenchWindow(event)); + return null; + } + + public void doRun(IWorkbenchWindow window) { + try { + IDialogSettings settings = getDialogSettings(); + AddExceptionTypeDialogExtension ext = new AddExceptionTypeDialogExtension(settings.getBoolean(CAUGHT_CHECKED), settings.getBoolean(UNCAUGHT_CHECKED)); + SelectionDialog dialog = JavaUI.createTypeDialog(JDIDebugUIPlugin.getActiveWorkbenchShell(), + window, + SearchEngine.createWorkspaceScope(), + IJavaElementSearchConstants.CONSIDER_CLASSES, false, "*Exception*", ext); //$NON-NLS-1$ + dialog.setTitle(BreakpointMessages.AddExceptionAction_0); + dialog.setMessage(BreakpointMessages.AddExceptionAction_1); + dialog.create(); + PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(), IJavaDebugHelpContextIds.ADD_EXCEPTION_DIALOG); + if(dialog.open() == IDialogConstants.OK_ID) { + boolean caught = ext.shouldHandleCaughtExceptions(), + uncaught = ext.shouldHandleUncaughtExceptions(); + Object[] results = dialog.getResult(); + if(results != null && results.length > 0) { + try { + createBreakpoint(caught, uncaught, (IType)results[0]); + settings.put(CAUGHT_CHECKED, caught); + settings.put(UNCAUGHT_CHECKED, uncaught); + } + catch (CoreException e) {JDIDebugUIPlugin.statusDialog(e.getStatus());} + } + + } + } + catch (JavaModelException e1) {} } /** Index: ui/org/eclipse/jdt/internal/debug/ui/JDIDebugUIPlugin.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIDebugUIPlugin.java,v retrieving revision 1.141 diff -u -r1.141 JDIDebugUIPlugin.java --- ui/org/eclipse/jdt/internal/debug/ui/JDIDebugUIPlugin.java 6 May 2008 21:14:19 -0000 1.141 +++ ui/org/eclipse/jdt/internal/debug/ui/JDIDebugUIPlugin.java 4 Sep 2008 15:54:02 -0000 @@ -127,6 +127,8 @@ private IDebugModelPresentation fUtilPresentation; + private ViewFilterManager fViewFilterManager; + /** * Java Debug UI listeners */ @@ -394,6 +396,8 @@ } }); JavaDebugOptionsManager.getDefault().startup(); + + fViewFilterManager = new ViewFilterManager(); } /* (non-Javadoc) @@ -418,6 +422,11 @@ fTextTools.dispose(); } ResourcesPlugin.getWorkspace().removeSaveParticipant(this); + + if (fViewFilterManager != null) { + fViewFilterManager.dispose(); + fViewFilterManager = null; + } } finally { super.stop(context); } Index: ui/org/eclipse/jdt/internal/debug/ui/variables/VariableOptionsAction.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/VariableOptionsAction.java,v retrieving revision 1.9 diff -u -r1.9 VariableOptionsAction.java --- ui/org/eclipse/jdt/internal/debug/ui/variables/VariableOptionsAction.java 3 Apr 2007 20:23:52 -0000 1.9 +++ ui/org/eclipse/jdt/internal/debug/ui/variables/VariableOptionsAction.java 4 Sep 2008 15:54:02 -0000 @@ -10,55 +10,22 @@ *******************************************************************************/ package org.eclipse.jdt.internal.debug.ui.variables; -import org.eclipse.core.runtime.Preferences.IPropertyChangeListener; -import org.eclipse.core.runtime.Preferences.PropertyChangeEvent; -import org.eclipse.debug.ui.IDebugView; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; import org.eclipse.jdt.internal.debug.ui.SWTFactory; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.ui.IViewActionDelegate; -import org.eclipse.ui.IViewPart; /** * Action which opens preference settings for Java variables. */ -public class VariableOptionsAction implements IViewActionDelegate, IPropertyChangeListener { - - private IViewPart fPart; +public class VariableOptionsAction extends AbstractHandler { - /* (non-Javadoc) - * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart) - */ - public void init(IViewPart view) { - fPart = view; + public Object execute(ExecutionEvent event) throws ExecutionException { + SWTFactory.showPreferencePage("org.eclipse.jdt.debug.ui.JavaDetailFormattersPreferencePage", //$NON-NLS-1$ + new String[] {"org.eclipse.jdt.debug.ui.JavaDetailFormattersPreferencePage", //$NON-NLS-1$ + "org.eclipse.jdt.debug.ui.JavaLogicalStructuresPreferencePage", //$NON-NLS-1$ + "org.eclipse.jdt.debug.ui.heapWalking", //$NON-NLS-1$ + "org.eclipse.jdt.debug.ui.JavaPrimitivesPreferencePage"}); //$NON-NLS-1$ + return null; } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) - */ - public void run(IAction action) { - SWTFactory.showPreferencePage("org.eclipse.jdt.debug.ui.JavaDetailFormattersPreferencePage", //$NON-NLS-1$ - new String[] {"org.eclipse.jdt.debug.ui.JavaDetailFormattersPreferencePage", //$NON-NLS-1$ - "org.eclipse.jdt.debug.ui.JavaLogicalStructuresPreferencePage", //$NON-NLS-1$ - "org.eclipse.jdt.debug.ui.heapWalking", //$NON-NLS-1$ - "org.eclipse.jdt.debug.ui.JavaPrimitivesPreferencePage"}); //$NON-NLS-1$ - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) - */ - public void selectionChanged(IAction action, ISelection selection) { - } - - /* (non-Javadoc) - * @see org.eclipse.core.runtime.Preferences.IPropertyChangeListener#propertyChange(org.eclipse.core.runtime.Preferences.PropertyChangeEvent) - */ - public void propertyChange(PropertyChangeEvent event) { - if (fPart instanceof IDebugView) { - IDebugView view = (IDebugView) fPart; - view.getViewer().refresh(); - } - - } - } Index: ui/org/eclipse/jdt/internal/debug/ui/actions/ShowNullArrayEntriesAction.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ShowNullArrayEntriesAction.java,v retrieving revision 1.4 diff -u -r1.4 ShowNullArrayEntriesAction.java --- ui/org/eclipse/jdt/internal/debug/ui/actions/ShowNullArrayEntriesAction.java 24 Feb 2005 15:25:56 -0000 1.4 +++ ui/org/eclipse/jdt/internal/debug/ui/actions/ShowNullArrayEntriesAction.java 4 Sep 2008 15:54:02 -0000 @@ -12,6 +12,7 @@ import org.eclipse.debug.core.DebugException; +import org.eclipse.debug.ui.IDebugView; import org.eclipse.jdt.debug.core.IJavaDebugTarget; import org.eclipse.jdt.internal.debug.core.model.JDIArrayEntryVariable; import org.eclipse.jdt.internal.debug.ui.IJDIPreferencesConstants; @@ -34,22 +35,32 @@ return IJDIPreferencesConstants.PREF_SHOW_NULL_ARRAY_ENTRIES; } - /** - * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) - */ - public boolean select(Viewer viewer, Object parentElement, Object element) { - if (getValue()) { - // when on, filter nothing - return true; - } - if (element instanceof JDIArrayEntryVariable) { - JDIArrayEntryVariable variable = (JDIArrayEntryVariable)element; - try { - return !variable.getValue().equals(((IJavaDebugTarget)variable.getDebugTarget()).nullValue()); - } catch (DebugException e) { - JDIDebugUIPlugin.log(e); - } - } - return true; - } + private class ShowNullArrayEntriesFilter extends JDIViewerFilter { + ShowNullArrayEntriesFilter(IDebugView view) { + super(view); + } + + /** + * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + public boolean select(Viewer viewer, Object parentElement, Object element) { + if (getPreferenceValue()) { + // when on, filter nothing + return true; + } + if (element instanceof JDIArrayEntryVariable) { + JDIArrayEntryVariable variable = (JDIArrayEntryVariable)element; + try { + return !variable.getValue().equals(((IJavaDebugTarget)variable.getDebugTarget()).nullValue()); + } catch (DebugException e) { + JDIDebugUIPlugin.log(e); + } + } + return true; + } + } + + public static JDIViewerFilter getFilter(IDebugView view) { + return new ShowNullArrayEntriesAction().new ShowNullArrayEntriesFilter(view); + } } Index: ui/org/eclipse/jdt/internal/debug/ui/actions/ShowSystemThreadsAction.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ShowSystemThreadsAction.java,v retrieving revision 1.12 diff -u -r1.12 ShowSystemThreadsAction.java --- ui/org/eclipse/jdt/internal/debug/ui/actions/ShowSystemThreadsAction.java 30 Jul 2008 14:36:56 -0000 1.12 +++ ui/org/eclipse/jdt/internal/debug/ui/actions/ShowSystemThreadsAction.java 4 Sep 2008 15:54:02 -0000 @@ -15,17 +15,17 @@ import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.IDebugEventSetListener; +import org.eclipse.debug.ui.IDebugView; import org.eclipse.jdt.debug.core.IJavaThread; import org.eclipse.jdt.debug.ui.IJavaDebugUIConstants; import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin; import org.eclipse.jface.viewers.Viewer; -import org.eclipse.ui.IViewPart; /** * An action delegate that toggles the state of its viewer to * show/hide System Threads. */ -public class ShowSystemThreadsAction extends ViewFilterAction implements IDebugEventSetListener { +public class ShowSystemThreadsAction extends ViewFilterAction { /* (non-Javadoc) * @see org.eclipse.jdt.internal.debug.ui.actions.ThreadFilterAction#getPreferenceKey() @@ -37,84 +37,84 @@ /* (non-Javadoc) * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ - public boolean select(Viewer viewer, Object parentElement, Object element) { - if (!getValue()) { - - IJavaThread thread = getJavaThread(element); - - if (thread != null) { - try { - // Show only non-system threads and suspended threads. - return !thread.isSystemThread() || thread.isSuspended(); - } catch (DebugException e) { - } - } + private class ShowSystemThreadsFilter extends JDIViewerFilter implements IDebugEventSetListener { + ShowSystemThreadsFilter(IDebugView view) { + super(view); + DebugPlugin.getDefault().addDebugEventListener(this); } - return true; - } + + public boolean select(Viewer viewer, Object parentElement, Object element) { + if (!getPreferenceValue()) { + IJavaThread thread = getJavaThread(element); - private IJavaThread getJavaThread(Object element) { - IJavaThread thread = null; - - if (element instanceof IJavaThread) - thread = (IJavaThread) element; - else if (element instanceof IAdaptable) - thread = (IJavaThread) ((IAdaptable)element).getAdapter(IJavaThread.class); - - return thread; - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart) - */ - public void init(IViewPart view) { - super.init(view); - DebugPlugin.getDefault().addDebugEventListener(this); - } - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate2#dispose() - */ - public void dispose() { - super.dispose(); - DebugPlugin.getDefault().removeDebugEventListener(this); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.core.IDebugEventSetListener#handleDebugEvents(org.eclipse.debug.core.DebugEvent[]) - */ - public void handleDebugEvents(DebugEvent[] events) { - if (getValue()) { - // if showing system threads, no need to worry about displaying/hiding - return; - } - for (int i = 0; i < events.length; i++) { - DebugEvent event = events[i]; - switch (event.getKind()) { - case DebugEvent.RESUME: - if (event.getDetail() == DebugEvent.CLIENT_REQUEST) { - // when a system thread resumes we need to refresh the viewer to re-filter it - refresh(event.getSource()); - } - break; - } - } + if (thread != null) { + try { + // Show only non-system threads and suspended threads. + return !thread.isSystemThread() || thread.isSuspended(); + } catch (DebugException e) { + } + } + } + return true; + } + + private IJavaThread getJavaThread(Object element) { + IJavaThread thread = null; + + if (element instanceof IJavaThread) + thread = (IJavaThread) element; + else if (element instanceof IAdaptable) + thread = (IJavaThread) ((IAdaptable)element).getAdapter(IJavaThread.class); + + return thread; + } + + public void dispose() { + super.dispose(); + DebugPlugin.getDefault().removeDebugEventListener(this); + } + + /* (non-Javadoc) + * @see org.eclipse.debug.core.IDebugEventSetListener#handleDebugEvents(org.eclipse.debug.core.DebugEvent[]) + */ + public void handleDebugEvents(DebugEvent[] events) { + if (getPreferenceValue()) { + // if showing system threads, no need to worry about displaying/hiding + return; + } + for (int i = 0; i < events.length; i++) { + DebugEvent event = events[i]; + switch (event.getKind()) { + case DebugEvent.RESUME: + if (event.getDetail() == DebugEvent.CLIENT_REQUEST) { + // when a system thread resumes we need to refresh the viewer to re-filter it + refresh(event.getSource()); + } + break; + } + } + } + + private void refresh(Object source) { + final IJavaThread thread = getJavaThread(source); + if (thread != null) { + try { + if (thread.isSystemThread()) { + Runnable r = new Runnable() { + public void run() { + getStructuredViewer().refresh(); + } + }; + JDIDebugUIPlugin.getStandardDisplay().asyncExec(r); + return; + } + } catch (DebugException e) { + } + } + } } - private void refresh(Object source) { - final IJavaThread thread = getJavaThread(source); - if (thread != null) { - try { - if (thread.isSystemThread()) { - Runnable r = new Runnable() { - public void run() { - getStructuredViewer().refresh(); - } - }; - JDIDebugUIPlugin.getStandardDisplay().asyncExec(r); - return; - } - } catch (DebugException e) { - } - } + public static JDIViewerFilter getFilter(IDebugView view) { + return new ShowSystemThreadsAction().new ShowSystemThreadsFilter(view); } } Index: ui/org/eclipse/jdt/internal/debug/ui/actions/ViewFilterAction.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ViewFilterAction.java,v retrieving revision 1.8 diff -u -r1.8 ViewFilterAction.java --- ui/org/eclipse/jdt/internal/debug/ui/actions/ViewFilterAction.java 4 Dec 2006 21:20:43 -0000 1.8 +++ ui/org/eclipse/jdt/internal/debug/ui/actions/ViewFilterAction.java 4 Sep 2008 15:54:02 -0000 @@ -11,173 +11,155 @@ package org.eclipse.jdt.internal.debug.ui.actions; +import java.util.Map; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; import org.eclipse.debug.ui.IDebugView; import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin; -import org.eclipse.jface.action.IAction; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.swt.widgets.Event; -import org.eclipse.ui.IActionDelegate2; -import org.eclipse.ui.IViewActionDelegate; -import org.eclipse.ui.IViewPart; +import org.eclipse.swt.custom.BusyIndicator; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchPartSite; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.commands.ICommandService; +import org.eclipse.ui.commands.IElementUpdater; +import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.ui.internal.services.IWorkbenchLocationService; +import org.eclipse.ui.menus.UIElement; /** * */ -public abstract class ViewFilterAction extends ViewerFilter implements IViewActionDelegate, IActionDelegate2 { - - private IViewPart fView; - private IAction fAction; - private IPropertyChangeListener fListener = new Updater(); - - class Updater implements IPropertyChangeListener { - - /* (non-Javadoc) - * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) - */ - public void propertyChange(PropertyChangeEvent event) { - if (event.getProperty().equals(getPreferenceKey()) || - event.getProperty().equals(getCompositeKey())) { - fAction.setChecked(getPreferenceValue()); - } - - } +public abstract class ViewFilterAction extends AbstractHandler implements IElementUpdater { - } - + /** + * Base class for viewer filters used in debug views. + */ + abstract public class JDIViewerFilter extends ViewerFilter { + + final private IDebugView fView; + private IPropertyChangeListener fListener = new Updater(); + + class Updater implements IPropertyChangeListener { + + /* (non-Javadoc) + * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) + */ + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals(getCompositeKey(fView.getSite()))) { + BusyIndicator.showWhile(fView.getSite().getShell().getDisplay(), new Runnable() { + public void run() { + getStructuredViewer().refresh(); + } + }); + } + } + } + + public JDIViewerFilter(IDebugView view) { + fView = view; + getPreferenceStore().addPropertyChangeListener(fListener); + } + + public void dispose() { + getPreferenceStore().removePropertyChangeListener(fListener); + } + + protected StructuredViewer getStructuredViewer() { + Viewer viewer = fView.getViewer(); + if (viewer instanceof StructuredViewer) { + return (StructuredViewer)viewer; + } + return null; + } + + protected IDebugView getView() { + return fView; + } + + /** + * Returns the value of this filters preference (on/off) for the given + * view. + * + * @param part + * @return boolean + */ + protected boolean getPreferenceValue() { + String key = getCompositeKey(fView.getSite()); + IPreferenceStore store = getPreferenceStore(); + boolean value = false; + if (store.contains(key)) { + value = store.getBoolean(key); + } else { + value = store.getBoolean(getPreferenceKey()); + } + return value; + } + } + public ViewFilterAction() { super(); } - /* (non-Javadoc) - * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart) - */ - public void init(IViewPart view) { - fView = view; - fAction.setChecked(getPreferenceValue()); - run(fAction); - getPreferenceStore().addPropertyChangeListener(fListener); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate2#init(org.eclipse.jface.action.IAction) - */ - public void init(IAction action) { - fAction = action; - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate2#dispose() - */ - public void dispose() { - getPreferenceStore().removePropertyChangeListener(fListener); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate2#runWithEvent(org.eclipse.jface.action.IAction, org.eclipse.swt.widgets.Event) - */ - public void runWithEvent(IAction action, Event event) { - run(action); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) - */ - public void run(IAction action) { - StructuredViewer viewer = getStructuredViewer(); - ViewerFilter[] filters = viewer.getFilters(); - ViewerFilter filter = null; - for (int i = 0; i < filters.length; i++) { - if (filters[i] == this) { - filter = filters[i]; - break; - } - } - if (filter == null) { - viewer.addFilter(this); - } else { - // only refresh is removing - adding will refresh automatically - viewer.refresh(); - } + public Object execute(ExecutionEvent event) throws ExecutionException { + IWorkbenchPart part = HandlerUtil.getActivePart(event); IPreferenceStore store = getPreferenceStore(); - String key = getView().getSite().getId() + "." + getPreferenceKey(); //$NON-NLS-1$ - store.setValue(key, action.isChecked()); + String key = getCompositeKey(part.getSite()); + boolean oldValue = store.getBoolean(key); + store.setValue(key, !oldValue); + + // Refresh other menu items using this command. + IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event); + ICommandService commandService = (ICommandService) window.getService(ICommandService.class); + commandService.refreshElements(event.getCommand().getId(), null); + + return null; } - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) - */ - public void selectionChanged(IAction action, ISelection selection) { - } + public void updateElement(UIElement element, Map parameters) { + IWorkbenchLocationService wls = (IWorkbenchLocationService) element + .getServiceLocator() + .getService(IWorkbenchLocationService.class); + + /*IWorkbenchPartSite partSite = (IWorkbenchPartSite) + element.getServiceLocator().getService(IWorkbenchPartSite.class);*/ + IWorkbenchPartSite partSite = wls.getPartSite(); + if (partSite != null) { + String key = getCompositeKey(partSite); + boolean value = getPreferenceStore().getBoolean(key); + element.setChecked(value); + } + } protected IPreferenceStore getPreferenceStore() { return JDIDebugUIPlugin.getDefault().getPreferenceStore(); } - - /** - * Returns the value of this filters preference (on/off) for the given - * view. - * - * @param part - * @return boolean - */ - protected boolean getPreferenceValue() { - String key = getCompositeKey(); - IPreferenceStore store = getPreferenceStore(); - boolean value = false; - if (store.contains(key)) { - value = store.getBoolean(key); - } else { - value = store.getBoolean(getPreferenceKey()); - } - return value; - } - + /** * Returns the key for this action's preference - * + * getView() * @return String */ protected abstract String getPreferenceKey(); - - /** - * Returns the key used by this action to store its preference value/setting. - * Based on a base key (suffix) and part id (prefix). - * - * @return preference store key - */ - protected String getCompositeKey() { - String baseKey = getPreferenceKey(); - String viewKey = getView().getSite().getId(); - return viewKey + "." + baseKey; //$NON-NLS-1$ - } - - protected IViewPart getView() { - return fView; - } - - protected StructuredViewer getStructuredViewer() { - IDebugView view = (IDebugView)getView().getAdapter(IDebugView.class); - if (view != null) { - Viewer viewer = view.getViewer(); - if (viewer instanceof StructuredViewer) { - return (StructuredViewer)viewer; - } - } - return null; - } - /** - * Returns whether this action is selected/checked. - * - * @return whether this action is selected/checked - */ - protected boolean getValue() { - return fAction.isChecked(); - } + /** + * Returns the key used by this action to store its preference value/setting. + * Based on a base key (suffix) and part id (prefix). + * + * @return preference store key + */ + protected String getCompositeKey(IWorkbenchPartSite site) { + String baseKey = getPreferenceKey(); + String viewKey = site.getId(); + return viewKey + "." + baseKey; //$NON-NLS-1$ + } + + } Index: ui/org/eclipse/jdt/internal/debug/ui/actions/ShowConstantsAction.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ShowConstantsAction.java,v retrieving revision 1.6 diff -u -r1.6 ShowConstantsAction.java --- ui/org/eclipse/jdt/internal/debug/ui/actions/ShowConstantsAction.java 18 Dec 2007 21:33:36 -0000 1.6 +++ ui/org/eclipse/jdt/internal/debug/ui/actions/ShowConstantsAction.java 4 Sep 2008 15:54:02 -0000 @@ -16,7 +16,7 @@ /** * Shows static final variables (constants) */ -public class ShowConstantsAction extends ToggleBooleanPreferenceAction { +public class ShowConstantsAction extends ViewFilterAction { public ShowConstantsAction() { super(); @@ -28,12 +28,4 @@ protected String getPreferenceKey() { return IJDIPreferencesConstants.PREF_SHOW_CONSTANTS; } - - /* (non-Javadoc) - * @see org.eclipse.jdt.internal.debug.ui.actions.ToggleBooleanPreferenceAction#getViewKey() - */ - protected String getViewKey() { - return getCompositeKey(); - } - } Index: ui/org/eclipse/jdt/internal/debug/ui/actions/ShowStaticVariablesAction.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ShowStaticVariablesAction.java,v retrieving revision 1.6 diff -u -r1.6 ShowStaticVariablesAction.java --- ui/org/eclipse/jdt/internal/debug/ui/actions/ShowStaticVariablesAction.java 18 Dec 2007 21:33:36 -0000 1.6 +++ ui/org/eclipse/jdt/internal/debug/ui/actions/ShowStaticVariablesAction.java 4 Sep 2008 15:54:02 -0000 @@ -16,23 +16,12 @@ /** * Shows non-final static variables */ -public class ShowStaticVariablesAction extends ToggleBooleanPreferenceAction { +public class ShowStaticVariablesAction extends ViewFilterAction { - public ShowStaticVariablesAction() { - super(); - } - - /* (non-Javadoc) + /* (non-Javadoc) * @see org.eclipse.jdt.internal.debug.ui.actions.ViewFilterAction#getPreferenceKey() */ protected String getPreferenceKey() { return IJDIPreferencesConstants.PREF_SHOW_STATIC_VARIABLES; } - - /* (non-Javadoc) - * @see org.eclipse.jdt.internal.debug.ui.actions.ToggleBooleanPreferenceAction#getViewKey() - */ - protected String getViewKey() { - return getCompositeKey(); - } } Index: ui/org/eclipse/jdt/internal/debug/ui/actions/ShowQualifiedAction.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ShowQualifiedAction.java,v retrieving revision 1.21 diff -u -r1.21 ShowQualifiedAction.java --- ui/org/eclipse/jdt/internal/debug/ui/actions/ShowQualifiedAction.java 27 Apr 2007 18:24:48 -0000 1.21 +++ ui/org/eclipse/jdt/internal/debug/ui/actions/ShowQualifiedAction.java 4 Sep 2008 15:54:02 -0000 @@ -11,16 +11,17 @@ package org.eclipse.jdt.internal.debug.ui.actions; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; import org.eclipse.debug.ui.IDebugModelPresentation; import org.eclipse.debug.ui.IDebugView; import org.eclipse.jdt.debug.core.JDIDebugModel; import org.eclipse.jdt.internal.debug.ui.IJDIPreferencesConstants; import org.eclipse.jdt.internal.debug.ui.JDIModelPresentation; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.custom.BusyIndicator; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.handlers.HandlerUtil; /** * An action delegate that toggles the state of its viewer to @@ -35,35 +36,28 @@ return IJDIPreferencesConstants.PREF_SHOW_QUALIFIED_NAMES; } - /** - * This method is not actually called - this action is not a filter. Instead - * it sets an attribute on the viewer's model presentation. - * - * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) - */ - public boolean select(Viewer viewer, Object parentElement, Object element) { - return true; - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) - */ - public void run(IAction action) { - final StructuredViewer viewer = getStructuredViewer(); - IDebugView view = (IDebugView)getView().getAdapter(IDebugView.class); - if (view != null) { - IDebugModelPresentation pres = view.getPresentation(JDIDebugModel.getPluginIdentifier()); - if (pres != null) { - pres.setAttribute(JDIModelPresentation.DISPLAY_QUALIFIED_NAMES, (getValue() ? Boolean.TRUE : Boolean.FALSE)); - BusyIndicator.showWhile(viewer.getControl().getDisplay(), new Runnable() { - public void run() { - viewer.refresh(); - IPreferenceStore store = getPreferenceStore(); - String key = getView().getSite().getId() + "." + getPreferenceKey(); //$NON-NLS-1$ - store.setValue(key, getValue()); - } - }); - } - } - } + public Object execute(ExecutionEvent event) throws ExecutionException { + super.execute(event); + + IWorkbenchPart part = HandlerUtil.getActivePart(event); + if (part != null) { + final IDebugView view = (IDebugView)part.getAdapter(IDebugView.class); + final StructuredViewer viewer = (StructuredViewer)view.getViewer(); + if (view != null) { + IDebugModelPresentation pres = view.getPresentation(JDIDebugModel.getPluginIdentifier()); + if (pres != null) { + boolean newValue = getPreferenceStore().getBoolean(getCompositeKey(view.getSite())); + pres.setAttribute(JDIModelPresentation.DISPLAY_QUALIFIED_NAMES, (newValue ? Boolean.TRUE : Boolean.FALSE)); + BusyIndicator.showWhile(viewer.getControl().getDisplay(), new Runnable() { + public void run() { + viewer.refresh(); + } + }); + } + } + } + + return null; + } + } Index: ui/org/eclipse/jdt/internal/debug/ui/actions/ShowMonitorThreadInformation.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ShowMonitorThreadInformation.java,v retrieving revision 1.6 diff -u -r1.6 ShowMonitorThreadInformation.java --- ui/org/eclipse/jdt/internal/debug/ui/actions/ShowMonitorThreadInformation.java 18 Dec 2007 21:33:36 -0000 1.6 +++ ui/org/eclipse/jdt/internal/debug/ui/actions/ShowMonitorThreadInformation.java 4 Sep 2008 15:54:02 -0000 @@ -15,7 +15,7 @@ /** * Toggle to display the thread and monitor information in the debug view. */ -public class ShowMonitorThreadInformation extends ToggleBooleanPreferenceAction { +public class ShowMonitorThreadInformation extends ViewFilterAction { /* (non-Javadoc) * @see org.eclipse.jdt.internal.debug.ui.actions.ViewFilterAction#getPreferenceKey() @@ -23,11 +23,4 @@ protected String getPreferenceKey() { return IJavaDebugUIConstants.PREF_SHOW_MONITOR_THREAD_INFO; } - - /* (non-Javadoc) - * @see org.eclipse.jdt.internal.debug.ui.actions.ViewFilterAction#getCompositeKey() - */ - protected String getCompositeKey() { - return getPreferenceKey(); - } } Index: ui/org/eclipse/jdt/internal/debug/ui/actions/ShowThreadGroups.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ShowThreadGroups.java,v retrieving revision 1.3 diff -u -r1.3 ShowThreadGroups.java --- ui/org/eclipse/jdt/internal/debug/ui/actions/ShowThreadGroups.java 18 Dec 2007 21:33:36 -0000 1.3 +++ ui/org/eclipse/jdt/internal/debug/ui/actions/ShowThreadGroups.java 4 Sep 2008 15:54:02 -0000 @@ -15,7 +15,7 @@ /** * Toggle to display the thread and monitor information in the debug view. */ -public class ShowThreadGroups extends ToggleBooleanPreferenceAction { +public class ShowThreadGroups extends ViewFilterAction { /* (non-Javadoc) * @see org.eclipse.jdt.internal.debug.ui.actions.ViewFilterAction#getPreferenceKey() @@ -23,11 +23,4 @@ protected String getPreferenceKey() { return IJavaDebugUIConstants.PREF_SHOW_THREAD_GROUPS; } - - /* (non-Javadoc) - * @see org.eclipse.jdt.internal.debug.ui.actions.ViewFilterAction#getCompositeKey() - */ - protected String getCompositeKey() { - return getPreferenceKey(); - } } Index: ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBooleanPreferenceAction.java =================================================================== RCS file: ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBooleanPreferenceAction.java diff -N ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBooleanPreferenceAction.java --- ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBooleanPreferenceAction.java 18 Dec 2007 21:33:36 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,60 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jdt.internal.debug.ui.actions; - -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.custom.BusyIndicator; - -/** - * Toggle to display the thread and monitor information in the debug view. - */ -public abstract class ToggleBooleanPreferenceAction extends ViewFilterAction { - - /* (non-Javadoc) - * This method is not actually called - this action is not a filter. Instead - * it sets an preference. - * - * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) - */ - public boolean select(Viewer viewer, Object parentElement, Object element) { - return false; - } - - /* (non-Javadoc) - * @see org.eclipse.jdt.internal.debug.ui.actions.ViewFilterAction#run(org.eclipse.jface.action.IAction) - */ - public void run(IAction action) { - final StructuredViewer viewer = getStructuredViewer(); - BusyIndicator.showWhile(viewer.getControl().getDisplay(), new Runnable() { - public void run() { - // note, this uses the pref key, not the composite key - the prefs are global, not view specific. - IPreferenceStore store = getPreferenceStore(); - store.setValue(getViewKey(), getValue()); - viewer.refresh(); - } - }); - } - - /** - * Returns a key to use in the preference store for this option. - * By default the preference key is used, but actions may override. - * - * @return - */ - protected String getViewKey() { - return getPreferenceKey(); - } - - -} Index: plugin.xml =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/plugin.xml,v retrieving revision 1.473 diff -u -r1.473 plugin.xml --- plugin.xml 16 Jul 2008 13:51:58 -0000 1.473 +++ plugin.xml 4 Sep 2008 15:54:01 -0000 @@ -389,8 +389,7 @@ - - @@ -1768,215 +1767,288 @@ + - - - - - - - - - - - - + point="org.eclipse.ui.commands"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + label="%VariablesViewJavaSubmenu.label"> + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + - + id="org.eclipse.jdt.debug.ui.ExpressionView.javaSubmenu" + label="%VariablesViewJavaSubmenu.label"> + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + Index: ui/org/eclipse/jdt/internal/debug/ui/heapwalking/AllReferencesInViewActionDelegate.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/heapwalking/AllReferencesInViewActionDelegate.java,v retrieving revision 1.3 diff -u -r1.3 AllReferencesInViewActionDelegate.java --- ui/org/eclipse/jdt/internal/debug/ui/heapwalking/AllReferencesInViewActionDelegate.java 19 Apr 2007 15:47:07 -0000 1.3 +++ ui/org/eclipse/jdt/internal/debug/ui/heapwalking/AllReferencesInViewActionDelegate.java 4 Sep 2008 15:54:02 -0000 @@ -10,94 +10,57 @@ *******************************************************************************/ package org.eclipse.jdt.internal.debug.ui.heapwalking; +import java.util.Map; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.Preferences.IPropertyChangeListener; -import org.eclipse.core.runtime.Preferences.PropertyChangeEvent; import org.eclipse.debug.ui.IDebugView; import org.eclipse.jdt.debug.core.IJavaStackFrame; import org.eclipse.jdt.internal.debug.core.HeapWalkingManager; -import org.eclipse.jdt.internal.debug.core.JDIDebugPlugin; import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.swt.widgets.Event; -import org.eclipse.ui.IActionDelegate2; -import org.eclipse.ui.IViewActionDelegate; -import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.commands.ICommandService; +import org.eclipse.ui.commands.IElementUpdater; +import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.ui.menus.UIElement; /** * Action delegate that turns on/off references being displayed as variables in the view. * * @since 3.3 */ -public class AllReferencesInViewActionDelegate implements IPropertyChangeListener, IActionDelegate2, IViewActionDelegate { - - private IAction fAction; - private IDebugView fView; - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) - */ - public void run(IAction action) { - HeapWalkingManager.getDefault().setShowReferenceInVarView(action.isChecked()); - // If the current target doesn't support instance retrieval, warn the user that turning the option on will not do anything. - if (action.isChecked() && fView.getViewer() != null){ - if (fView.getViewer().getInput() instanceof IJavaStackFrame){ - if (!HeapWalkingManager.supportsHeapWalking(fView.getViewer().getInput())){ - JDIDebugUIPlugin.statusDialog(Messages.AllReferencesInViewActionDelegate_0,new Status(IStatus.WARNING,JDIDebugUIPlugin.getUniqueIdentifier(),Messages.AllReferencesInViewActionDelegate_1)); - } - } - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate2#init(org.eclipse.jface.action.IAction) - */ - public void init(IAction action) { - fAction = action; - action.setChecked(HeapWalkingManager.getDefault().isShowReferenceInVarView()); - JDIDebugPlugin.getDefault().getPluginPreferences().addPropertyChangeListener(this); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart) - */ - public void init(IViewPart view) { - if (view instanceof IDebugView){ - fView = (IDebugView)view; - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) - */ - public void selectionChanged(IAction action, ISelection selection) { - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate2#dispose() - */ - public void dispose() { - JDIDebugPlugin.getDefault().getPluginPreferences().removePropertyChangeListener(this); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate2#runWithEvent(org.eclipse.jface.action.IAction, org.eclipse.swt.widgets.Event) - */ - public void runWithEvent(IAction action, Event event) { - run(action); - } - - /* (non-Javadoc) - * @see org.eclipse.core.runtime.Preferences$IPropertyChangeListener#propertyChange(org.eclipse.core.runtime.Preferences.PropertyChangeEvent) - */ - public void propertyChange(PropertyChangeEvent event) { - if (JDIDebugPlugin.PREF_SHOW_REFERENCES_IN_VAR_VIEW.equals(event.getProperty()) || JDIDebugPlugin.PREF_ALL_REFERENCES_MAX_COUNT.equals(event.getProperty())){ - if (fAction != null){ - fAction.setChecked(HeapWalkingManager.getDefault().isShowReferenceInVarView()); - fView.getViewer().refresh(); - } - } - } +public class AllReferencesInViewActionDelegate extends AbstractHandler implements IElementUpdater { + public Object execute(ExecutionEvent event) throws ExecutionException { + boolean newValue = !HeapWalkingManager.getDefault().isShowReferenceInVarView(); + HeapWalkingManager.getDefault().setShowReferenceInVarView(newValue); + + // Refresh other menu items using this command. + IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event); + ICommandService commandService = (ICommandService) window.getService(ICommandService.class); + commandService.refreshElements(event.getCommand().getId(), null); + + + // If the current target doesn't support instance retrieval, warn the user that turning the option on will not do anything. + if (newValue) { + IWorkbenchPart part = HandlerUtil.getActivePart(event); + if (part instanceof IDebugView) { + IDebugView view = (IDebugView)part; + if (view.getViewer().getInput() instanceof IJavaStackFrame) { + if (!HeapWalkingManager.supportsHeapWalking(view.getViewer().getInput())){ + JDIDebugUIPlugin.statusDialog(Messages.AllReferencesInViewActionDelegate_0,new Status(IStatus.WARNING,JDIDebugUIPlugin.getUniqueIdentifier(),Messages.AllReferencesInViewActionDelegate_1)); + } + } + } + } + + return null; + } + + public void updateElement(UIElement element, Map parameters) { + element.setChecked(HeapWalkingManager.getDefault().isShowReferenceInVarView()); + } } Index: ui/org/eclipse/jdt/internal/debug/ui/heapwalking/AllReferencesHandler.java =================================================================== RCS file: ui/org/eclipse/jdt/internal/debug/ui/heapwalking/AllReferencesHandler.java diff -N ui/org/eclipse/jdt/internal/debug/ui/heapwalking/AllReferencesHandler.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ui/org/eclipse/jdt/internal/debug/ui/heapwalking/AllReferencesHandler.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2008 Wind River Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Wind River Systems - initial API and implementation + *******************************************************************************/ +package org.eclipse.jdt.internal.debug.ui.heapwalking; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.ui.handlers.HandlerUtil; + +/** + * + */ +public class AllReferencesHandler extends AbstractHandler { + public Object execute(ExecutionEvent event) throws ExecutionException { + HandlerUtil.getActiveContexts(event); + // TODO Auto-generated method stub + return null; + } +} Index: ui/org/eclipse/jdt/internal/debug/ui/ViewFilterManager.java =================================================================== RCS file: ui/org/eclipse/jdt/internal/debug/ui/ViewFilterManager.java diff -N ui/org/eclipse/jdt/internal/debug/ui/ViewFilterManager.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ui/org/eclipse/jdt/internal/debug/ui/ViewFilterManager.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,190 @@ +/******************************************************************************* + * Copyright (c) 2008 Wind River Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Wind River Systems - initial API and implementation + *******************************************************************************/ +package org.eclipse.jdt.internal.debug.ui; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.debug.ui.IDebugUIConstants; +import org.eclipse.debug.ui.IDebugView; +import org.eclipse.jdt.internal.debug.ui.actions.ShowNullArrayEntriesAction; +import org.eclipse.jdt.internal.debug.ui.actions.ShowSystemThreadsAction; +import org.eclipse.jdt.internal.debug.ui.actions.ViewFilterAction.JDIViewerFilter; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerFilter; +import org.eclipse.ui.IPageListener; +import org.eclipse.ui.IPartListener2; +import org.eclipse.ui.IViewReference; +import org.eclipse.ui.IWindowListener; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchPartReference; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.progress.UIJob; + +/** + * Manager that installs viewer filters for java elements in debugger views. + */ +public class ViewFilterManager implements IWindowListener, IPageListener, IPartListener2 { + + private HashMap fFilters = new HashMap(2); + + public ViewFilterManager() { + final IWorkbench workbench = PlatformUI.getWorkbench(); + new UIJob(workbench.getDisplay(), "Initialize JDI view filters") { //$NON-NLS-1$ + { + setSystem(true); + } + + public IStatus runInUIThread(IProgressMonitor monitor) { + IWorkbenchWindow[] workbenchWindows = workbench.getWorkbenchWindows(); + for (int i = 0; i < workbenchWindows.length; i++) { + IWorkbenchWindow window = workbenchWindows[i]; + windowOpened(window); + IWorkbenchPage[] pages = window.getPages(); + for (int j = 0; j < pages.length; j++) { + pageOpened(pages[j]); + IViewReference[] viewRefs = pages[j].getViewReferences(); + for (int k = 0; k < viewRefs.length; k++) { + partOpened(viewRefs[k]); + } + } + } + workbench.addWindowListener(ViewFilterManager.this); + + return Status.OK_STATUS; + } + }.schedule(); + } + + public void dispose() { + final IWorkbench workbench = PlatformUI.getWorkbench(); + new UIJob(workbench.getDisplay(), "Initialize JDI view filters") { //$NON-NLS-1$ + { + setSystem(true); + } + + public IStatus runInUIThread(IProgressMonitor monitor) { + IWorkbenchWindow[] workbenchWindows = workbench.getWorkbenchWindows(); + for (int i = 0; i < workbenchWindows.length; i++) { + IWorkbenchWindow window = workbenchWindows[i]; + IWorkbenchPage[] pages = window.getPages(); + for (int j = 0; j < pages.length; j++) { + pageClosed(pages[j]); + IViewReference[] viewRefs = pages[j].getViewReferences(); + for (int k = 0; k < viewRefs.length; k++) { + partClosed(viewRefs[i]); + } + } + windowClosed(window); + } + workbench.removeWindowListener(ViewFilterManager.this); + + return Status.OK_STATUS; + } + }.schedule(); + } + + public void windowOpened(IWorkbenchWindow window) { + window.addPageListener(this); + } + + public void windowClosed(IWorkbenchWindow window) { + window.removePageListener(this); + } + + public void windowActivated(IWorkbenchWindow window) { + } + + public void windowDeactivated(IWorkbenchWindow window) { + } + + public void pageOpened(IWorkbenchPage page) { + page.addPartListener(this); + } + + public void pageClosed(IWorkbenchPage page) { + page.removePartListener(this); + } + + public void pageActivated(IWorkbenchPage page) { + } + + public void partOpened(IWorkbenchPartReference partRef) { + IWorkbenchPart part = partRef.getPart(false); + if (part instanceof IDebugView) { + addViewFilters( (IDebugView)part ); + } + } + + public void partClosed(IWorkbenchPartReference partRef) { + List filtersPerSite = (List)fFilters.remove(partRef); + if (filtersPerSite != null) { + for (Iterator itr = filtersPerSite.iterator(); itr.hasNext();) { + ((JDIViewerFilter)itr.next()).dispose(); + } + } + } + + public void partActivated(IWorkbenchPartReference partRef) { + } + + public void partBroughtToTop(IWorkbenchPartReference partRef) { + } + + public void partDeactivated(IWorkbenchPartReference partRef) { + } + + public void partHidden(IWorkbenchPartReference partRef) { + } + + public void partInputChanged(IWorkbenchPartReference partRef) { + } + + public void partVisible(IWorkbenchPartReference partRef) { + } + + private void addViewFilters(IDebugView view) { + if ( IDebugUIConstants.ID_DEBUG_VIEW.equals(view.getSite().getId()) ) { + addFilter(view, ShowSystemThreadsAction.getFilter(view)); + } else if ( IDebugUIConstants.ID_VARIABLE_VIEW.equals(view.getSite().getId()) ) { + addFilter(view, ShowNullArrayEntriesAction.getFilter(view)); + } else if ( IDebugUIConstants.ID_EXPRESSION_VIEW.equals(view.getSite().getId()) ) { + addFilter(view, ShowNullArrayEntriesAction.getFilter(view)); + } else if ( IDebugUIConstants.ID_BREAKPOINT_VIEW.equals(view.getSite().getId()) ) { + } + } + + private void addFilter(IDebugView view, ViewerFilter filter) { + IWorkbenchPartReference viewRef = view.getSite().getPage().getReference(view); + + Viewer viewer = view.getViewer(); + if (viewer instanceof StructuredViewer) { + StructuredViewer structViewer = null; + structViewer = (StructuredViewer)viewer; + List filtersPerSite = (List)fFilters.get(viewRef); + if (filtersPerSite == null) { + filtersPerSite = new ArrayList(1); + fFilters.put(viewRef, filtersPerSite); + } + filtersPerSite.add(filter); + structViewer.addFilter(filter); + } + } +}