Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update SpreadsheetView code to jfx17 #1376

Closed
wants to merge 36 commits into from
Closed
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
f7eaf8f
Release v8.40.18
abhinayagarwal Nov 1, 2020
dc02f72
Upgrade version to 8.40.19-SNAPSHOT
Nov 1, 2020
cce2063
Remove VirtualFlow reflection methods in gridViewSkin
Maxoudela Feb 9, 2021
d292e6e
Update license, remove unused imports and jvm args
abhinayagarwal Feb 14, 2021
5f49d3f
Merge branch 'controlsfx:jfx-13' into jfx-13
Maxoudela May 28, 2021
e9e568c
Merge branch 'controlsfx:jfx-13' into jfx-13
Maxoudela Jul 9, 2021
7020100
Merge branch 'controlsfx:jfx-13' into jfx-13
Maxoudela Jul 22, 2021
ae18992
- Update code to be similar to OpenJFX 17 one.
Maxoudela Jul 26, 2021
246d898
Use WeakEventHandler for ContextMenu onShowing and onAction to avoid …
Maxoudela Aug 2, 2021
2595a4c
Rename scrollTo to scrollToTop in order to see rows that are scrolled…
Maxoudela Aug 2, 2021
8761dee
Re-activate resizing of several columns at once.
Maxoudela Aug 3, 2021
a6885c6
Merge branch 'master' of https://github.com/controlsfx/controlsfx int…
Maxoudela Aug 17, 2021
8eaf545
Key pressed to trigger edition is considered for first time edition.
Maxoudela Aug 17, 2021
c94d7b3
Apply CSS to cell before loading style in browser
Maxoudela Aug 18, 2021
949ad65
Refactor HorizontalPicker to avoid infinite loop by trying to reuse p…
Maxoudela Aug 20, 2021
c10e53f
Refactor VerticalHeader to avoid infinite loop by trying to reuse pic…
Maxoudela Sep 8, 2021
6faf618
Remove useless requestLayout methods
Maxoudela Sep 8, 2021
dc5d79f
Fix autofit for columns to use the GridViewSkin algorithm
Maxoudela Sep 22, 2021
0c1fce6
Update SpreadsheetView selection model in order to only scroll to sel…
Maxoudela Sep 24, 2021
991b6b2
Remove useless mouse click handler since key released is doing the tr…
Maxoudela Sep 24, 2021
94cd06b
Use a ConcurrentHashMap instead of a normal HashMap to avoid concurre…
Maxoudela Sep 27, 2021
51b7eef
Force the css to be applied before computing the height of a cell tha…
Maxoudela Sep 27, 2021
f78a63a
Register arrow movement instead of all keys for more precision for sc…
Maxoudela Oct 6, 2021
77655a6
Remove class selectors as they are not working anymore (the reason is…
Maxoudela Oct 20, 2021
ca52840
Using visibility instead of children size for retrieving the top row
Maxoudela Oct 20, 2021
7278780
Reduce the size of scrollBars inside Cell's TextArea with big fonts
Maxoudela Nov 5, 2021
ac77e88
Merge pull request #3 from controlsfx/jfx-13
Maxoudela Jan 14, 2022
179d723
Avoid NPE that can happen somehow on extreme case in GridRowSkin.
Maxoudela Jan 14, 2022
09eb1e7
Authorize to add a filter on a spanned cell (in column) (only one fi…
Maxoudela Jan 25, 2022
217189a
Refresh the TableView when resizing rows to update the scrollBars acc…
Maxoudela Jan 26, 2022
ae3d83c
Preventing tab and enter to be inserted in textArea editor when press…
Maxoudela Jan 27, 2022
06e3e43
Remove unnecessary left padding for JDK 17.
Maxoudela Jan 28, 2022
07b5638
Fix code for activate in GridVieBehavior: activate is allowed if no e…
Maxoudela Feb 4, 2022
a5e7dbd
Preventing memory leak in GridRow by using a weakMapListener.
Maxoudela Apr 5, 2022
be95200
Preventing constant layout in VirtualFlow when zooming.
Maxoudela Apr 5, 2022
25e97fa
Merge branch 'controlsfx:master' into sam-update-code-to-jfx17
Maxoudela May 3, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (c) 2013, 2018 ControlsFX
* Copyright (c) 2013, 2021 ControlsFX
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
Expand Down
288 changes: 133 additions & 155 deletions controlsfx/src/main/java/impl/org/controlsfx/spreadsheet/GridRowSkin.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (c) 2015 ControlsFX All rights reserved.
* Copyright (c) 2015, 2021 ControlsFX All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: *
Expand Down Expand Up @@ -33,6 +33,7 @@
import javafx.scene.control.TablePositionBase;
import javafx.scene.control.TableSelectionModel;
import javafx.scene.control.TableView;
import javafx.scene.input.KeyEvent;
import javafx.util.Pair;
import org.controlsfx.control.spreadsheet.SpreadsheetCell;

Expand Down Expand Up @@ -494,6 +495,14 @@ private int findPreviousColumn(TablePositionBase focusedCell, SpreadsheetCell ce
return 0;
}

@Override
protected void activate(KeyEvent e) {
// If we are currently editing, do not trigger another edition (for enter, cell below will start edition otherwise)
if (skin.getSkinnable().getEditingCell() != null) {
super.activate(e);
}
}

/**
* Cell is empty if there's nothing in it or if we have a NaN instead of a
* proper Double.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumnBase;
import javafx.scene.control.TableFocusModel;
import javafx.scene.control.TableRow;
import javafx.scene.control.TableView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Region;
Expand Down Expand Up @@ -82,7 +81,7 @@
* TableViewBehavior.
*
*/
public class GridViewSkin extends TableViewSkinBase<ObservableList<SpreadsheetCell>,ObservableList<SpreadsheetCell>,TableView<ObservableList<SpreadsheetCell>>,TableRow<ObservableList<SpreadsheetCell>>,TableColumn<ObservableList<SpreadsheetCell>,?>> {
public class GridViewSkin extends TableViewSkinBase<ObservableList<SpreadsheetCell>,ObservableList<SpreadsheetCell>,TableView<ObservableList<SpreadsheetCell>>, GridRow,TableColumn<ObservableList<SpreadsheetCell>,?>> {

/***************************************************************************
* * STATIC FIELDS * *
Expand Down Expand Up @@ -194,12 +193,7 @@ public GridViewSkin(final SpreadsheetHandle handle) {
TableView<ObservableList<SpreadsheetCell>> tableView = handle.getGridView();

//Set a new row factory, useful when handling row height.
tableView.setRowFactory(new Callback<TableView<ObservableList<SpreadsheetCell>>, TableRow<ObservableList<SpreadsheetCell>>>() {
@Override
public TableRow<ObservableList<SpreadsheetCell>> call(TableView<ObservableList<SpreadsheetCell>> p) {
return new GridRow(handle);
}
});
tableView.setRowFactory((TableView<ObservableList<SpreadsheetCell>> p) -> new GridRow(handle));
getVirtualFlow().setCellFactory(param -> createCell());

tableView.getStyleClass().add("cell-spreadsheet"); //$NON-NLS-1$
Expand Down Expand Up @@ -262,11 +256,11 @@ public TableRow<ObservableList<SpreadsheetCell>> call(TableView<ObservableList<S
});
}

private TableRow<ObservableList<SpreadsheetCell>> createCell() {
TableRow<ObservableList<SpreadsheetCell>> row = null;
private GridRow createCell() {
GridRow row = null;

TableView<ObservableList<SpreadsheetCell>> tableView = getSkinnable();
row = tableView.getRowFactory().call(tableView);
row = (GridRow) tableView.getRowFactory().call(tableView);

row.updateTableView(tableView);
return row;
Expand Down Expand Up @@ -832,16 +826,9 @@ void focusScroll() {
****************************************************************
*/
final int row = fm.getFocusedIndex();
// We try to make visible the rows that may be hidden by Fixed rows
// if (!getFlow().getCells().isEmpty()
// //FIXME
// && getFlow().getCells().get(getFixedRowSize()).getIndex() > row
// && !spreadsheetView.getFixedRows().contains(spreadsheetView.getModelRow(row))) {
// getFlow().scrollTo(row);
// } else {
// FIXME flow.show() has been removed so ScrollTo is the only method left
getFlow().scrollTo(row);
// }

// flow.show() has been removed so ScrollTo is the only method left
getFlow().scrollTo(row);
scrollHorizontally();
/**
* ***************************************************************
Expand All @@ -863,7 +850,7 @@ protected void onSelectBelowCell() {
}

@Override
protected VirtualFlow<TableRow<ObservableList<SpreadsheetCell>>> createVirtualFlow() {
protected VirtualFlow<GridRow> createVirtualFlow() {
return new GridVirtualFlow<>(this);
}

Expand All @@ -875,15 +862,6 @@ protected TableHeaderRow createTableHeaderRow() {
public HorizontalHeader getHorizontalHeader(){
return (HorizontalHeader) getTableHeaderRow();
}

// BooleanProperty getTableMenuButtonVisibleProperty() {
// return tableMenuButtonVisibleProperty();
// }

@Override
public void scrollHorizontally(){
super.scrollHorizontally();
}

@Override
protected void scrollHorizontally(TableColumn<ObservableList<SpreadsheetCell>, ?> col) {
Expand Down Expand Up @@ -953,8 +931,8 @@ private void verticalScroll() {
verticalHeader.requestLayout();
}

GridVirtualFlow<?> getFlow() {
return (GridVirtualFlow<?>) getVirtualFlow();
GridVirtualFlow<GridRow> getFlow() {
return (GridVirtualFlow<GridRow>) getVirtualFlow();
}

/**
Expand Down Expand Up @@ -1072,102 +1050,6 @@ public void onChanged(Change<? extends SpreadsheetColumn> c) {
}
};

// @Override
// protected TableSelectionModel<ObservableList<SpreadsheetCell>> getSelectionModel() {
// return getSkinnable().getSelectionModel();
// }
//
// @Override
// protected TableFocusModel<ObservableList<SpreadsheetCell>, TableColumn<ObservableList<SpreadsheetCell>, ?>> getFocusModel() {
// return getSkinnable().getFocusModel();
// }
//
// @Override
// protected TablePositionBase<? extends TableColumn<ObservableList<SpreadsheetCell>, ?>> getFocusedCell() {
// return getSkinnable().getFocusModel().getFocusedCell();
// }
//
// @Override
// protected ObservableList<? extends TableColumn<ObservableList<SpreadsheetCell>, ?>> getVisibleLeafColumns() {
// return getSkinnable().getVisibleLeafColumns();
// }
//
// @Override
// protected int getVisibleLeafIndex(TableColumn<ObservableList<SpreadsheetCell>, ?> tc) {
// return getSkinnable().getVisibleLeafIndex(tc);
// }
//
// @Override
// protected TableColumn<ObservableList<SpreadsheetCell>, ?> getVisibleLeafColumn(int col) {
// return getSkinnable().getVisibleLeafColumn(col);
// }
//
// @Override
// protected ObservableList<TableColumn<ObservableList<SpreadsheetCell>, ?>> getColumns() {
// return getSkinnable().getColumns();
// }
//
// @Override
// protected ObservableList<TableColumn<ObservableList<SpreadsheetCell>, ?>> getSortOrder() {
// return getSkinnable().getSortOrder();
// }
//
// @Override
// protected ObjectProperty<ObservableList<ObservableList<SpreadsheetCell>>> itemsProperty() {
// return getSkinnable().itemsProperty();
// }
//
// @Override
// protected ObjectProperty<Callback<TableView<ObservableList<SpreadsheetCell>>, TableRow<ObservableList<SpreadsheetCell>>>> rowFactoryProperty() {
// return getSkinnable().rowFactoryProperty();
// }
//
// @Override
// protected ObjectProperty<Node> placeholderProperty() {
// return getSkinnable().placeholderProperty();
// }
//
// @Override
// protected BooleanProperty tableMenuButtonVisibleProperty() {
// return getSkinnable().tableMenuButtonVisibleProperty();
// }
//
// @Override
// protected ObjectProperty<Callback<ResizeFeaturesBase, Boolean>> columnResizePolicyProperty() {
// return (ObjectProperty<Callback<ResizeFeaturesBase, Boolean>>) (Object)getSkinnable().columnResizePolicyProperty();
// }
//
// @Override
// protected boolean resizeColumn(TableColumn<ObservableList<SpreadsheetCell>, ?> tc, double delta) {
// getHorizontalHeader().getRootHeader().lastColumnResized = getColumns().indexOf(tc);
// boolean returnedValue = getSkinnable().resizeColumn(tc, delta);
// if(returnedValue){
//FIXME Reactivate that
// Event.fireEvent(spreadsheetView, new SpreadsheetView.ColumnWidthEvent(getColumns().indexOf(tc), tc.getWidth()));
// }
// return returnedValue;
// }
//
// @Override
// protected void edit(int index, TableColumn<ObservableList<SpreadsheetCell>, ?> column) {
// getSkinnable().edit(index, column);
// }
//
// @Override
// public TableRow<ObservableList<SpreadsheetCell>> createCell() {
// TableRow<ObservableList<SpreadsheetCell>> cell;
//
// if (getSkinnable().getRowFactory() != null) {
// cell = getSkinnable().getRowFactory().call(getSkinnable());
// } else {
// cell = new TableRow<>();
// }
//
// cell.updateTableView(getSkinnable());
// return cell;
// }

@Override
public final int getItemCount() {
return getSkinnable().getItems() == null ? 0 : getSkinnable().getItems().size();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (c) 2013, 2016 ControlsFX
* Copyright (c) 2013, 2021 ControlsFX
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
Expand Down Expand Up @@ -171,15 +171,8 @@ public void changed(ObservableValue<? extends Number> observable, Number oldValu
});
}

// @Override
// public void show(int index) {
// super.show(index);
// layoutTotal();
// layoutFixedRows();
// }

@Override
public void scrollTo(int index) {
public void scrollToTop(int index) {
abhinayagarwal marked this conversation as resolved.
Show resolved Hide resolved
//If we have some fixedRows, we check if the selected row is not below them
if (!getCells().isEmpty() && !VerticalHeader.isFixedRowEmpty(spreadSheetView)) {
double offset = gridViewSkin.getFixedRowHeight();
Expand All @@ -193,7 +186,7 @@ public void scrollTo(int index) {

layoutTotal();
layoutFixedRows();
}
}

@Override
public double scrollPixels(final double delta) {
Expand Down
Loading