< 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 >