Class AbstractTableRendering

java.lang.Object
org.eclipse.core.runtime.PlatformObject
org.eclipse.debug.ui.memory.AbstractMemoryRendering
org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
org.eclipse.debug.ui.memory.AbstractTableRendering
All Implemented Interfaces:
EventListener, IAdaptable, IMemoryRendering, IRepositionableMemoryRendering, IResettableMemoryRendering, IPropertyChangeListener
Direct Known Subclasses:
AbstractTextRendering

public abstract class AbstractTableRendering extends org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering implements IPropertyChangeListener, IResettableMemoryRendering
Abstract implementation of a table rendering.

Clients should subclass from this class if they wish to provide a table rendering.

The label of the rendering is constructed by retrieving the expression from IMemoryBlockExtension. For IMemoryBlock, the label is constructed using the memory block's start address. This rendering manages the change states of its memory bytes if the memory block does not opt to manage the change states. For IMemoryBlockExtension, if the memory block returns false when #supportsChangeManagement() is called, this rendering will calculate the change state for each byte when its content is updated. Clients may manages the change states of its memory block by returning true when #supportsChangeManagement() is called. This will cause this rendering to stop calculating the change states of the memory block. Instead it would rely on the attributes returned in the MemoryByte array to determine if a byte has changed. For IMemoryBlock, this rendering will manage the change states its content. When firing change event, be aware of the following: - whenever a change event is fired, the content provider for Memory View view checks to see if memory has actually changed. - If memory has actually changed, a refresh will commence. Changes to the memory block will be computed and will be shown with the delta icons. - If memory has not changed, content will not be refreshed. However, previous delta information will be erased. The screen will be refreshed to show that no memory has been changed. (All delta icons will be removed.) Please note that these APIs will be called multiple times by the Memory View. To improve performance, debug adapters need to cache the content of its memory block and only retrieve updated data when necessary.

Since:
3.1
  • Field Details

    • PROPERTY_SELECTED_ADDRESS

      public static final String PROPERTY_SELECTED_ADDRESS
      Property identifier for the selected address in a table rendering This property is used for synchronization between renderings.
      See Also:
    • PROPERTY_COL_SIZE

      public static final String PROPERTY_COL_SIZE
      Property identifier for the column size in a table rendering This property is used for synchronization between renderings.
      See Also:
    • PROPERTY_TOP_ADDRESS

      public static final String PROPERTY_TOP_ADDRESS
      Property identifier for the top row address in a table rendering. This property is used for synchronization between renderings.
      See Also:
    • PROPERTY_ROW_SIZE

      public static final String PROPERTY_ROW_SIZE
      Property identifier for the row size in a table rendering This property is used for synchronization between renderings.
      Since:
      3.2
      See Also:
  • Constructor Details

    • AbstractTableRendering

      public AbstractTableRendering(String renderingId)
      Constructs a new table rendering of the specified type.
      Parameters:
      renderingId - memory rendering type identifier
  • Method Details

    • propertyChange

      public void propertyChange(PropertyChangeEvent event)
      Description copied from interface: IPropertyChangeListener
      Notification that a property has changed.

      This method gets called when the observed object fires a property change event.

      Specified by:
      propertyChange in interface IPropertyChangeListener
      Parameters:
      event - the property change event object describing which property changed and how
    • createControl

      public Control createControl(Composite parent)
      Description copied from interface: IMemoryRendering
      Creates the top level control for this rendering under the given parent composite. This method is called after this rendering's init method has been called.

      Implementors are responsible for ensuring that the created control can be accessed via getControl

      Specified by:
      createControl in interface IMemoryRendering
      Parameters:
      parent - the parent composite
      Returns:
      the new top level control
    • format

      public boolean format(int bytesPerLine, int columnSize)
      Format view tab based on the bytes per line and column.
      Specified by:
      format in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Parameters:
      bytesPerLine - - number of bytes per line, possible values: (1 / 2 / 4 / 8 / 16 / 32 / 64 / 128) * addressableSize
      columnSize - - number of bytes per column, possible values: (1 / 2 / 4 / 8 / 16 / 32 / 64 / 128) * addressableSize
      Returns:
      true if format is successful, false, otherwise
    • displayTable

      public void displayTable()
      Displays the content of the table viewer.
    • displayError

      public void displayError(DebugException e)
      Displays an error message for the given exception.
      Parameters:
      e - exception to display
    • isDisplayingError

      public boolean isDisplayingError()
      Returns whether the error page is displayed.
      Returns:
      whether the error page is displayed
    • getControl

      public Control getControl()
      Description copied from interface: IMemoryRendering
      Returns the top level control for this rendering.

      May return null if the control has not been created yet.

      Specified by:
      getControl in interface IMemoryRendering
      Returns:
      the top level control or null
    • getAddressableSize

      public int getAddressableSize()
      Returns the addressable size of this rendering's memory block in bytes.
      Specified by:
      getAddressableSize in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Returns:
      the addressable size of this rendering's memory block in bytes
    • resizeColumnsToPreferredSize

      public void resizeColumnsToPreferredSize()
      Resize column to the preferred size.
      Specified by:
      resizeColumnsToPreferredSize in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
    • fillContextMenu

      protected void fillContextMenu(IMenuManager menu)
      Fills the context menu for this rendering
      Parameters:
      menu - menu to fill
    • getAddressableUnitPerLine

      public int getAddressableUnitPerLine()
      Returns the number of addressable units per row.
      Specified by:
      getAddressableUnitPerLine in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Returns:
      number of addressable units per row
    • getAddressableUnitPerColumn

      public int getAddressableUnitPerColumn()
      Returns the number of addressable units per column.
      Specified by:
      getAddressableUnitPerColumn in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Returns:
      number of addressable units per column
    • getBytesPerColumn

      public int getBytesPerColumn()
      Returns the number of bytes displayed in a single column cell.
      Specified by:
      getBytesPerColumn in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Returns:
      the number of bytes displayed in a single column cell
    • getBytesPerLine

      public int getBytesPerLine()
      Returns the number of bytes displayed in a row.
      Specified by:
      getBytesPerLine in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Returns:
      the number of bytes displayed in a row
    • updateLabels

      public void updateLabels()
      Updates labels of this rendering.
      Specified by:
      updateLabels in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
    • getLabel

      public String getLabel()
      Description copied from interface: IMemoryRendering
      Returns a label for this rendering.
      Specified by:
      getLabel in interface IMemoryRendering
      Specified by:
      getLabel in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Returns:
      the label of this rendering
    • updateRenderingLabel

      protected void updateRenderingLabel(boolean showAddress)
      Updates the label of this rendering, optionally displaying the base address of this rendering's memory block.
      Parameters:
      showAddress - whether to display the base address of this rendering's memory block in this rendering's label
    • refresh

      public void refresh()
      Refresh the table viewer with the current top visible address. Update labels in the memory rendering.
      Specified by:
      refresh in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
    • getTableViewer

      public TableViewer getTableViewer()
      Returns this rendering's table viewer.
      Returns:
      the TableViewer
    • dispose

      public void dispose()
      Description copied from interface: IMemoryRendering
      Disposes this rendering.
      Specified by:
      dispose in interface IMemoryRendering
      Overrides:
      dispose in class AbstractMemoryRendering
    • goToAddress

      public void goToAddress(BigInteger address) throws DebugException
      Moves the cursor to the specified address. Will load more memory if the address is not currently visible.
      Specified by:
      goToAddress in interface IRepositionableMemoryRendering
      Specified by:
      goToAddress in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Parameters:
      address - address to position cursor at
      Throws:
      DebugException - if an exception occurs
    • createActions

      protected void createActions()
      Create actions for this rendering
    • becomesHidden

      public void becomesHidden()
      Description copied from interface: IMemoryRendering
      Notification this rendering has become hidden in its container.
      Specified by:
      becomesHidden in interface IMemoryRendering
      Overrides:
      becomesHidden in class AbstractMemoryRendering
    • becomesVisible

      public void becomesVisible()
      Description copied from interface: IMemoryRendering
      Notification this rendering has become visible in its container. Note that a rendering does not have to be active to be visible.
      Specified by:
      becomesVisible in interface IMemoryRendering
      Overrides:
      becomesVisible in class AbstractMemoryRendering
    • reset

      @Deprecated public void reset()
      Deprecated.
      use resetRendering to reset this rendering.
      Resets this memory rendering. The cursor will be moved to the base address of the memory block. The table will be positioned to have the base address at the top.
    • getSelectedAddress

      public BigInteger getSelectedAddress()
      Returns the currently selected address in this rendering.
      Specified by:
      getSelectedAddress in interface IRepositionableMemoryRendering
      Specified by:
      getSelectedAddress in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Returns:
      the currently selected address in this rendering
    • getSelectedAsString

      public String getSelectedAsString()
      Returns the currently selected content in this rendering as a String.
      Specified by:
      getSelectedAsString in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Returns:
      the currently selected content in this rendering
    • getSelectedAsBytes

      public MemoryByte[] getSelectedAsBytes()
      Returns the currently selected content in this rendering as MemoryByte.
      Specified by:
      getSelectedAsBytes in interface IRepositionableMemoryRendering
      Specified by:
      getSelectedAsBytes in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Returns:
      the currently selected content in array of MemoryByte. Returns an empty array if the selected address is out of buffered range.
    • getNumCharsPerByte

      public int getNumCharsPerByte()
      Returns the number of characters a byte will convert to or -1 if unknown.
      Specified by:
      getNumCharsPerByte in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Returns:
      the number of characters a byte will convert to or -1 if unknown
    • getAdapter

      public <T> T getAdapter(Class<T> adapter)
      Description copied from class: PlatformObject
      Returns an object which is an instance of the given class associated with this object. Returns null if no such object can be found.

      This implementation of the method declared by IAdaptable passes the request along to the platform's adapter manager; roughly Platform.getAdapterManager().getAdapter(this, adapter). Subclasses may override this method (however, if they do so, they should invoke the method on their superclass to ensure that the Platform's adapter manager is consulted).

      Specified by:
      getAdapter in interface IAdaptable
      Overrides:
      getAdapter in class PlatformObject
      Type Parameters:
      T - the class type
      Parameters:
      adapter - the class to adapt to
      Returns:
      the adapted object or null
      See Also:
    • getColorProviderAdapter

      protected IColorProvider getColorProviderAdapter()
      Returns the color provider for this rendering's memory block or null if none.

      By default a color provider is obtained by asking this rendering's memory block for its IColorProvider adapter. When the color provider is queried for color information, it is provided with a MemoryRenderingElement as an argument.

      Returns:
      the color provider for this rendering's memory block, or null
    • getLabelProviderAdapter

      protected ILabelProvider getLabelProviderAdapter()
      Returns the label provider for this rendering's memory block or null if none.

      By default a label provider is obtained by asking this rendering's memory block for its ILabelProvider adapter. When the label provider is queried for label information, it is provided with a MemoryRenderingElement as an argument.

      Returns:
      the label provider for this rendering's memory block, or null
    • getFontProviderAdapter

      protected IFontProvider getFontProviderAdapter()
      Returns the font provider for this rendering's memory block or null if none.

      By default a font provider is obtained by asking this rendering's memory block for its IFontProvider adapter. When the font provider is queried for font information, it is provided with a MemoryRenderingElement as an argument.

      Returns:
      the font provider for this rendering's memory block, or null
    • getTablePresentationAdapter

      protected IMemoryBlockTablePresentation getTablePresentationAdapter()
      Returns the table presentation for this rendering's memory block or null if none.

      By default a table presentation is obtained by asking this rendering's memory block for its IMemoryBlockTablePresentation adapter.

      Returns:
      the table presentation for this rendering's memory block, or null
    • createToolTipControl

      protected Control createToolTipControl(Composite composite)
      Creates the control used to display tool tips for cells in this table. By default a label is used to display the address of the cell. Clients may override this method to create custom tooltip controls.

      Also see the methods getToolTipText(...) and toolTipAboutToShow(...).

      Parameters:
      composite - parent for the tooltip control
      Returns:
      the tooltip control to be displayed
      Since:
      3.2
    • resetRendering

      public void resetRendering() throws DebugException
      Description copied from interface: IResettableMemoryRendering
      Reset this memory rendering.
      Specified by:
      resetRendering in interface IResettableMemoryRendering
      Specified by:
      resetRendering in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Throws:
      DebugException - when there is a problem resetting this memory rendering.
    • toolTipAboutToShow

      protected void toolTipAboutToShow(Control toolTipControl, TableItem item, int col)
      Called when the tool tip is about to show in this rendering. Clients who overrides createTooltipControl may need to also override this method to ensure that the tooltip shows up properly in their customized control.

      By default a text tooltip is displayed, and the contents for the tooltip are generated by the getToolTipText(...) method.

      Parameters:
      toolTipControl - - the control for displaying the tooltip
      item - - the table item where the mouse is pointing.
      col - - the column at which the mouse is pointing.
      Since:
      3.2
    • getToolTipText

      protected String getToolTipText(BigInteger address, MemoryByte[] bytes)
      Returns the text to display in a tool tip at the specified address for the specified bytes. By default the address of the bytes is displayed. Subclasses may override.
      Parameters:
      address - address of cell that tool tip is displayed for
      bytes - the bytes in the cell
      Returns:
      the tooltip text for the memory bytes located at the specified address
      Since:
      3.2
    • getString

      public abstract String getString(String renderingTypeId, BigInteger address, MemoryByte[] data)
      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.
      Specified by:
      getString in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Parameters:
      renderingTypeId - rendering type identifier
      address - address where the bytes belong to
      data - the bytes
      Returns:
      a string to represent the memory. Cannot not return null. Returns a string to pad the cell if the memory cannot be converted successfully.
    • getBytes

      public abstract byte[] getBytes(String renderingTypeId, BigInteger address, MemoryByte[] currentValues, String newValue)
      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 null if the bytes cannot be formatted properly.
      Specified by:
      getBytes in class org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering
      Parameters:
      renderingTypeId - rendering type identifier
      address - address the bytes begin at
      currentValues - current values of the data in bytes format
      newValue - the string to be converted to bytes
      Returns:
      the bytes converted from a string