< prev index next >
modules/javafx.controls/src/main/java/javafx/scene/control/skin/TableColumnHeader.java
Print this page
rev 10061 : 8166025: TableColumnHeader: loses custom style classes
*** 84,93 ****
--- 84,95 ----
* *
* Static Fields *
* *
**************************************************************************/
+ static final String DEFAULT_STYLE_CLASS = "column-header";
+
// Copied from TableColumn. The value here should always be in-sync with
// the value in TableColumn
static final double DEFAULT_COLUMN_WIDTH = 80.0F;
*** 145,154 ****
--- 147,158 ----
*
* @param skin The skin used by the UI control.
* @param tc The table column to be visually represented by this instance.
*/
public TableColumnHeader(final TableViewSkinBase skin, final TableColumnBase tc) {
+ getStyleClass().setAll(DEFAULT_STYLE_CLASS);
+
this.skin = skin;
setTableColumn(tc);
this.columnReorderLine = skin.getColumnReorderLine();
setFocusTraversable(false);
*** 186,200 ****
}
});
changeListenerHandler.registerChangeListener(tc.textProperty(), e -> label.setText(tc.getText()));
changeListenerHandler.registerChangeListener(tc.graphicProperty(), e -> label.setGraphic(tc.getGraphic()));
tc.getStyleClass().addListener(weakStyleClassListener);
setId(tc.getId());
setStyle(tc.getStyle());
- updateStyleClass();
/* Having TableColumn role parented by TableColumn causes VoiceOver to be unhappy */
setAccessibleRole(AccessibleRole.TABLE_COLUMN);
}
}
--- 190,206 ----
}
});
changeListenerHandler.registerChangeListener(tc.textProperty(), e -> label.setText(tc.getText()));
changeListenerHandler.registerChangeListener(tc.graphicProperty(), e -> label.setGraphic(tc.getGraphic()));
+ // add in all styleclasses from the table column into the header, and also set up a listener
+ // so that any subsequent changes to the table column are also applied to the header
+ getStyleClass().addAll(tc.getStyleClass());
tc.getStyleClass().addListener(weakStyleClassListener);
setId(tc.getId());
setStyle(tc.getStyle());
/* Having TableColumn role parented by TableColumn causes VoiceOver to be unhappy */
setAccessibleRole(AccessibleRole.TABLE_COLUMN);
}
}
*** 216,226 ****
updateColumnIndex();
updateSortPosition();
};
private ListChangeListener<String> styleClassListener = c -> {
! updateStyleClass();
};
private WeakListChangeListener<TableColumnBase<?,?>> weakSortOrderListener =
new WeakListChangeListener<TableColumnBase<?,?>>(sortOrderListener);
private final WeakListChangeListener<TableColumnBase<?,?>> weakVisibleLeafColumnsListener =
--- 222,239 ----
updateColumnIndex();
updateSortPosition();
};
private ListChangeListener<String> styleClassListener = c -> {
! while (c.next()) {
! if (c.wasRemoved()) {
! getStyleClass().removeAll(c.getRemoved());
! }
! if (c.wasAdded()) {
! getStyleClass().addAll(c.getAddedSubList());
! }
! }
};
private WeakListChangeListener<TableColumnBase<?,?>> weakSortOrderListener =
new WeakListChangeListener<TableColumnBase<?,?>>(sortOrderListener);
private final WeakListChangeListener<TableColumnBase<?,?>> weakVisibleLeafColumnsListener =
*** 469,485 ****
} else {
header.updateSortPosition();
}
}
- private void updateStyleClass() {
- // For now we leave the 'column-header' style class intact so that the
- // appropriate border styles are shown, etc.
- getStyleClass().setAll("column-header");
- getStyleClass().addAll(getTableColumn().getStyleClass());
- }
-
private void updateScene() {
// RT-17684: If the TableColumn widths are all currently the default,
// we attempt to 'auto-size' based on the preferred width of the first
// n rows (we can't do all rows, as that could conceivably be an unlimited
// number of rows retrieved from a very slow (e.g. remote) data source.
--- 482,491 ----
< prev index next >