mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-07 17:56:01 +02:00
Bug 173253: Create Watch Expression of member variable or struct.
This commit is contained in:
parent
c2d6547a5d
commit
d692d9d650
6 changed files with 90 additions and 11 deletions
|
@ -33,4 +33,12 @@ public interface ICVariable extends IVariable, ICDebugElement, IFormatSupport, I
|
||||||
* @return whether this variable is an argument
|
* @return whether this variable is an argument
|
||||||
*/
|
*/
|
||||||
boolean isArgument();
|
boolean isArgument();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the text presentation of this variable as an expression.
|
||||||
|
*
|
||||||
|
* @return the text presentation of this variable as an expression
|
||||||
|
* @throws DebugException
|
||||||
|
*/
|
||||||
|
public String getExpressionString() throws DebugException;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,14 +62,6 @@ public abstract class AbstractCVariable extends CDebugElement implements ICVaria
|
||||||
return super.getAdapter( adapter );
|
return super.getAdapter( adapter );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the text presentation of this variable as an expression.
|
|
||||||
*
|
|
||||||
* @return the text presentation of this variable as an expression
|
|
||||||
* @throws DebugException
|
|
||||||
*/
|
|
||||||
public abstract String getExpressionString() throws DebugException;
|
|
||||||
|
|
||||||
public abstract void dispose();
|
public abstract void dispose();
|
||||||
|
|
||||||
protected abstract void resetValue();
|
protected abstract void resetValue();
|
||||||
|
|
|
@ -18,7 +18,6 @@ import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleLabelProvider;
|
||||||
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleMementoProvider;
|
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleMementoProvider;
|
||||||
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleProxyFactory;
|
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleProxyFactory;
|
||||||
import org.eclipse.core.runtime.IAdapterFactory;
|
import org.eclipse.core.runtime.IAdapterFactory;
|
||||||
import org.eclipse.debug.core.model.IStackFrame;
|
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider;
|
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.IElementLabelProvider;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider;
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2007 ARM 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:
|
||||||
|
* ARM - Initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.debug.internal.ui.elements.adapters;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.core.model.ICVariable;
|
||||||
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.debug.core.model.IVariable;
|
||||||
|
import org.eclipse.debug.ui.actions.IWatchExpressionFactoryAdapterExtension;
|
||||||
|
|
||||||
|
public class CWatchExpressionFactoryAdapter implements IWatchExpressionFactoryAdapterExtension {
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.ui.actions.IWatchExpressionFactoryAdapterExtension#canCreateWatchExpression(org.eclipse.debug.core.model.IVariable)
|
||||||
|
*/
|
||||||
|
public boolean canCreateWatchExpression( IVariable variable ) {
|
||||||
|
return ( variable instanceof ICVariable );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.ui.actions.IWatchExpressionFactoryAdapter#createWatchExpression(org.eclipse.debug.core.model.IVariable)
|
||||||
|
*/
|
||||||
|
public String createWatchExpression( IVariable variable ) throws CoreException {
|
||||||
|
return ( variable instanceof ICVariable ) ? ((ICVariable)variable).getExpressionString() : null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2007 ARM 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:
|
||||||
|
* ARM - Initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.debug.internal.ui.elements.adapters;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.core.model.ICVariable;
|
||||||
|
import org.eclipse.core.runtime.IAdapterFactory;
|
||||||
|
import org.eclipse.debug.ui.actions.IWatchExpressionFactoryAdapter;
|
||||||
|
|
||||||
|
public class CWatchExpressionFactoryAdapterFactory implements IAdapterFactory {
|
||||||
|
|
||||||
|
private static IWatchExpressionFactoryAdapter fgWatchExpressionFactoryAdapter = new CWatchExpressionFactoryAdapter();
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
|
||||||
|
*/
|
||||||
|
public Object getAdapter( Object adaptableObject, Class adapterType ) {
|
||||||
|
if ( adapterType.equals( IWatchExpressionFactoryAdapter.class ) ) {
|
||||||
|
if ( adaptableObject instanceof ICVariable ) {
|
||||||
|
return fgWatchExpressionFactoryAdapter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
|
||||||
|
*/
|
||||||
|
public Class[] getAdapterList() {
|
||||||
|
return new Class[] {
|
||||||
|
IWatchExpressionFactoryAdapter.class,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,9 +12,11 @@ package org.eclipse.cdt.debug.ui;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
||||||
import org.eclipse.cdt.debug.core.model.ICModule;
|
import org.eclipse.cdt.debug.core.model.ICModule;
|
||||||
|
import org.eclipse.cdt.debug.core.model.ICVariable;
|
||||||
import org.eclipse.cdt.debug.core.model.IModuleRetrieval;
|
import org.eclipse.cdt.debug.core.model.IModuleRetrieval;
|
||||||
import org.eclipse.cdt.debug.internal.ui.CBreakpointUpdater;
|
import org.eclipse.cdt.debug.internal.ui.CBreakpointUpdater;
|
||||||
import org.eclipse.cdt.debug.internal.ui.CDebugImageDescriptorRegistry;
|
import org.eclipse.cdt.debug.internal.ui.CDebugImageDescriptorRegistry;
|
||||||
|
@ -25,9 +27,10 @@ import org.eclipse.cdt.debug.internal.ui.EvaluationContextManager;
|
||||||
import org.eclipse.cdt.debug.internal.ui.IInternalCDebugUIConstants;
|
import org.eclipse.cdt.debug.internal.ui.IInternalCDebugUIConstants;
|
||||||
import org.eclipse.cdt.debug.internal.ui.elements.adapters.CDebugElementAdapterFactory;
|
import org.eclipse.cdt.debug.internal.ui.elements.adapters.CDebugElementAdapterFactory;
|
||||||
import org.eclipse.cdt.debug.internal.ui.elements.adapters.CMemoryAdapterFactory;
|
import org.eclipse.cdt.debug.internal.ui.elements.adapters.CMemoryAdapterFactory;
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.elements.adapters.CWatchExpressionFactoryAdapterFactory;
|
||||||
import org.eclipse.cdt.debug.ui.sourcelookup.DefaultSourceLocator;
|
import org.eclipse.cdt.debug.ui.sourcelookup.DefaultSourceLocator;
|
||||||
import org.eclipse.cdt.debug.ui.sourcelookup.OldDefaultSourceLocator;
|
import org.eclipse.cdt.debug.ui.sourcelookup.OldDefaultSourceLocator;
|
||||||
import org.eclipse.cdt.internal.ui.editor.SharedTextColors;
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
import org.eclipse.core.resources.IWorkspace;
|
import org.eclipse.core.resources.IWorkspace;
|
||||||
import org.eclipse.core.resources.ResourcesPlugin;
|
import org.eclipse.core.resources.ResourcesPlugin;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
@ -277,6 +280,9 @@ public class CDebugUIPlugin extends AbstractUIPlugin {
|
||||||
manager.registerAdapters( elementAdapterFactory, IModuleRetrieval.class );
|
manager.registerAdapters( elementAdapterFactory, IModuleRetrieval.class );
|
||||||
manager.registerAdapters( elementAdapterFactory, ICModule.class );
|
manager.registerAdapters( elementAdapterFactory, ICModule.class );
|
||||||
manager.registerAdapters( elementAdapterFactory, ICElement.class );
|
manager.registerAdapters( elementAdapterFactory, ICElement.class );
|
||||||
|
|
||||||
|
CWatchExpressionFactoryAdapterFactory watchExpressionAdapterFactory = new CWatchExpressionFactoryAdapterFactory();
|
||||||
|
manager.registerAdapters( watchExpressionAdapterFactory, ICVariable.class );
|
||||||
|
|
||||||
CMemoryAdapterFactory memoryAdapterFactory = new CMemoryAdapterFactory();
|
CMemoryAdapterFactory memoryAdapterFactory = new CMemoryAdapterFactory();
|
||||||
manager.registerAdapters( memoryAdapterFactory, IMemoryBlockRetrievalExtension.class );
|
manager.registerAdapters( memoryAdapterFactory, IMemoryBlockRetrievalExtension.class );
|
||||||
|
@ -308,7 +314,7 @@ public class CDebugUIPlugin extends AbstractUIPlugin {
|
||||||
*/
|
*/
|
||||||
public ISharedTextColors getSharedTextColors() {
|
public ISharedTextColors getSharedTextColors() {
|
||||||
if ( fSharedTextColors == null )
|
if ( fSharedTextColors == null )
|
||||||
fSharedTextColors = new SharedTextColors();
|
fSharedTextColors = CUIPlugin.getDefault().getSharedTextColors();
|
||||||
return fSharedTextColors;
|
return fSharedTextColors;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue