blob: b2820c96a2f0979f953792500683bd7608186913 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 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.internal.ui.views.memory.renderings;
import java.math.BigInteger;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.MemoryByte;
import org.eclipse.debug.ui.memory.AbstractMemoryRendering;
/**
* Internal base class to allow AbstractTableRendering and AbstractAsyncTableRendering
* to share actions and dialogs. This abstract class is not to be published.
*
* @since 3.2
*/
public abstract class AbstractBaseTableRendering extends AbstractMemoryRendering {
public AbstractBaseTableRendering(String renderingId) {
super(renderingId);
}
/**
* Format view tab based on the bytes per line and column.
*
* @param bytesPerLine - number of bytes per line, possible values: (1 / 2 / 4 / 8 / 16) * addressableSize
* @param columnSize - number of bytes per column, possible values: (1 / 2 / 4 / 8 / 16) * addressableSize
* @return true if format is successful, false, otherwise
*/
abstract public boolean format(int bytesPerLine, int columnSize);
/**
* Returns the addressible size of this rendering's memory block in bytes.
*
* @return the addressible size of this rendering's memory block in bytes
*/
abstract public int getAddressableSize();
/**
* Resize column to the preferred size.
*/
abstract public void resizeColumnsToPreferredSize();
/**
* Returns the number of addressable units per row.
*
* @return number of addressable units per row
*/
abstract public int getAddressableUnitPerLine();
/**
* Returns the number of addressable units per column.
*
* @return number of addressable units per column
*/
abstract public int getAddressableUnitPerColumn();
/**
* Returns the number of bytes displayed in a single column cell.
*
* @return the number of bytes displayed in a single column cell
*/
abstract public int getBytesPerColumn();
/**
* Returns the number of bytes displayed in a row.
*
* @return the number of bytes displayed in a row
*/
abstract public int getBytesPerLine();
/**
* Updates labels of this rendering.
*/
abstract public void updateLabels();
/**
* @return the label of this rendering
*/
abstract public String getLabel();
/**
* Refresh the table viewer with the current top visible address.
* Update labels in the memory rendering.
*/
abstract public void refresh();
/**
* Moves the cursor to the specified address.
* Will load more memory if the address is not currently visible.
*
* @param address address to position cursor at
* @throws DebugException if an exception occurrs
*/
abstract public void goToAddress(BigInteger address) throws DebugException;
/**
* Returns the currently selected address in this rendering.
*
* @return the currently selected address in this rendering
*/
abstract public BigInteger getSelectedAddress();
/**
* Returns the currently selected content in this rendering as a String.
*
* @return the currently selected content in this rendering
*/
abstract public String getSelectedAsString();
/**
* Returns the currently selected content in this rendering as MemoryByte.
*
* @return the currently selected content in array of MemoryByte.
* Returns an empty array if the selected address is out of buffered range.
*/
abstract public MemoryByte[] getSelectedAsBytes();
/**
* Returns the number of characters a byte will convert to
* or -1 if unknown.
*
* @return the number of characters a byte will convert to
* or -1 if unknown
*/
abstract public int getNumCharsPerByte();
/* (non-Javadoc)
* @see org.eclipse.debug.ui.memory.IResettableMemoryRendering#resetRendering()
*/
abstract public void resetRendering() throws DebugException;
/**
* Returns text for the given memory bytes at the specified address for the specified
* rendering type. This is called by the label provider for.
* Subclasses must override.
*
* @param renderingTypeId rendering type identifier
* @param address address where the bytes belong to
* @param data the bytes
* @return a string to represent the memory. Cannot not return <code>null</code>.
* Returns a string to pad the cell if the memory cannot be converted
* successfully.
*/
abstract public String getString(String renderingTypeId, BigInteger address,
MemoryByte[] data);
/**
* Returns bytes for the given text corresponding to bytes at the given
* address for the specified rendering type. This is called by the cell modifier
* when modifying bytes in a memory block.
* Subclasses must convert the string value to an array of bytes. The bytes will
* be passed to the debug adapter for memory block modification.
* Returns <code>null</code> if the bytes cannot be formatted properly.
*
* @param renderingTypeId rendering type identifier
* @param address address the bytes begin at
* @param currentValues current values of the data in bytes format
* @param newValue the string to be converted to bytes
* @return the bytes converted from a string
*/
abstract public byte[] getBytes(String renderingTypeId, BigInteger address,
MemoryByte[] currentValues, String newValue);
}