Component content =
(Component)wtkxSerializer.readObject(getClass().getResource("fixed_column_table.wtkx"));
// Get references to the table views and table view headers
final TableView primaryTableView =
(TableView)wtkxSerializer.getObjectByName("primaryTableView");
final TableViewHeader primaryTableViewHeader =
(TableViewHeader)wtkxSerializer.getObjectByName("primaryTableViewHeader");
final TableView fixedTableView =
(TableView)wtkxSerializer.getObjectByName("fixedTableView");
final TableViewHeader fixedTableViewHeader =
(TableViewHeader)wtkxSerializer.getObjectByName("fixedTableViewHeader");
// Keep selection state in sync
primaryTableView.getTableViewSelectionListeners().add(new TableViewSelectionListener() {
public void selectedRangeAdded(TableView tableView, int rangeStart, int rangeEnd) {
if (!synchronizingSelection) {
synchronizingSelection = true;
fixedTableView.addSelectedRange(rangeStart, rangeEnd);
synchronizingSelection = false;
}
}
public void selectedRangeRemoved(TableView tableView, int rangeStart, int rangeEnd) {
if (!synchronizingSelection) {
synchronizingSelection = true;
fixedTableView.removeSelectedRange(rangeStart, rangeEnd);
synchronizingSelection = false;
}
}
public void selectedRangesChanged(TableView tableView, Sequence<Span> previousSelectedRanges) {
if (!synchronizingSelection) {
synchronizingSelection = true;
fixedTableView.setSelectedRanges(tableView.getSelectedRanges());
synchronizingSelection = false;
}
}
});
fixedTableView.getTableViewSelectionListeners().add(new TableViewSelectionListener() {
public void selectedRangeAdded(TableView tableView, int rangeStart, int rangeEnd) {
if (!synchronizingSelection) {
synchronizingSelection = true;
primaryTableView.addSelectedRange(rangeStart, rangeEnd);
synchronizingSelection = false;
}
}
public void selectedRangeRemoved(TableView tableView, int rangeStart, int rangeEnd) {
if (!synchronizingSelection) {
synchronizingSelection = true;
primaryTableView.removeSelectedRange(rangeStart, rangeEnd);
synchronizingSelection = false;
}
}
public void selectedRangesChanged(TableView tableView, Sequence<Span> previousSelectedRanges) {
if (!synchronizingSelection) {
synchronizingSelection = true;
primaryTableView.setSelectedRanges(tableView.getSelectedRanges());
synchronizingSelection = false;
}
}
});
// Keep header state in sync
primaryTableViewHeader.getTableViewHeaderPressListeners().add(new TableView.SortHandler() {
public void headerPressed(TableViewHeader tableViewHeader, int index) {
super.headerPressed(tableViewHeader, index);
TableView.ColumnSequence columns = fixedTableView.getColumns();
for (int i = 0, n = columns.getLength(); i < n; i++) {
TableView.Column column = columns.get(i);
column.setSortDirection((SortDirection)null);
}
}