/******************************************************************************* * Copyright (c) 2009, 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.cdt.examples.dsf.pda.ui; import org.eclipse.cdt.dsf.debug.ui.actions.DsfResumeCommand; import org.eclipse.cdt.dsf.debug.ui.actions.DsfStepIntoCommand; import org.eclipse.cdt.dsf.debug.ui.actions.DsfStepOverCommand; import org.eclipse.cdt.dsf.debug.ui.actions.DsfStepReturnCommand; import org.eclipse.cdt.dsf.debug.ui.actions.DsfSuspendCommand; import org.eclipse.cdt.dsf.debug.ui.sourcelookup.DsfSourceDisplayAdapter; import org.eclipse.cdt.dsf.debug.ui.viewmodel.SteppingController; import org.eclipse.cdt.dsf.debug.ui.viewmodel.launch.DefaultDsfModelSelectionPolicyFactory; import org.eclipse.cdt.dsf.service.DsfSession; import org.eclipse.cdt.examples.dsf.pda.PDAPlugin; import org.eclipse.cdt.examples.dsf.pda.launch.PDALaunch; import org.eclipse.cdt.examples.dsf.pda.ui.actions.PDATerminateCommand; import org.eclipse.cdt.examples.dsf.pda.ui.viewmodel.PDAVMAdapter; import org.eclipse.debug.core.commands.IResumeHandler; import org.eclipse.debug.core.commands.IStepIntoHandler; import org.eclipse.debug.core.commands.IStepOverHandler; import org.eclipse.debug.core.commands.IStepReturnHandler; import org.eclipse.debug.core.commands.ISuspendHandler; import org.eclipse.debug.core.commands.ITerminateHandler; import org.eclipse.debug.core.model.IDebugModelProvider; import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector; import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelSelectionPolicyFactory; import org.eclipse.debug.ui.sourcelookup.ISourceDisplay; /** * Contains the set of adapters that are created for each session instance. */ class SessionAdapterSet { // View Model adapter final PDAVMAdapter fViewModelAdapter; // Source lookup and positioning adapter final DsfSourceDisplayAdapter fSourceDisplayAdapter; // Command adapters final DsfStepIntoCommand fStepIntoCommand; final DsfStepOverCommand fStepOverCommand; final DsfStepReturnCommand fStepReturnCommand; final DsfSuspendCommand fSuspendCommand; final DsfResumeCommand fResumeCommand; final PDATerminateCommand fTerminateCommand; final PDASuspendTrigger fSuspendTrigger; // Adapters for integration with other UI actions final IDebugModelProvider fDebugModelProvider; final PDALaunch fLaunch; final SteppingController fSteppingController; final IModelSelectionPolicyFactory fModelSelectionPolicyFactory; SessionAdapterSet(PDALaunch launch) { // Initialize launch and session. fLaunch = launch; DsfSession session = launch.getSession(); // register stepping controller fSteppingController = new SteppingController(session); session.registerModelAdapter(SteppingController.class, fSteppingController); // Initialize VM fViewModelAdapter = new PDAVMAdapter(session, fSteppingController); // Initialize source lookup fSourceDisplayAdapter = new DsfSourceDisplayAdapter(session, (ISourceLookupDirector)launch.getSourceLocator(), fSteppingController); session.registerModelAdapter(ISourceDisplay.class, fSourceDisplayAdapter); // Default selection policy fModelSelectionPolicyFactory = new DefaultDsfModelSelectionPolicyFactory(); session.registerModelAdapter(IModelSelectionPolicyFactory.class, fModelSelectionPolicyFactory); // Initialize retargetable command handler. fStepIntoCommand = new DsfStepIntoCommand(session, null); fStepOverCommand = new DsfStepOverCommand(session, null); fStepReturnCommand = new DsfStepReturnCommand(session); fSuspendCommand = new DsfSuspendCommand(session); fResumeCommand = new DsfResumeCommand(session); fTerminateCommand = new PDATerminateCommand(session); fSuspendTrigger = new PDASuspendTrigger(session, fLaunch); session.registerModelAdapter(IStepIntoHandler.class, fStepIntoCommand); session.registerModelAdapter(IStepOverHandler.class, fStepOverCommand); session.registerModelAdapter(IStepReturnHandler.class, fStepReturnCommand); session.registerModelAdapter(ISuspendHandler.class, fSuspendCommand); session.registerModelAdapter(IResumeHandler.class, fResumeCommand); session.registerModelAdapter(ITerminateHandler.class, fTerminateCommand); // Initialize debug model provider fDebugModelProvider = new IDebugModelProvider() { public String[] getModelIdentifiers() { return new String[] { PDAPlugin.ID_PDA_DEBUG_MODEL }; } }; session.registerModelAdapter(IDebugModelProvider.class, fDebugModelProvider); } void dispose() { DsfSession session = fLaunch.getSession(); fViewModelAdapter.dispose(); session.unregisterModelAdapter(ISourceDisplay.class); if (fSourceDisplayAdapter != null) fSourceDisplayAdapter.dispose(); session.unregisterModelAdapter(SteppingController.class); fSteppingController.dispose(); session.unregisterModelAdapter(IModelSelectionPolicyFactory.class); session.unregisterModelAdapter(IStepIntoHandler.class); session.unregisterModelAdapter(IStepOverHandler.class); session.unregisterModelAdapter(IStepReturnHandler.class); session.unregisterModelAdapter(ISuspendHandler.class); session.unregisterModelAdapter(IResumeHandler.class); session.unregisterModelAdapter(ITerminateHandler.class); fStepIntoCommand.dispose(); fStepOverCommand.dispose(); fStepReturnCommand.dispose(); fSuspendCommand.dispose(); fResumeCommand.dispose(); fTerminateCommand.dispose(); fSuspendTrigger.dispose(); } }