mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
GP-2067: Implement header renderer override and add cursor to ModelProvider's Plot columns
This commit is contained in:
parent
45165ea167
commit
cdd6f3d72e
16 changed files with 250 additions and 83 deletions
|
@ -120,6 +120,11 @@ public abstract class AbstractDynamicTableColumn<ROW_TYPE, COLUMN_TYPE, DATA_SOU
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GTableHeaderRenderer getHeaderRenderer() {
|
||||
return null;
|
||||
}
|
||||
|
||||
private void configureDefaultSettings() {
|
||||
defaultSettingsDefinitions = NO_SETTINGS_DEFINITIONS;
|
||||
Class<COLUMN_TYPE> columnClass = getColumnClass();
|
||||
|
|
|
@ -66,4 +66,12 @@ public interface ConfigurableColumnTableModel extends TableModel {
|
|||
* @return the renderer
|
||||
*/
|
||||
public TableCellRenderer getRenderer(int columnIndex);
|
||||
|
||||
/**
|
||||
* Returns the header cell renderer for the given column
|
||||
* @param columnIndex the index of the column
|
||||
* @return the renderer
|
||||
* @return
|
||||
*/
|
||||
public TableCellRenderer getHeaderRenderer(int columnIndex);
|
||||
}
|
||||
|
|
|
@ -97,6 +97,16 @@ public interface DynamicTableColumn<ROW_TYPE, COLUMN_TYPE, DATA_SOURCE> {
|
|||
*/
|
||||
public GColumnRenderer<COLUMN_TYPE> getColumnRenderer();
|
||||
|
||||
/**
|
||||
* Returns the optional header renderer for this column; null if no renderer is used.
|
||||
*
|
||||
* <P>
|
||||
* This method allows columns to define custom header rendering.
|
||||
*
|
||||
* @return the renderer
|
||||
*/
|
||||
public GTableHeaderRenderer getHeaderRenderer();
|
||||
|
||||
/**
|
||||
* Returns a list of settings definitions for this field.
|
||||
*
|
||||
|
|
|
@ -540,6 +540,19 @@ public abstract class GDynamicColumnTableModel<ROW_TYPE, DATA_SOURCE>
|
|||
return tableColumns.get(index).getColumnRenderer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the special header cell renderer for the specified table field column. A null value
|
||||
* indicates that this column uses a default header renderer.
|
||||
*
|
||||
* @param index the model column index
|
||||
* @return a table cell renderer for this field's header. Otherwise, null if a default renderer
|
||||
* should be used.
|
||||
*/
|
||||
@Override
|
||||
public TableCellRenderer getHeaderRenderer(int index) {
|
||||
return tableColumns.get(index).getHeaderRenderer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the maximum number of text display lines needed for any given cell within the specified
|
||||
* column.
|
||||
|
|
|
@ -692,6 +692,13 @@ public class GTable extends JTable {
|
|||
addColumn(newColumn);
|
||||
}
|
||||
|
||||
for (int i = 0; i < columnCount; i++ ) {
|
||||
TableCellRenderer headerRenderer = getHeaderRendererOverride(i);
|
||||
if (headerRenderer != null) {
|
||||
tableColumnModel.getColumn(i).setHeaderRenderer(headerRenderer);
|
||||
}
|
||||
}
|
||||
|
||||
tableColumnModel.setEventsEnabled(wasEnabled);
|
||||
}
|
||||
|
||||
|
@ -890,6 +897,26 @@ public class GTable extends JTable {
|
|||
return super.getCellRenderer(row, col);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs custom work to locate header renderers for special table model types. The headers
|
||||
* are located and installed at the time the table's model is set.
|
||||
*
|
||||
* @param row the row
|
||||
* @param col the column
|
||||
* @return the header cell renderer
|
||||
*/
|
||||
public final TableCellRenderer getHeaderRendererOverride(int col) {
|
||||
ConfigurableColumnTableModel configurableModel = getConfigurableColumnTableModel();
|
||||
if (configurableModel != null) {
|
||||
int modelIndex = convertColumnIndexToModel(col);
|
||||
TableCellRenderer renderer = configurableModel.getHeaderRenderer(modelIndex);
|
||||
if (renderer != null) {
|
||||
return renderer;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* If you just begin typing into an editable cell in a JTable, then the cell editor will be
|
||||
* displayed. However, the editor component will not have a focus. This method has been
|
||||
|
|
|
@ -99,6 +99,11 @@ public class MappedTableColumn<ROW_TYPE, EXPECTED_ROW_TYPE, COLUMN_TYPE, DATA_SO
|
|||
return tableColumn.getColumnRenderer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public GTableHeaderRenderer getHeaderRenderer() {
|
||||
return tableColumn.getHeaderRenderer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SettingsDefinition[] getSettingsDefinitions() {
|
||||
return tableColumn.getSettingsDefinitions();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue