blob: 00620344ccbd025568d03516d014cbe6d19a5173 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 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
* Wind River Systems - support for alternative expression view content providers
*******************************************************************************/
package org.eclipse.debug.internal.ui.views.launch;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.debug.core.IExpressionManager;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.core.model.IDebugElement;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.core.model.IExpression;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.core.model.IMemoryBlockRetrieval;
import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.core.model.IRegisterGroup;
import org.eclipse.debug.core.model.IStackFrame;
import org.eclipse.debug.core.model.IThread;
import org.eclipse.debug.core.model.IVariable;
import org.eclipse.debug.internal.ui.elements.adapters.AsynchronousDebugLabelAdapter;
import org.eclipse.debug.internal.ui.elements.adapters.DefaultViewerInputProvider;
import org.eclipse.debug.internal.ui.elements.adapters.MemoryBlockContentAdapter;
import org.eclipse.debug.internal.ui.elements.adapters.MemoryBlockLabelAdapter;
import org.eclipse.debug.internal.ui.elements.adapters.MemoryRetrievalContentAdapter;
import org.eclipse.debug.internal.ui.elements.adapters.MemorySegmentLabelAdapter;
import org.eclipse.debug.internal.ui.elements.adapters.StackFrameSourceDisplayAdapter;
import org.eclipse.debug.internal.ui.elements.adapters.StackFrameViewerInputProvider;
import org.eclipse.debug.internal.ui.elements.adapters.VariableColumnFactoryAdapter;
import org.eclipse.debug.internal.ui.model.elements.DebugElementLabelProvider;
import org.eclipse.debug.internal.ui.model.elements.DebugTargetContentProvider;
import org.eclipse.debug.internal.ui.model.elements.ExpressionContentProvider;
import org.eclipse.debug.internal.ui.model.elements.ExpressionLabelProvider;
import org.eclipse.debug.internal.ui.model.elements.ExpressionManagerContentProvider;
import org.eclipse.debug.internal.ui.model.elements.ExpressionManagerMementoProvider;
import org.eclipse.debug.internal.ui.model.elements.ExpressionMementoProvider;
import org.eclipse.debug.internal.ui.model.elements.LaunchContentProvider;
import org.eclipse.debug.internal.ui.model.elements.LaunchManagerContentProvider;
import org.eclipse.debug.internal.ui.model.elements.MemoryBlockContentProvider;
import org.eclipse.debug.internal.ui.model.elements.MemoryBlockLabelProvider;
import org.eclipse.debug.internal.ui.model.elements.MemoryRetrievalContentProvider;
import org.eclipse.debug.internal.ui.model.elements.MemoryViewElementMementoProvider;
import org.eclipse.debug.internal.ui.model.elements.RegisterGroupContentProvider;
import org.eclipse.debug.internal.ui.model.elements.RegisterGroupLabelProvider;
import org.eclipse.debug.internal.ui.model.elements.RegisterGroupMementoProvider;
import org.eclipse.debug.internal.ui.model.elements.StackFrameContentProvider;
import org.eclipse.debug.internal.ui.model.elements.StackFrameMementoProvider;
import org.eclipse.debug.internal.ui.model.elements.ThreadContentProvider;
import org.eclipse.debug.internal.ui.model.elements.VariableContentProvider;
import org.eclipse.debug.internal.ui.model.elements.VariableEditor;
import org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider;
import org.eclipse.debug.internal.ui.model.elements.VariableMementoProvider;
import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory;
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider;
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementEditor;
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.IModelProxyFactory;
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelSelectionPolicyFactory;
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputProvider;
import org.eclipse.debug.internal.ui.viewers.provisional.IAsynchronousContentAdapter;
import org.eclipse.debug.internal.ui.viewers.provisional.IAsynchronousLabelAdapter;
import org.eclipse.debug.internal.ui.viewers.update.DefaultModelProxyFactory;
import org.eclipse.debug.internal.ui.viewers.update.DefaultModelSelectionPolicyFactory;
import org.eclipse.debug.internal.ui.views.memory.renderings.MemorySegment;
import org.eclipse.debug.ui.sourcelookup.ISourceDisplay;
/**
* DebugElementAdapterFactory
*/
public class DebugElementAdapterFactory implements IAdapterFactory {
private static IModelProxyFactory fgModelProxyFactoryAdapter = new DefaultModelProxyFactory();
private static ISourceDisplay fgStackFrameSourceDisplayAdapter = new StackFrameSourceDisplayAdapter();
private static IModelSelectionPolicyFactory fgModelSelectionPolicyFactoryAdapter = new DefaultModelSelectionPolicyFactory();
private static IAsynchronousLabelAdapter fgDebugLabelAdapter = new AsynchronousDebugLabelAdapter();
private static IAsynchronousLabelAdapter fgMemoryBlockLabelAdapter = new MemoryBlockLabelAdapter();
private static IAsynchronousLabelAdapter fgTableRenderingLineLabelAdapter = new MemorySegmentLabelAdapter();
private static IElementLabelProvider fgLPDebugElement = new DebugElementLabelProvider();
private static IElementLabelProvider fgLPVariable = new VariableLabelProvider();
private static IElementLabelProvider fgLPExpression = new ExpressionLabelProvider();
private static IElementLabelProvider fgLPRegisterGroup = new RegisterGroupLabelProvider();
private static IElementLabelProvider fgLPMemoryBlock = new MemoryBlockLabelProvider();
private static IElementEditor fgEEVariable = new VariableEditor();
private static IAsynchronousContentAdapter fgAsyncMemoryRetrieval = new MemoryRetrievalContentAdapter();
private static IAsynchronousContentAdapter fgAsyncMemoryBlock = new MemoryBlockContentAdapter();
private static IElementContentProvider fgCPLaunchManger = new LaunchManagerContentProvider();
private static IElementContentProvider fgCPLaunch = new LaunchContentProvider();
private static IElementContentProvider fgCPTarget = new DebugTargetContentProvider();
private static IElementContentProvider fgCPThread = new ThreadContentProvider();
private static IElementContentProvider fgCPFrame = new StackFrameContentProvider();
private static IElementContentProvider fgCPVariable = new VariableContentProvider();
private static IElementContentProvider fgCPExpressionManager = new ExpressionManagerContentProvider();
private static IElementContentProvider fgCPExpression = new ExpressionContentProvider();
private static IElementContentProvider fgCPRegisterGroup = new RegisterGroupContentProvider();
private static IElementContentProvider fgCPMemoryRetrieval = new MemoryRetrievalContentProvider();
private static IElementContentProvider fgCPMemoryBlock = new MemoryBlockContentProvider();
private static IElementMementoProvider fgMPFrame = new StackFrameMementoProvider();
private static IElementMementoProvider fgMPVariable = new VariableMementoProvider();
private static IElementMementoProvider fgMPExpression = new ExpressionMementoProvider();
private static IElementMementoProvider fgMPRegisterGroup = new RegisterGroupMementoProvider();
private static IElementMementoProvider fgMPExpressionManager = new ExpressionManagerMementoProvider();
private static IElementMementoProvider fgMPMemory = new MemoryViewElementMementoProvider();
private static IColumnPresentationFactory fgVariableColumnFactory = new VariableColumnFactoryAdapter();
private static IViewerInputProvider fgDefaultViewerInputProvider = new DefaultViewerInputProvider();
private static IViewerInputProvider fgStackFrameViewerInputProvider = new StackFrameViewerInputProvider();
/* (non-Javadoc)
* @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
*/
public Object getAdapter(Object adaptableObject, Class adapterType) {
if (adapterType.isInstance(adaptableObject)) {
return adaptableObject;
}
if (adapterType.equals(IAsynchronousContentAdapter.class)) {
if (adaptableObject instanceof IMemoryBlockRetrieval) {
return fgAsyncMemoryRetrieval;
}
if (adaptableObject instanceof IMemoryBlock) {
return fgAsyncMemoryBlock;
}
}
if (adapterType.equals(IElementContentProvider.class)) {
if (adaptableObject instanceof ILaunchManager) {
return fgCPLaunchManger;
}
if (adaptableObject instanceof ILaunch) {
return fgCPLaunch;
}
if (adaptableObject instanceof IDebugTarget) {
return fgCPTarget;
}
if (adaptableObject instanceof IMemoryBlockRetrieval)
{
return fgCPMemoryRetrieval;
}
if (adaptableObject instanceof IThread) {
return fgCPThread;
}
if (adaptableObject instanceof IStackFrame) {
return fgCPFrame;
}
if (adaptableObject instanceof IVariable) {
return fgCPVariable;
}
if (adaptableObject instanceof IExpressionManager) {
return fgCPExpressionManager;
}
if (adaptableObject instanceof IExpression) {
return fgCPExpression;
}
if (adaptableObject instanceof IRegisterGroup) {
return fgCPRegisterGroup;
}
if (adaptableObject instanceof IMemoryBlock) {
return fgCPMemoryBlock;
}
}
if (adapterType.equals(IAsynchronousLabelAdapter.class)) {
if (adaptableObject instanceof IMemoryBlock) {
return fgMemoryBlockLabelAdapter;
}
if (adaptableObject instanceof MemorySegment) {
return fgTableRenderingLineLabelAdapter;
}
return fgDebugLabelAdapter;
}
if (adapterType.equals(IElementLabelProvider.class)) {
if (adaptableObject instanceof IVariable) {
return fgLPVariable;
}
if (adaptableObject instanceof IExpression) {
return fgLPExpression;
}
if (adaptableObject instanceof IRegisterGroup) {
return fgLPRegisterGroup;
}
if (adaptableObject instanceof IMemoryBlock) {
return fgLPMemoryBlock;
}
return fgLPDebugElement;
}
if (adapterType.equals(IModelProxyFactory.class)) {
if (adaptableObject instanceof ILaunch || adaptableObject instanceof IDebugTarget ||
adaptableObject instanceof IProcess || adaptableObject instanceof ILaunchManager ||
adaptableObject instanceof IStackFrame || adaptableObject instanceof IExpressionManager ||
adaptableObject instanceof IExpression || adaptableObject instanceof IMemoryBlockRetrieval ||
adaptableObject instanceof IMemoryBlock)
return fgModelProxyFactoryAdapter;
}
if (adapterType.equals(ISourceDisplay.class)) {
if (adaptableObject instanceof IStackFrame) {
return fgStackFrameSourceDisplayAdapter;
}
}
if (adapterType.equals(IModelSelectionPolicyFactory.class)) {
if (adaptableObject instanceof IDebugElement) {
return fgModelSelectionPolicyFactoryAdapter;
}
}
if (adapterType.equals(IColumnPresentationFactory.class)) {
if (adaptableObject instanceof IStackFrame) {
return fgVariableColumnFactory;
}
}
if (adapterType.equals(IElementMementoProvider.class)) {
if (adaptableObject instanceof IStackFrame) {
return fgMPFrame;
}
if (adaptableObject instanceof IVariable) {
return fgMPVariable;
}
if (adaptableObject instanceof IRegisterGroup) {
return fgMPRegisterGroup;
}
if (adaptableObject instanceof IExpression) {
return fgMPExpression;
}
if (adaptableObject instanceof IExpressionManager) {
return fgMPExpressionManager;
}
if (adaptableObject instanceof IMemoryBlockRetrieval) {
return fgMPMemory;
}
}
if (adapterType.equals(IElementEditor.class)) {
if (adaptableObject instanceof IVariable) {
return fgEEVariable;
}
}
if (adapterType.equals(IViewerInputProvider.class)) {
if (adaptableObject instanceof IStackFrame) {
return fgStackFrameViewerInputProvider;
} else {
return fgDefaultViewerInputProvider;
}
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
*/
public Class[] getAdapterList() {
return new Class[] {
IAsynchronousLabelAdapter.class,
IAsynchronousContentAdapter.class,
IModelProxyFactory.class,
ISourceDisplay.class,
IModelSelectionPolicyFactory.class,
IColumnPresentationFactory.class,
IElementContentProvider.class,
IElementLabelProvider.class,
IElementMementoProvider.class,
IElementEditor.class,
IViewerInputProvider.class};
}
}