blob: 27fc9a0f291ee5ca46da1b8df9f3257772491307 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 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.debug.ui.actions;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.ui.memory.IMemoryRenderingType;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchPart;
/**
* Adpater for the platform's retargettable "add memory rendering" action.
* Clients implementing this adapter are expected to add the necessary memory blocks
* and renderings when the adapter is invoked.
* <p>
* Typically, to add a memory rendering, client needs to do the following:
* <ol>
* <li>Create a new memory block</li>
* <li>Add the new memory block to the Memory Block Manager. (<code>IMemoryBlockManager</code>)</li>
* <li>Create the new rendering from <code>IMemoryRenderingTypeDelegate</code></li>
* <li>Bring the required memory view to the top. (<code>IMemoryRenderingSite</code>)</li>
* <li>Find the container from the memory view to host the new memory rendering.
* (<code>IMemoryRenderingContainer</code>)</li>
* <li>Initialize the new rendering with the appropriate memory block and container.</li>
* <li>Add the new rendering to the container.</li>
* </ol>
* </p>
* @since 3.2
* @see AddMemoryRenderingActionDelegate
*/
public interface IAddMemoryRenderingsTarget {
/**
* Returns whether a memory rendering can be added from the specified
* part, based on the the given selection, which is the active debug context
* in the current workbench window.
*
* @param part the part on which the action has been invoked
* @param selection the active debug context in the active workbench window
* @throws CoreException if an error has occurred
*/
public boolean canAddMemoryRenderings(IWorkbenchPart part, ISelection selection);
/**
* Adds memory renderings. Based on the part and selection (active debug context), this
* adapter does the following:
* <ol>
* <li>creates and adds the required memory block to the memory block manager</li>
* <li>creates the specified renderings and add the them
* to the appropriate memory rendering containers</li>
* </ol>
* @param part the part on which the action has been invoked
* @param selection the active debug context
* @param renderingTypes renderings to add
* @throws CoreException if unable to perform the action
*
* @see org.eclipse.debug.core.model.IMemoryBlockRetrieval
* @see org.eclipse.debug.ui.memory.IMemoryRenderingManager
* @see org.eclipse.debug.core.IMemoryBlockManager
* @see org.eclipse.debug.ui.memory.IMemoryRenderingSite
* @see org.eclipse.debug.ui.memory.IMemoryRenderingContainer
*/
public void addMemoryRenderings(IWorkbenchPart part, ISelection selection, IMemoryRenderingType[] renderingTypes) throws CoreException;
/**
* Returns a list of rendering types that can be added from the given workbench part and active
* debug context, possibly empty.
*
* @param part the part on which the action has been invoked
* @param selection the active debug context
* @return a list of rendering types that can be added, possiby empty
*/
public IMemoryRenderingType[] getMemoryRenderingTypes(IWorkbenchPart part, ISelection selection);
}