### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.debug.ui Index: META-INF/MANIFEST.MF =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/META-INF/MANIFEST.MF,v retrieving revision 1.32 diff -u -r1.32 MANIFEST.MF --- META-INF/MANIFEST.MF 21 Dec 2009 19:09:19 -0000 1.32 +++ META-INF/MANIFEST.MF 21 Jan 2010 05:06:23 -0000 @@ -18,6 +18,7 @@ org.eclipse.jdt.internal.debug.ui.console;x-internal:=true, org.eclipse.jdt.internal.debug.ui.contentassist;x-internal:=true, org.eclipse.jdt.internal.debug.ui.display;x-internal:=true, + org.eclipse.jdt.internal.debug.ui.expressions;x-internal:=true, org.eclipse.jdt.internal.debug.ui.heapwalking;x-internal:=true, org.eclipse.jdt.internal.debug.ui.jres;x-internal:=true, org.eclipse.jdt.internal.debug.ui.launcher;x-internal:=true, Index: plugin.xml =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/plugin.xml,v retrieving revision 1.481 diff -u -r1.481 plugin.xml --- plugin.xml 6 Jan 2010 18:03:12 -0000 1.481 +++ plugin.xml 21 Jan 2010 05:06:22 -0000 @@ -3230,6 +3230,30 @@ + + + + + + + + + + + + + + Index: ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaDefaultViewerInputProvider.java =================================================================== RCS file: ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaDefaultViewerInputProvider.java diff -N ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaDefaultViewerInputProvider.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaDefaultViewerInputProvider.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,36 @@ +/******************************************************************************* + * Copyright (c) 2010 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.expressions; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.debug.core.DebugPlugin; +import org.eclipse.debug.internal.ui.elements.adapters.DefaultViewerInputProvider; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate; +import org.eclipse.debug.ui.IDebugUIConstants; + +/** + * @since 3.6 + */ +public class JavaDefaultViewerInputProvider extends DefaultViewerInputProvider { + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider#getViewerInput(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate) + */ + protected Object getViewerInput(Object source, IPresentationContext context, IViewerUpdate update) throws CoreException { + if ( IDebugUIConstants.ID_EXPRESSION_VIEW.equals(context.getId()) ) { + return new JavaExpressionManagerProxy( DebugPlugin.getDefault().getExpressionManager() ); + } else { + return super.getViewerInput(source, context, update); + } + } + +} Index: ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaExpressionManagerProxy.java =================================================================== RCS file: ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaExpressionManagerProxy.java diff -N ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaExpressionManagerProxy.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaExpressionManagerProxy.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,66 @@ +/******************************************************************************* + * Copyright (c) 2010 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.expressions; + +import org.eclipse.core.runtime.PlatformObject; +import org.eclipse.debug.core.IExpressionListener; +import org.eclipse.debug.core.IExpressionManager; +import org.eclipse.debug.core.IExpressionsListener; +import org.eclipse.debug.core.model.IExpression; +import org.eclipse.debug.core.model.IWatchExpression; +import org.eclipse.debug.core.model.IWatchExpressionDelegate; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory; +import org.eclipse.jdt.internal.debug.ui.variables.JavaVariableColumnPresentationFactory; + +/** + * @since 3.6 + */ +class JavaExpressionManagerProxy extends PlatformObject implements IExpressionManager { + + private static final IColumnPresentationFactory fgColumnPresentation = new JavaVariableColumnPresentationFactory(); + + private final IExpressionManager fManager; + + JavaExpressionManagerProxy(IExpressionManager manager) { + fManager = manager; + } + + public void addExpression(IExpression expression) { fManager.addExpression(expression); } + public void addExpressions(IExpression[] expressions) { fManager.addExpressions(expressions); } + public IWatchExpression newWatchExpression(String expressionText) { return fManager.newWatchExpression(expressionText); } + public IExpression[] getExpressions() { return fManager.getExpressions(); } + public boolean hasExpressions() { return fManager.hasExpressions(); } + public IExpression[] getExpressions(String modelIdentifier) { return fManager.getExpressions(); } + public void removeExpression(IExpression expression) { fManager.removeExpression(expression); } + public void removeExpressions(IExpression[] expressions) { fManager.removeExpressions(expressions); } + public void addExpressionListener(IExpressionListener listener) { fManager.addExpressionListener(listener); } + public void removeExpressionListener(IExpressionListener listener) { fManager.removeExpressionListener(listener); } + public void addExpressionListener(IExpressionsListener listener) { fManager.addExpressionListener(listener); } + public void removeExpressionListener(IExpressionsListener listener) { fManager.removeExpressionListener(listener); } + public IWatchExpressionDelegate newWatchExpressionDelegate(String id) { return fManager.newWatchExpressionDelegate(id); } + public boolean hasWatchExpressionDelegate(String id) { return fManager.hasWatchExpressionDelegate(id); } + + public Object getAdapter(Class adapter) { + if (IColumnPresentationFactory.class.equals(adapter)) { + return fgColumnPresentation; + } + return super.getAdapter(adapter); + } + + public boolean equals(Object obj) { + return obj instanceof JavaExpressionManagerProxy && + ((JavaExpressionManagerProxy)obj).fManager.equals(fManager); + } + + public int hashCode() { + return getClass().hashCode() + fManager.hashCode(); + } +} Index: ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaStackFrameViewerInputProvider.java =================================================================== RCS file: ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaStackFrameViewerInputProvider.java diff -N ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaStackFrameViewerInputProvider.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ui/org/eclipse/jdt/internal/debug/ui/expressions/JavaStackFrameViewerInputProvider.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,36 @@ +/******************************************************************************* + * Copyright (c) 2010 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.expressions; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.debug.core.DebugPlugin; +import org.eclipse.debug.internal.ui.elements.adapters.StackFrameViewerInputProvider; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate; +import org.eclipse.debug.ui.IDebugUIConstants; + +/** + * @since 3.6 + */ +public class JavaStackFrameViewerInputProvider extends StackFrameViewerInputProvider { + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider#getViewerInput(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate) + */ + protected Object getViewerInput(Object source, IPresentationContext context, IViewerUpdate update) throws CoreException { + if ( IDebugUIConstants.ID_EXPRESSION_VIEW.equals(context.getId()) ) { + return new JavaExpressionManagerProxy( DebugPlugin.getDefault().getExpressionManager() ); + } else { + return super.getViewerInput(source, context, update); + } + } + +} Index: ui/org/eclipse/jdt/internal/debug/ui/variables/JavaDebugElementAdapterFactory.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaDebugElementAdapterFactory.java,v retrieving revision 1.6 diff -u -r1.6 JavaDebugElementAdapterFactory.java --- ui/org/eclipse/jdt/internal/debug/ui/variables/JavaDebugElementAdapterFactory.java 14 Mar 2008 03:01:31 -0000 1.6 +++ ui/org/eclipse/jdt/internal/debug/ui/variables/JavaDebugElementAdapterFactory.java 21 Jan 2010 05:06:27 -0000 @@ -15,11 +15,17 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider; import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider; import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputProvider; import org.eclipse.debug.ui.actions.IWatchExpressionFactoryAdapter; +import org.eclipse.jdt.debug.core.IJavaDebugTarget; import org.eclipse.jdt.debug.core.IJavaStackFrame; +import org.eclipse.jdt.debug.core.IJavaThread; +import org.eclipse.jdt.debug.core.IJavaThreadGroup; import org.eclipse.jdt.debug.core.IJavaValue; import org.eclipse.jdt.debug.core.IJavaVariable; import org.eclipse.jdt.internal.debug.ui.display.JavaInspectExpression; +import org.eclipse.jdt.internal.debug.ui.expressions.JavaDefaultViewerInputProvider; +import org.eclipse.jdt.internal.debug.ui.expressions.JavaStackFrameViewerInputProvider; import org.eclipse.jdt.internal.debug.ui.heapwalking.JavaWatchExpressionFilter; /** @@ -43,7 +49,9 @@ private static final IWatchExpressionFactoryAdapter fgWEVariable = new JavaWatchExpressionFilter(); private static final IElementMementoProvider fgMPStackFrame = new JavaStackFrameMementoProvider(); private static final IElementLabelProvider fgLPFrame = new JavaStackFrameLabelProvider(); - + private static final IViewerInputProvider fgIPDefault = new JavaDefaultViewerInputProvider(); + private static final IViewerInputProvider fgIPFrame = new JavaStackFrameViewerInputProvider(); + /* (non-Javadoc) * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class) */ @@ -83,6 +91,17 @@ return fgMPStackFrame; } } + if (IViewerInputProvider.class.equals(adapterType)) { + if (adaptableObject instanceof IJavaStackFrame) { + return fgIPFrame; + } + if (adaptableObject instanceof IJavaThread || + adaptableObject instanceof IJavaThreadGroup || + adaptableObject instanceof IJavaDebugTarget) + { + return fgIPDefault; + } + } return null; } @@ -90,7 +109,8 @@ * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList() */ public Class[] getAdapterList() { - return new Class[]{IElementLabelProvider.class,IElementContentProvider.class,IWatchExpressionFactoryAdapter.class}; + return new Class[]{IElementLabelProvider.class, + IElementContentProvider.class, IWatchExpressionFactoryAdapter.class, IViewerInputProvider.class}; } } Index: ui/org/eclipse/jdt/internal/debug/ui/variables/JavaVariableColumnPresentationFactory.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaVariableColumnPresentationFactory.java,v retrieving revision 1.5 diff -u -r1.5 JavaVariableColumnPresentationFactory.java --- ui/org/eclipse/jdt/internal/debug/ui/variables/JavaVariableColumnPresentationFactory.java 27 Mar 2007 02:36:00 -0000 1.5 +++ ui/org/eclipse/jdt/internal/debug/ui/variables/JavaVariableColumnPresentationFactory.java 21 Jan 2010 05:06:27 -0000 @@ -11,6 +11,7 @@ package org.eclipse.jdt.internal.debug.ui.variables; import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.debug.core.IExpressionManager; import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentation; import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory; import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; @@ -49,9 +50,12 @@ if (element instanceof IAdaptable) { IAdaptable adaptable = (IAdaptable)element; frame = (IJavaStackFrame) adaptable.getAdapter(IJavaStackFrame.class); + return frame != null; } + } else if (IDebugUIConstants.ID_EXPRESSION_VIEW.equals(context.getId())) { + return element instanceof IExpressionManager; } - return frame != null; + return false; } }