Top Description Fields Constructors Methods
javafx.scene.control.skin

public Class NestedTableColumnHeader

extends TableColumnHeader
Class Inheritance
Imports
javafx.collections.FXCollections, .ListChangeListener, .ObservableList, .WeakListChangeListener, javafx.event.EventHandler, javafx.geometry.NodeOrientation, javafx.scene.Cursor, .Node, javafx.scene.control.ResizeFeaturesBase, .TableColumnBase, javafx.scene.input.MouseEvent, javafx.scene.paint.Color, javafx.scene.shape.Rectangle, javafx.util.Callback, java.util.ArrayList, .List, .Map, .WeakHashMap

This class is used to construct the header of a TableView. We take the approach that every TableView header is nested - even if it isn't. This allows for us to use the same code for building a single row of TableColumns as we would with a heavily nested sequences of TableColumns. Because of this, the TableHeaderRow class consists of just one instance of a NestedTableColumnHeader.

Since
9
See Also
TableColumnHeader, TableHeaderRow, TableColumnBase

Field Summary

Modifier and TypeField and Description
private ObservableList<TableColumnHeader>
private ObservableList<? extends TableColumnBase<S, T>>
columns

Represents the actual columns directly contained in this nested column.

private final ListChangeListener<TableColumnBase<S, T>>
pack-priv static final String
private static final int
private double
private Map<TableColumnBase<?, ?>, Rectangle>
private TableColumnHeader
private double
private static final EventHandler<MouseEvent>
private static final EventHandler<MouseEvent>
private static final EventHandler<MouseEvent>
private static final EventHandler<MouseEvent>
private static final String
private static final String
private ObservableList<TableColumnHeader>
pack-priv boolean
private final WeakListChangeListener<E>
Inherited from javafx.scene.control.skin.TableColumnHeader:
changeListenerHandlercolumnIndexcolumnReorderLineDEFAULT_COLUMN_WIDTHisLastVisibleColumnsortPos

Constructor Summary

AccessConstructor and Description
public
NestedTableColumnHeader(final TableColumnBase<S, T>
The table column to be visually represented by this instance.
tc
)

Creates a new NestedTableColumnHeader instance to visually represent the given TableColumnBase instance.

Method Summary

Modifier and TypeMethod and Description
private void
private void
private void
private void
columnResizingStarted(double startX)

protected double
computePrefHeight(double
the width that should be used if preferred height depends on it
width
)

Overrides javafx.scene.control.skin.TableColumnHeader.computePrefHeight.

Computes the preferred height of this region for the given width; Region subclasses should override this method to return an appropriate value based on their content and layout strategy.

protected double
computePrefWidth(double
the height that should be used if preferred width depends on it
height
)

Overrides javafx.scene.control.skin.TableColumnHeader.computePrefWidth.

Computes the preferred width of this region for the given height.

private TableColumnHeader
protected TableColumnHeader

Returns:

A new TableColumnHeader instance.
createTableColumnHeader
(TableColumnBase<S, T>
the table column
col
)

Creates a new TableColumnHeader instance for the given TableColumnBase instance.

pack-priv void
public final ObservableList<TableColumnHeader>

Returns:

the unmodifiable list of TableColumnHeader of this NestedTableColumnHeader
getColumnHeaders
()

Returns an unmodifiable list of the TableColumnHeader instances that are children of this NestedTableColumnHeader.

pack-priv ObservableList<? extends TableColumnBase<S, T>>
pack-priv double
pack-priv void
private boolean
protected void
layoutChildren()

Overrides javafx.scene.control.skin.TableColumnHeader.layoutChildren.

Invoked during the layout pass to layout the children in this Parent.

private void
pack-priv boolean
pack-priv void
setColumns(ObservableList<? extends TableColumnBase<S, T>> newColumns)

pack-priv void
pack-priv void
pack-priv void
private void
pack-priv void
Inherited from javafx.scene.control.skin.TableColumnHeader:
columnReorderingcolumnReorderingCompletecolumnReorderingStartedcomputeMinHeightgetClassCssMetaDatagetCssMetaDatagetNestedColumnHeadergetParentHeadergetTableColumngetTableHeaderRowgetTableSkininstallTableColumnStyleClassListenermoveColumnqueryAccessibleAttributeresizeColumnToFitContentsetNestedColumnHeadertableColumnProperty

Field Detail

columnHeadersback to summary
private ObservableList<TableColumnHeader> columnHeaders
columnsback to summary
private ObservableList<? extends TableColumnBase<S, T>> columns

Represents the actual columns directly contained in this nested column. It does NOT include ANY of the children of these columns, if any exist.

columnsListenerback to summary
private final ListChangeListener<TableColumnBase<S, T>> columnsListener
DEFAULT_STYLE_CLASSback to summary
pack-priv static final String DEFAULT_STYLE_CLASS

Hides javafx.scene.control.skin.TableColumnHeader.DEFAULT_STYLE_CLASS.

DRAG_RECT_WIDTHback to summary
private static final int DRAG_RECT_WIDTH
dragAnchorXback to summary
private double dragAnchorX
dragRectsback to summary
private Map<TableColumnBase<?, ?>, Rectangle> dragRects
labelback to summary
private TableColumnHeader label

Hides javafx.scene.control.skin.TableColumnHeader.label.

lastXback to summary
private double lastX
rectCursorChangeListenerback to summary
private static final EventHandler<MouseEvent> rectCursorChangeListener
rectMouseDraggedback to summary
private static final EventHandler<MouseEvent> rectMouseDragged
rectMousePressedback to summary
private static final EventHandler<MouseEvent> rectMousePressed
rectMouseReleasedback to summary
private static final EventHandler<MouseEvent> rectMouseReleased
TABLE_COLUMN_HEADER_KEYback to summary
private static final String TABLE_COLUMN_HEADER_KEY
TABLE_COLUMN_KEYback to summary
private static final String TABLE_COLUMN_KEY
unmodifiableColumnHeadersback to summary
private ObservableList<TableColumnHeader> unmodifiableColumnHeaders
updateColumnsback to summary
pack-priv boolean updateColumns
weakColumnsListenerback to summary
private final WeakListChangeListener<E> weakColumnsListener

Constructor Detail

NestedTableColumnHeaderback to summary
public NestedTableColumnHeader(final TableColumnBase<S, T> tc)

Creates a new NestedTableColumnHeader instance to visually represent the given TableColumnBase instance.

Parameters
tc:TableColumnBase<S, T>

The table column to be visually represented by this instance.

Method Detail

checkStateback to summary
private void checkState()
columnResizingback to summary
private void columnResizing(TableColumnBase<S, T> col, MouseEvent me)
columnResizingCompleteback to summary
private void columnResizingComplete(TableColumnBase<S, T> col, MouseEvent me)
columnResizingStartedback to summary
private void columnResizingStarted(double startX)
computePrefHeightback to summary
protected double computePrefHeight(double width)

Overrides javafx.scene.control.skin.TableColumnHeader.computePrefHeight.

Doc from javafx.scene.control.skin.TableColumnHeader.computePrefHeight.

Computes the preferred height of this region for the given width; Region subclasses should override this method to return an appropriate value based on their content and layout strategy. If the subclass doesn't have a HORIZONTAL content bias, then the width parameter can be ignored.

Parameters
width:double

Doc from javafx.scene.Parent.computePrefHeight.

the width that should be used if preferred height depends on it

Returns:double

Doc from javafx.scene.layout.Region.computePrefHeight.

the computed preferred height for this region

Annotations
@Override
computePrefWidthback to summary
protected double computePrefWidth(double height)

Overrides javafx.scene.control.skin.TableColumnHeader.computePrefWidth.

Doc from javafx.scene.control.skin.TableColumnHeader.computePrefWidth.

Computes the preferred width of this region for the given height. Region subclasses should override this method to return an appropriate value based on their content and layout strategy. If the subclass doesn't have a VERTICAL content bias, then the height parameter can be ignored.

Parameters
height:double

Doc from javafx.scene.Parent.computePrefWidth.

the height that should be used if preferred width depends on it

Returns:double

Doc from javafx.scene.layout.Region.computePrefWidth.

the computed preferred width for this region

Annotations
@Override
createColumnHeaderback to summary
private TableColumnHeader createColumnHeader(TableColumnBase<S, T> col)
createTableColumnHeaderback to summary
protected TableColumnHeader createTableColumnHeader(TableColumnBase<S, T> col)

Creates a new TableColumnHeader instance for the given TableColumnBase instance. The general pattern for implementing this method is as follows:

  • If the given TableColumnBase instance is null, has no child columns, or if the given TableColumnBase instance equals the TableColumnBase instance returned by calling getTableColumn(), then it is suggested to return a TableColumnHeader instance comprised of the given column.
  • Otherwise, we can presume that the given TableColumnBase instance has child columns, and in this case it is suggested to return a NestedTableColumnHeader instance instead.

Note

In most circumstances this method should not be overridden, but in some circumstances it makes sense (e.g. testing, or when extreme customization is desired).

Parameters
col:TableColumnBase<S, T>

the table column

Returns:TableColumnHeader

A new TableColumnHeader instance.

disposeback to summary
pack-priv void dispose()

Overrides javafx.scene.control.skin.TableColumnHeader.dispose.

Annotations
@Override
getColumnHeadersback to summary
public final ObservableList<TableColumnHeader> getColumnHeaders()

Returns an unmodifiable list of the TableColumnHeader instances that are children of this NestedTableColumnHeader.

Returns:ObservableList<TableColumnHeader>

the unmodifiable list of TableColumnHeader of this NestedTableColumnHeader

getColumnsback to summary
pack-priv ObservableList<? extends TableColumnBase<S, T>> getColumns()
getDragRectHeightback to summary
pack-priv double getDragRectHeight()

Overrides javafx.scene.control.skin.TableColumnHeader.getDragRectHeight.

Annotations
@Override
initStyleClassesback to summary
pack-priv void initStyleClasses()

Overrides javafx.scene.control.skin.TableColumnHeader.initStyleClasses.

Annotations
@Override
isColumnResizingEnabledback to summary
private boolean isColumnResizingEnabled()
layoutChildrenback to summary
protected void layoutChildren()

Overrides javafx.scene.control.skin.TableColumnHeader.layoutChildren.

Doc from javafx.scene.control.skin.TableColumnHeader.layoutChildren.

Invoked during the layout pass to layout the children in this Parent. By default it will only set the size of managed, resizable content to their preferred sizes and does not do any node positioning.

Subclasses should override this function to layout content as needed.

Annotations
@Override
rebuildDragRectsback to summary
private void rebuildDragRects()
representsback to summary
pack-priv boolean represents(TableColumnBase<?, ?> column)

Overrides javafx.scene.control.skin.TableColumnHeader.represents.

Annotations
@Override
setColumnsback to summary
pack-priv void setColumns(ObservableList<? extends TableColumnBase<S, T>> newColumns)
setHeadersNeedUpdateback to summary
pack-priv void setHeadersNeedUpdate()
setParentHeaderback to summary
pack-priv void setParentHeader(NestedTableColumnHeader parentHeader)

Overrides javafx.scene.control.skin.TableColumnHeader.setParentHeader.

Annotations
@Override
setTableHeaderRowback to summary
pack-priv void setTableHeaderRow(TableHeaderRow header)

Overrides javafx.scene.control.skin.TableColumnHeader.setTableHeaderRow.

Annotations
@Override
updateContentback to summary
private void updateContent()
updateTableColumnHeadersback to summary
pack-priv void updateTableColumnHeaders()