Skip to content

Commit 245d39b

Browse files
committed
fix: use the same cell reference constructor in order to ensure consistency
1 parent 31d0441 commit 245d39b

File tree

9 files changed

+77
-39
lines changed

9 files changed

+77
-39
lines changed

vaadin-spreadsheet-flow-parent/vaadin-spreadsheet-flow-integration-tests/src/main/java/com/vaadin/flow/component/spreadsheet/tests/fixtures/PopupButtonFixture.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ public void loadFixture(final Spreadsheet spreadsheet) {
2626
}
2727
List<String> values = new ArrayList<>(VALUES);
2828
CellReference ref = event.getSelectedCellReference();
29-
CellReference newRef = new CellReference(ref.getRow(),
30-
ref.getCol());
29+
CellReference newRef = new CellReference(
30+
spreadsheet.getActiveSheet().getSheetName(), ref.getRow(),
31+
ref.getCol(), false, false);
3132
DataValidationButton popupButton = new DataValidationButton(
3233
spreadsheet, values);
3334
popupButton.setUp();

vaadin-spreadsheet-flow-parent/vaadin-spreadsheet-flow/src/main/java/com/vaadin/flow/component/spreadsheet/CellSelectionManager.java

+38-21
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,9 @@ public SelectionChangeEvent getLatestSelectionEvent() {
116116
}
117117

118118
boolean isCellInsideSelection(int row, int column) {
119-
CellReference cellReference = new CellReference(row - 1, column - 1);
119+
CellReference cellReference = new CellReference(
120+
spreadsheet.getActiveSheet().getSheetName(), row - 1,
121+
column - 1, false, false);
120122
boolean inside = cellReference.equals(selectedCellReference)
121123
|| individualSelectedCells.contains(cellReference);
122124
if (!inside) {
@@ -173,7 +175,9 @@ protected void reloadCurrentSelection() {
173175
*/
174176
protected void onCellSelected(int row, int column,
175177
boolean discardOldRangeSelection) {
176-
CellReference cellReference = new CellReference(row - 1, column - 1);
178+
CellReference cellReference = new CellReference(
179+
spreadsheet.getActiveSheet().getSheetName(), row - 1,
180+
column - 1, false, false);
177181
CellReference previousCellReference = selectedCellReference;
178182
if (!cellReference.equals(previousCellReference)
179183
|| discardOldRangeSelection && (!cellRangeAddresses.isEmpty()
@@ -217,8 +221,9 @@ protected void onSheetAddressChanged(String value,
217221
region.col1 - 1, region.col2 - 1);
218222
}
219223
handleCellRangeSelection(cra);
220-
selectedCellReference = new CellReference(cra.getFirstRow(),
221-
cra.getFirstColumn());
224+
selectedCellReference = new CellReference(
225+
spreadsheet.getActiveSheet().getSheetName(),
226+
cra.getFirstRow(), cra.getFirstColumn(), false, false);
222227
paintedCellRange = cra;
223228
cellRangeAddresses.clear();
224229
cellRangeAddresses.add(cra);
@@ -234,8 +239,10 @@ protected void onSheetAddressChanged(String value,
234239
.createCorrectCellRangeAddress(region.row1,
235240
region.col1, region.row2, region.col2);
236241
handleCellRangeSelection(cra);
237-
selectedCellReference = new CellReference(cra.getFirstRow(),
238-
cra.getFirstColumn());
242+
selectedCellReference = new CellReference(
243+
spreadsheet.getActiveSheet().getSheetName(),
244+
cra.getFirstRow(), cra.getFirstColumn(), false,
245+
false);
239246
paintedCellRange = cra;
240247
cellRangeAddresses.clear();
241248
cellRangeAddresses.add(cra);
@@ -382,8 +389,9 @@ protected void handleCellRangeSelection(CellRangeAddress cra) {
382389

383390
protected void handleCellRangeSelection(String name, CellRangeAddress cra) {
384391

385-
final CellReference firstCell = new CellReference(cra.getFirstRow(),
386-
cra.getFirstColumn());
392+
final CellReference firstCell = new CellReference(
393+
spreadsheet.getActiveSheet().getSheetName(), cra.getFirstRow(),
394+
cra.getFirstColumn(), false, false);
387395

388396
handleCellRangeSelection(name, firstCell, cra, true);
389397
}
@@ -463,8 +471,9 @@ protected void onCellRangePainted(int selectedCellRow,
463471
cellRangeAddresses.clear();
464472
individualSelectedCells.clear();
465473

466-
selectedCellReference = new CellReference(selectedCellRow - 1,
467-
selectedCellColumn - 1);
474+
selectedCellReference = new CellReference(
475+
spreadsheet.getActiveSheet().getSheetName(),
476+
selectedCellRow - 1, selectedCellColumn - 1, false, false);
468477

469478
CellRangeAddress cra = spreadsheet.createCorrectCellRangeAddress(row1,
470479
col1, row2, col2);
@@ -507,7 +516,9 @@ protected void onCellAddToSelectionAndSelected(int row, int column) {
507516
individualSelectedCells.add(selectedCellReference);
508517
}
509518
handleCellSelection(row, column);
510-
selectedCellReference = new CellReference(row - 1, column - 1);
519+
selectedCellReference = new CellReference(
520+
spreadsheet.getActiveSheet().getSheetName(), row - 1,
521+
column - 1, false, false);
511522
spreadsheet.loadCustomEditorOnSelectedCell();
512523
if (individualSelectedCells.contains(selectedCellReference)) {
513524
individualSelectedCells.remove(
@@ -558,8 +569,9 @@ protected void onCellsAddedToRangeSelection(int row1, int col1, int row2,
558569
*/
559570
protected void onRowSelected(int row, int firstColumnIndex) {
560571
handleCellSelection(row, firstColumnIndex);
561-
selectedCellReference = new CellReference(row - 1,
562-
firstColumnIndex - 1);
572+
selectedCellReference = new CellReference(
573+
spreadsheet.getActiveSheet().getSheetName(), row - 1,
574+
firstColumnIndex - 1, false, false);
563575
spreadsheet.loadCustomEditorOnSelectedCell();
564576
cellRangeAddresses.clear();
565577
individualSelectedCells.clear();
@@ -592,8 +604,9 @@ protected void onRowAddedToRangeSelection(int row, int firstColumnIndex) {
592604
individualSelectedCells.add(selectedCellReference);
593605
}
594606
handleCellSelection(row, firstColumnIndex);
595-
selectedCellReference = new CellReference(row - 1,
596-
firstColumnIndex - 1);
607+
selectedCellReference = new CellReference(
608+
spreadsheet.getActiveSheet().getSheetName(), row - 1,
609+
firstColumnIndex - 1, false, false);
597610
spreadsheet.loadCustomEditorOnSelectedCell();
598611
cellRangeAddresses.add(spreadsheet.createCorrectCellRangeAddress(row, 1,
599612
row, spreadsheet.getColumns()));
@@ -612,8 +625,9 @@ protected void onRowAddedToRangeSelection(int row, int firstColumnIndex) {
612625
*/
613626
protected void onColumnSelected(int firstRowIndex, int column) {
614627
handleCellSelection(firstRowIndex, column);
615-
selectedCellReference = new CellReference(firstRowIndex - 1,
616-
column - 1);
628+
selectedCellReference = new CellReference(
629+
spreadsheet.getActiveSheet().getSheetName(), firstRowIndex - 1,
630+
column - 1, false, false);
617631
spreadsheet.loadCustomEditorOnSelectedCell();
618632
cellRangeAddresses.clear();
619633
individualSelectedCells.clear();
@@ -646,8 +660,9 @@ protected void onColumnAddedToSelection(int firstRowIndex, int column) {
646660
individualSelectedCells.add(selectedCellReference);
647661
}
648662
handleCellSelection(firstRowIndex, column);
649-
selectedCellReference = new CellReference(firstRowIndex - 1,
650-
column - 1);
663+
selectedCellReference = new CellReference(
664+
spreadsheet.getActiveSheet().getSheetName(), firstRowIndex - 1,
665+
column - 1, false, false);
651666
spreadsheet.loadCustomEditorOnSelectedCell();
652667
cellRangeAddresses.add(spreadsheet.createCorrectCellRangeAddress(1,
653668
column, spreadsheet.getRows(), column));
@@ -676,8 +691,10 @@ protected void mergedRegionAdded(CellRangeAddress region) {
676691
handleCellAddressChange(region.getFirstRow() + 1,
677692
region.getFirstColumn() + 1, false);
678693
}
679-
selectedCellReference = new CellReference(region.getFirstRow(),
680-
region.getFirstColumn());
694+
selectedCellReference = new CellReference(
695+
spreadsheet.getActiveSheet().getSheetName(),
696+
region.getFirstRow(), region.getFirstColumn(), false,
697+
false);
681698
fire = true;
682699
}
683700
for (Iterator<CellRangeAddress> i = cellRangeAddresses.iterator(); i

vaadin-spreadsheet-flow-parent/vaadin-spreadsheet-flow/src/main/java/com/vaadin/flow/component/spreadsheet/CellSelectionShifter.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,9 @@ private void fireCellValueChangeEvent(CellRangeAddress region) {
141141
for (int x = region.getFirstColumn(); x <= region
142142
.getLastColumn(); x++) {
143143
for (int y = region.getFirstRow(); y <= region.getLastRow(); y++) {
144-
cells.add(new CellReference(y, x));
144+
cells.add(new CellReference(
145+
spreadsheet.getActiveSheet().getSheetName(), y, x,
146+
false, false));
145147
}
146148
}
147149
spreadsheet.fireEvent(new CellValueChangeEvent(spreadsheet, cells));
@@ -399,8 +401,10 @@ public void onSelectionDecreasePainted(int r, int c) {
399401
if (!SpreadsheetUtil.isCellInRange(selectedCellReference,
400402
newPaintedCellRange)) {
401403
selectedCellReference = new CellReference(
404+
spreadsheet.getActiveSheet().getSheetName(),
402405
newPaintedCellRange.getFirstRow(),
403-
newPaintedCellRange.getFirstColumn());
406+
newPaintedCellRange.getFirstColumn(), false,
407+
false);
404408
}
405409
getCellSelectionManager().handleCellRangeSelection(
406410
selectedCellReference, newPaintedCellRange, false);

vaadin-spreadsheet-flow-parent/vaadin-spreadsheet-flow/src/main/java/com/vaadin/flow/component/spreadsheet/CellValueManager.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,9 @@ public void onCellValueChange(int col, int row, String value) {
602602

603603
// capture cell value to history
604604
CellValueCommand command = new CellValueCommand(spreadsheet);
605-
command.captureCellValues(new CellReference(row - 1, col - 1));
605+
command.captureCellValues(
606+
new CellReference(spreadsheet.getActiveSheet().getSheetName(),
607+
row - 1, col - 1, false, false));
606608
spreadsheet.getSpreadsheetHistoryManager().addCommand(command);
607609
boolean updateHyperlinks = false;
608610
boolean formulaChanged = false;

vaadin-spreadsheet-flow-parent/vaadin-spreadsheet-flow/src/main/java/com/vaadin/flow/component/spreadsheet/Spreadsheet.java

+11-5
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,8 @@ void setNamedRanges(List<String> namedRanges) {
643643
void onPopupButtonClick(int row, int column) {
644644
PopupButton popup = sheetPopupButtons
645645
.get(SpreadsheetUtil.relativeToAbsolute(this,
646-
new CellReference(row - 1, column - 1)));
646+
new CellReference(getActiveSheet().getSheetName(),
647+
row - 1, column - 1, false, false)));
647648
if (popup != null) {
648649
popup.openPopup();
649650
}
@@ -652,7 +653,8 @@ void onPopupButtonClick(int row, int column) {
652653
void onPopupClose(int row, int column) {
653654
PopupButton popup = sheetPopupButtons
654655
.get(SpreadsheetUtil.relativeToAbsolute(this,
655-
new CellReference(row - 1, column - 1)));
656+
new CellReference(getActiveSheet().getSheetName(),
657+
row - 1, column - 1, false, false)));
656658

657659
if (popup != null) {
658660
popup.closePopup();
@@ -2922,7 +2924,8 @@ private void rowsMoved(int first, int last, int n) {
29222924
} else if (numberOfRowsAboveWasChanged(row, last, first)) {
29232925
int newRow = cell.getRow() + n;
29242926
int col = cell.getCol();
2925-
CellReference newCell = new CellReference(newRow, col, true,
2927+
CellReference newCell = new CellReference(
2928+
getActiveSheet().getSheetName(), newRow, col, true,
29262929
true);
29272930
pbutton.setCellReference(newCell);
29282931
updated.put(newCell, pbutton);
@@ -4760,7 +4763,8 @@ public void setPopup(String cellAddress, PopupButton popupButton) {
47604763
* removes the pop-up button for the target cell.
47614764
*/
47624765
public void setPopup(int row, int col, PopupButton popupButton) {
4763-
setPopup(new CellReference(row, col), popupButton);
4766+
setPopup(new CellReference(getActiveSheet().getSheetName(), row, col,
4767+
false, false), popupButton);
47644768
}
47654769

47664770
/**
@@ -5184,7 +5188,9 @@ private static Set<CellReference> getAllSelectedCells(
51845188

51855189
for (int x = a.getFirstColumn(); x <= a.getLastColumn(); x++) {
51865190
for (int y = a.getFirstRow(); y <= a.getLastRow(); y++) {
5187-
cells.add(new CellReference(y, x));
5191+
cells.add(new CellReference(
5192+
selectedCellReference.getSheetName(), y, x,
5193+
false, false));
51885194
}
51895195
}
51905196
}

vaadin-spreadsheet-flow-parent/vaadin-spreadsheet-flow/src/main/java/com/vaadin/flow/component/spreadsheet/SpreadsheetHandlerImpl.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,9 @@ private void fireCellValueChangeEvent(CellRangeAddress region) {
334334
for (int x = region.getFirstColumn(); x <= region
335335
.getLastColumn(); x++) {
336336
for (int y = region.getFirstRow(); y <= region.getLastRow(); y++) {
337-
cells.add(new CellReference(y, x));
337+
cells.add(new CellReference(
338+
spreadsheet.getActiveSheet().getSheetName(), y, x,
339+
false, false));
338340
}
339341
}
340342
fireCellValueChangeEvent(cells);

vaadin-spreadsheet-flow-parent/vaadin-spreadsheet-flow/src/main/java/com/vaadin/flow/component/spreadsheet/command/CellShiftValuesCommand.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,10 @@ public CellReference getSelectedCellReference() {
5252
.isCellInRange(selectedCellReference, paintedCellRange)) {
5353
return selectedCellReference;
5454
} else {
55-
return new CellReference(paintedCellRange.getFirstRow(),
56-
paintedCellRange.getFirstColumn());
55+
return new CellReference(
56+
spreadsheet.getActiveSheet().getSheetName(),
57+
paintedCellRange.getFirstRow(),
58+
paintedCellRange.getFirstColumn(), false, false);
5759
}
5860
}
5961

vaadin-spreadsheet-flow-parent/vaadin-spreadsheet-flow/src/main/java/com/vaadin/flow/component/spreadsheet/command/CellValueCommand.java

+7-4
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@ public void captureCellRangeValues(CellRangeAddress... cellRanges) {
148148

149149
@Override
150150
public CellReference getSelectedCellReference() {
151-
return new CellReference(selectedCellRow, selectedcellCol);
151+
return new CellReference(spreadsheet.getActiveSheet().getSheetName(),
152+
selectedCellRow, selectedcellCol, false, false);
152153
}
153154

154155
@Override
@@ -339,13 +340,15 @@ public Set<CellReference> getChangedCells() {
339340
for (Object o : values) {
340341
if (o instanceof CellValue) {
341342
CellValue cellValue = (CellValue) o;
342-
changedCells
343-
.add(new CellReference(cellValue.row, cellValue.col));
343+
changedCells.add(new CellReference(
344+
spreadsheet.getActiveSheet().getSheetName(),
345+
cellValue.row, cellValue.col, false, false));
344346
} else {
345347
CellRangeValue cellRangeValue = (CellRangeValue) o;
346348
for (int r = cellRangeValue.row1; r <= cellRangeValue.row2; r++) {
347349
for (int c = cellRangeValue.col1; c <= cellRangeValue.col2; c++) {
348-
changedCells.add(new CellReference(r, c));
350+
changedCells.add(new CellReference(
351+
getSheet().getSheetName(), r, c, false, false));
349352
}
350353
}
351354
}

vaadin-spreadsheet-flow-parent/vaadin-spreadsheet-flow/src/main/java/com/vaadin/flow/component/spreadsheet/command/RowInsertOrDeleteCommand.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ public void execute() {
4444

4545
@Override
4646
public CellReference getSelectedCellReference() {
47-
return new CellReference(row, 0);
47+
return new CellReference(spreadsheet.getActiveSheet().getSheetName(),
48+
row, 0, false, false);
4849
}
4950

5051
@Override

0 commit comments

Comments
 (0)