|
Copyright © 2011 Citra Technologies. All Rights Reserved. | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JTable
com.citra.table.AdvancedJTable
com.citra.treetable.TreeTable
public class TreeTable
TreeTable works exactly the same as AdvancedJTable, with the only difference that this component is capable of grouping several similar rows of a table in a single row by using a JTree component.
TreeTable uses a TreeTableModelAdapter
as its TableModel.
An IllegalArgumentException will be thrown if one tries to set a TableModel that is not an
instance of the TreeTableModelAdapter class.
A TreeTable component can be created by supplying a TreeTableModel. TreeTable takes this parameter and constructs a TreeTableModelAdapter, which it uses as its TableModel.
The view of the TreeTable can be easily customized. In fact, the
getCellRenderer
method has been overriden so that
aggregate rows can have their own renderer. The renderer to use in those cases can be
assigned with setDefaultAggregateRenderer
.
The getAggregateCellRenderer
method can also be
overriden to provide a similar behaviour.
TreeTable will install, by default, aggregate renderers for the basic classes (String, Object, Date, Boolean
and Number). see createDefaultRenderers
A reference to the TreeTableModel can be taken with:
TreeTableModelAdapter adapter = (TreeTableModelAdapter) treetable.getModel();
TreeTableModel model = adapter.getTreeTableModel();
Nested Class Summary | |
---|---|
class |
TreeTable.DefaultTreeSpanModel
DefaultTreeSpanModel uses the treetable's model in order to return a cell span for every header row. |
class |
TreeTable.DefaultTreeStyleModel
DefaultTreeStyleModel is the TreeTable's style model. |
Nested classes/interfaces inherited from class javax.swing.JTable |
---|
JTable.AccessibleJTable |
Nested classes/interfaces inherited from class javax.swing.JComponent |
---|
JComponent.AccessibleJComponent |
Nested classes/interfaces inherited from class java.awt.Container |
---|
Container.AccessibleAWTContainer |
Nested classes/interfaces inherited from class java.awt.Component |
---|
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy |
Field Summary | |
---|---|
protected Hashtable |
defaultAggregateRenderers
A table of objects that are responsible for drawing the cells of aggregate rows, indexed by class. |
protected int |
treeColumn
the column containing the tree |
Fields inherited from class com.citra.table.AdvancedJTable |
---|
cellResizer, COMMIT_EDIT, CONTINUE_EDIT, DISCARD_EDIT, editMode, isFirstColumnFixed, nonContiguousCellSelection, nonContiguousSelectionModel, rowHeader, scroller, showRowHeader, spanDrawer, styleModel, tableAssistant, tableReorder, viewableResizer |
Fields inherited from class javax.swing.JComponent |
---|
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW |
Fields inherited from class java.awt.Component |
---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
Fields inherited from interface java.awt.image.ImageObserver |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
Constructor Summary | |
---|---|
TreeTable()
Constructs a TreeTable object with the table's model being returned by the createDefaultDataModel method. |
|
TreeTable(TreeTableModel model)
Constructs a TreeTable object having model as the TreeTableModelAdapter's treetable model. |
|
TreeTable(TreeTableModelAdapter adapter)
Constructs a TreeTable object having adapter as the table's model. |
Method Summary | |
---|---|
void |
changeSelection(int rowIndex,
int columnIndex,
boolean toggle,
boolean extend)
Updates the selection models of the table, depending on the state of the two flags: toggle and extend . |
protected TableModel |
createDefaultDataModel()
Creates a new instance of a TreeTableModelAdapter. |
protected void |
createDefaultRenderers()
TreeTable installs a DefaultTreeTableRenderer for each of the basic classes
(String, Object, Date, Boolean and Number). |
protected StyleModel |
createDefaultStyleModel()
Creates a new instance of TreeTable.DefaultTreeStyleModel . |
protected TableReorder |
createReorder()
Creates and returns a TableReorder that will handle table selection changes. |
protected SpanDrawer |
createSpanDrawer()
Returns a new instance of the span drawer that is used to enable cell spanning. The SpanDrawer's associated SpanModel is an instance of TreeTable.DefaultTreeSpanModel . |
protected void |
doEdit(TableModelEvent e,
int newRow,
int editMode)
Discards, commits or continues editing after a model update, according to the edit mode, passed as parameter. |
protected void |
doProcessMouseEvent(MouseEvent e)
Processes mouse events occurring on this component by dispatching them to any registered MouseListener objects. |
protected void |
doProcessMouseMotionEvent(MouseEvent e)
Processes mouse motion events, such as MouseEvent.MOUSE_DRAGGED. |
boolean |
editCellAt(int row,
int column,
EventObject e)
Programmatically starts editing the cell at row and
column , if the cell is editable.
To prevent the JTable from editing a particular table,
column or cell value, return false from the isCellEditable
method in the TableModel interface. |
TableCellRenderer |
getAggregateCellRenderer(int row,
int column)
Returns a TableCellRenderer component that will be used to render the aggregate row specified by row and column . |
TableCellRenderer |
getCellRenderer(int row,
int column)
For aggregate rows, this method returns the result from calling getAggregateCellRenderer . |
TableCellRenderer |
getDefaultAggregateRenderer(Class columnClass)
Returns the renderer responsible for drawing an aggregate's row column of class specified by columnClass . |
int |
getEditingRow()
This method has been overriden in order to take into account the presence of the span model. |
protected int |
getEditOffset(int row)
Returns an offset to displace the tree column by, when that cell is being edited. |
JTree |
getTree()
Returns the JTree component that is displayed on the first column of the table. |
int |
getTreeColumn()
Returns the column that contains the tree. |
TreeTableModelAdapter |
getTreeTableModelAdapter()
Convenience method to retrieve the treetable model adapter. |
protected void |
processKeyEvent(KeyEvent e)
Overrides processKeyEvent to process events. |
void |
setDefaultAggregateRenderer(Class columnClass,
TableCellRenderer renderer)
Set a default aggregate renderer to be used for rendering aggregate rows based on their column's class. |
void |
setModel(TableModel newModel)
Sets the data model for this table to newModel and registers
with it for listener notifications from the new data model. |
void |
setRowHeight(int rowHeight)
Sets the height, in pixels, of all cells to rowHeight ,
revalidates, and repaints. |
void |
setTableReorder(TableReorder newTableReorder)
Assigns a table reorder that will handle table selection changes. |
void |
setTreeColumn(int treeColumn)
Assigns the column that contains the tree. |
void |
setTreeTableModel(TreeTableModel treeTableModel)
Assigns a new TreeTableModel. |
protected boolean |
shouldToggleExpand(int row,
int column,
EventObject e,
boolean editingStarted)
This method determines the situation under which a treetable's node is expanded/collapsed. |
protected Component |
superPrepareRenderer(TableCellRenderer renderer,
int row,
int column)
Calls the AdvancedJTable.prepareRenderer(javax.swing.table.TableCellRenderer, int, int) method of its superclass. |
void |
tableChanged(TableModelEvent e)
Invoked when this table's TableModel generates
a TableModelEvent .
The TableModelEvent should be constructed in the
coordinate system of the model; the appropriate mapping to the
view coordinate system is performed by this JTable
when it receives the event.
Application code will not use these methods explicitly, they
are used internally by Note that as of 1.3, this method clears the selection, if any. |
void |
updateUI()
Notification from the UIManager that the L&F has changed.
Replaces the current UI object with the latest version from the
UIManager . |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected int treeColumn
protected transient Hashtable defaultAggregateRenderers
Constructor Detail |
---|
public TreeTable()
createDefaultDataModel
method.
public TreeTable(TreeTableModel model)
model
as the TreeTableModelAdapter's treetable model.
public TreeTable(TreeTableModelAdapter adapter)
adapter
as the table's model.
Method Detail |
---|
public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend)
toggle
and extend
. All changes
to the selection that are the result of keyboard or mouse events received
by the UI are channeled through this method so that the behavior may be
overridden by a subclass.
This implementation uses the following conventions:
toggle
: false, extend
: false.
Clear the previous selection and ensure the new cell is selected.
toggle
: false, extend
: true.
Extend the previous selection to include the specified cell.
toggle
: true, extend
: false.
If the specified cell is selected, deselect it. If it is not selected, select it.
toggle
: true, extend
: true.
Leave the selection state as it is, but move the anchor index to the specified location.
changeSelection
in class AdvancedJTable
rowIndex
- affects the selection at row
columnIndex
- affects the selection at column
toggle
- see description aboveextend
- if true, extend the current selectionprotected TableModel createDefaultDataModel()
DefaultTableModel
. A subclass can override this
method to return a different table model object.
createDefaultDataModel
in class JTable
DefaultTableModel
protected void createDefaultRenderers()
DefaultTreeTableRenderer
for each of the basic classes
(String, Object, Date, Boolean and Number).
Creates default cell renderers for objects, numbers, doubles, dates, booleans, and icons.
createDefaultRenderers
in class AdvancedJTable
DefaultTableCellRenderer
protected StyleModel createDefaultStyleModel()
TreeTable.DefaultTreeStyleModel
.
Returns the default style model object which is a DefaultStyleModel
.
createDefaultStyleModel
in class AdvancedJTable
protected TableReorder createReorder()
createReorder
in class AdvancedJTable
protected SpanDrawer createSpanDrawer()
The SpanDrawer's associated SpanModel is an instance of TreeTable.DefaultTreeSpanModel
.
createSpanDrawer
in class AdvancedJTable
protected void doEdit(TableModelEvent e, int newRow, int editMode)
getEditMode
.
doEdit
in class AdvancedJTable
e
- the model update event triggering the methodnewRow
- the new row index of the row being editededitMode
- the edit modeprotected void doProcessMouseEvent(MouseEvent e)
doProcessMouseEvent
in class AdvancedJTable
e
- the 'converted' mouse eventprotected void doProcessMouseMotionEvent(MouseEvent e)
doProcessMouseMotionEvent
in class AdvancedJTable
e
- the 'converted' mouse eventpublic boolean editCellAt(int row, int column, EventObject e)
row
and
column
, if the cell is editable.
To prevent the JTable
from editing a particular table,
column or cell value, return false from the isCellEditable
method in the TableModel
interface.
editCellAt
in class AdvancedJTable
row
- the row to be editedcolumn
- the column to be editede
- event to pass into shouldSelectCell
;
note that as of Java 2 platform v1.2, the call to
shouldSelectCell
is no longer made
public TableCellRenderer getAggregateCellRenderer(int row, int column)
row
and column
.
This method returns the appropriate aggregate renderer based on the class of the object found at (row, column). If this value is null, it will return the aggregate renderer for the String class.
row
- the index of the row being renderedcolumn
- the index of the column being rendered
public TableCellRenderer getCellRenderer(int row, int column)
getAggregateCellRenderer
.
If the value returned is null or if the row is not aggregate, this method
returns the result from it's superclass.
Returns an appropriate renderer for the cell specified by this row and
column. If the TableColumn
for this column has a non-null
renderer, returns that. If not, finds the class of the data in
this column (using getColumnClass
)
and returns the default renderer for this type of data.
Note: Throughout the table package, the internal implementations always use this method to provide renderers so that this default behavior can be safely overridden by a subclass.
getCellRenderer
in class JTable
row
- the row of the cell to render, where 0 is the first rowcolumn
- the column of the cell to render,
where 0 is the first column
null
returns the default renderer
for this type of objectDefaultTableCellRenderer
,
TableColumn.setCellRenderer(javax.swing.table.TableCellRenderer)
,
JTable.setDefaultRenderer(java.lang.Class, javax.swing.table.TableCellRenderer)
public TableCellRenderer getDefaultAggregateRenderer(Class columnClass)
columnClass
.
The renderer is fetched from a Hashtable of entries (defaultAggregateRenderers) according to the
object's class. If there is no entry for this columnClass the method returns
the entry for the most specific superclass.
TreeTable installs entries for Object, Number, Boolean,String and
Date all of which can be modified or replaced.
columnClass
- the column's class
public int getEditingRow()
getRealEditingRow
instead.
Returns the index of the row that contains the cell currently being edited. If nothing is being edited, returns -1.
getEditingRow
in class AdvancedJTable
JTable.editingColumn
protected int getEditOffset(int row)
row
- the row that is being edited
public JTree getTree()
DefaultTreeCellRenderer tcr = (DefaultTreeCellRenderer) treeTable.getTree().getCellRenderer();
ImageIcon leafIcon = new ImageIcon("c:\\icons\\leafIcon.gif");
ImageIcon closedIcon = new ImageIcon("c:\\icons\\closedIcon.gif");
tcr.setLeafIcon(leafIcon);
tcr.setClosedIcon(closedIcon);
public int getTreeColumn()
public TreeTableModelAdapter getTreeTableModelAdapter()
protected void processKeyEvent(KeyEvent e)
processKeyEvent
to process events.
processKeyEvent
in class JComponent
e
- the key eventKeyEvent
,
KeyListener
,
Component.addKeyListener(java.awt.event.KeyListener)
,
Component.enableEvents(long)
,
Component.isShowing()
public void setDefaultAggregateRenderer(Class columnClass, TableCellRenderer renderer)
columnClass
- set the default aggregate renderer for this columnClassrenderer
- default aggregate renderer to be used for this columnClasspublic void setModel(TableModel newModel)
newModel
and registers
with it for listener notifications from the new data model.
setModel
in class AdvancedJTable
newModel
- the new data source for this tableJTable.getModel()
public void setRowHeight(int rowHeight)
rowHeight
,
revalidates, and repaints.
The height of the cells will be equal to the row height minus
the row margin.
setRowHeight
in class JTable
rowHeight
- new row heightJTable.getRowHeight()
public void setTableReorder(TableReorder newTableReorder)
setTableReorder
in class AdvancedJTable
newTableReorder
- the TableReorder object to assign.public void setTreeColumn(int treeColumn)
treeColumn
- the column containing the treepublic void setTreeTableModel(TreeTableModel treeTableModel)
treeTableModel
- the new tree tablemodel to assign.protected boolean shouldToggleExpand(int row, int column, EventObject e, boolean editingStarted)
row
- the row we wish to expand/collapsecolumn
- the column we wish to expand/collapsee
- the event that is used to expand/collapse the node, usually a MouseEventeditingStarted
- boolean indicating whether we are editing
protected Component superPrepareRenderer(TableCellRenderer renderer, int row, int column)
AdvancedJTable.prepareRenderer(javax.swing.table.TableCellRenderer, int, int)
method of its superclass.
Usefull for customizing the default behaviour of the first-tree column.
public void tableChanged(TableModelEvent e)
TableModel
generates
a TableModelEvent
.
The TableModelEvent
should be constructed in the
coordinate system of the model; the appropriate mapping to the
view coordinate system is performed by this JTable
when it receives the event.
Application code will not use these methods explicitly, they
are used internally by JTable
.
Note that as of 1.3, this method clears the selection, if any.
tableChanged
in interface TableModelListener
tableChanged
in class AdvancedJTable
public void updateUI()
UIManager
that the L&F has changed.
Replaces the current UI object with the latest version from the
UIManager
.
updateUI
in class AdvancedJTable
JComponent.updateUI()
|
Copyright © 2011 Citra Technologies. All Rights Reserved. | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |