Skip to content

Commit 81af8ea

Browse files
authored
Merge pull request #7209 from mP1/feature/SpreadsheetEngine-window-SpreadsheetViewport-replaces-component-parameters
SpreadsheetEngine.window SpreadsheetViewport replaces component param…
2 parents 3463218 + 9697cc4 commit 81af8ea

19 files changed

+94
-278
lines changed

src/main/java/walkingkooka/spreadsheet/engine/BasicSpreadsheetEngine.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2003,18 +2003,16 @@ public int rowCount(final SpreadsheetEngineContext context) {
20032003
// WINDOW...........................................................................................................
20042004

20052005
@Override
2006-
public SpreadsheetViewportWindows window(final SpreadsheetViewportRectangle viewportRectangle,
2007-
final boolean includeFrozenColumnsRows,
2008-
final Optional<SpreadsheetSelection> selection,
2006+
public SpreadsheetViewportWindows window(final SpreadsheetViewport viewport,
20092007
final SpreadsheetEngineContext context) {
2010-
Objects.requireNonNull(viewportRectangle, "viewportRectangle");
2011-
Objects.requireNonNull(selection, "selection");
2008+
Objects.requireNonNull(viewport, "viewport");
20122009
Objects.requireNonNull(context, "context");
20132010

20142011
return this.windowNonLabelSelection(
2015-
viewportRectangle,
2016-
includeFrozenColumnsRows,
2017-
selection.map(context::resolveIfLabelOrFail),
2012+
viewport.rectangle(),
2013+
viewport.includeFrozenColumnsRows(),
2014+
viewport.anchoredSelection()
2015+
.map(a -> context.resolveIfLabelOrFail(a.selection())),
20182016
context
20192017
);
20202018
}
@@ -2487,7 +2485,7 @@ private Optional<SpreadsheetViewport> navigateNonLabelSelection(final Spreadshee
24872485
(c) -> this.columnWidth(c, context),
24882486
repository.rows()::isHidden,
24892487
(r) -> this.rowHeight(r, context),
2490-
(r, i, s) -> this.window(r, i, s, context)
2488+
(v) -> this.window(v, context)
24912489
)
24922490
);
24932491
}

src/main/java/walkingkooka/spreadsheet/engine/FakeSpreadsheetEngine.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import walkingkooka.spreadsheet.reference.SpreadsheetRowReference;
3333
import walkingkooka.spreadsheet.reference.SpreadsheetSelection;
3434
import walkingkooka.spreadsheet.viewport.SpreadsheetViewport;
35-
import walkingkooka.spreadsheet.viewport.SpreadsheetViewportRectangle;
3635
import walkingkooka.spreadsheet.viewport.SpreadsheetViewportWindows;
3736
import walkingkooka.test.Fake;
3837
import walkingkooka.tree.expression.Expression;
@@ -289,9 +288,7 @@ public int rowCount(final SpreadsheetEngineContext context) {
289288
}
290289

291290
@Override
292-
public SpreadsheetViewportWindows window(final SpreadsheetViewportRectangle viewportRectangle,
293-
final boolean includeFrozenColumnsRows,
294-
final Optional<SpreadsheetSelection> selection,
291+
public SpreadsheetViewportWindows window(final SpreadsheetViewport viewport,
295292
final SpreadsheetEngineContext context) {
296293
throw new UnsupportedOperationException();
297294
}

src/main/java/walkingkooka/spreadsheet/engine/SpreadsheetEngine.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -358,9 +358,7 @@ SpreadsheetDelta findLabelsWithReference(final SpreadsheetExpressionReference re
358358
* </ul>
359359
* If the selection is a {@link SpreadsheetLabelName} it will be resolved into a non label before continuing.
360360
*/
361-
SpreadsheetViewportWindows window(final SpreadsheetViewportRectangle viewportRectangle,
362-
final boolean includeFrozenColumnsRows,
363-
final Optional<SpreadsheetSelection> selection,
361+
SpreadsheetViewportWindows window(final SpreadsheetViewport viewport,
364362
final SpreadsheetEngineContext context);
365363

366364
/**

src/main/java/walkingkooka/spreadsheet/engine/SpreadsheetEngineTesting.java

Lines changed: 11 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2733,31 +2733,11 @@ default void navigateAndCheck(final SpreadsheetEngine engine,
27332733
// window...........................................................................................................
27342734

27352735
@Test
2736-
default void testWindowWithNullRectangleFails() {
2736+
default void testWindowWithNullSpreadsheetViewportFails() {
27372737
assertThrows(
27382738
NullPointerException.class,
27392739
() -> this.createSpreadsheetEngine()
27402740
.window(
2741-
null,
2742-
false,
2743-
SpreadsheetEngine.NO_SELECTION,
2744-
SpreadsheetEngineContexts.fake()
2745-
)
2746-
);
2747-
}
2748-
2749-
@Test
2750-
default void testWindowWithNullSelectionFails() {
2751-
assertThrows(
2752-
NullPointerException.class,
2753-
() -> this.createSpreadsheetEngine()
2754-
.window(
2755-
SpreadsheetViewportRectangle.with(
2756-
SpreadsheetSelection.A1,
2757-
1, // width
2758-
2 // height
2759-
),
2760-
false,
27612741
null,
27622742
SpreadsheetEngineContexts.fake()
27632743
)
@@ -2770,47 +2750,39 @@ default void testWindowWithNullContextFails() {
27702750
NullPointerException.class,
27712751
() -> this.createSpreadsheetEngine()
27722752
.window(
2773-
SpreadsheetViewportRectangle.with(
2774-
SpreadsheetSelection.A1,
2775-
1, // width
2776-
2 // height
2753+
SpreadsheetViewport.with(
2754+
SpreadsheetViewportRectangle.with(
2755+
SpreadsheetSelection.A1,
2756+
1, // width
2757+
2 // height
2758+
)
27772759
),
2778-
false,
2779-
SpreadsheetEngine.NO_SELECTION,
27802760
null
27812761
)
27822762
);
27832763
}
27842764

27852765
default void windowAndCheck(
27862766
final SpreadsheetEngine engine,
2787-
final SpreadsheetViewportRectangle viewport,
2788-
final boolean includeFrozenColumnsRows,
2789-
final Optional<SpreadsheetSelection> selection,
2767+
final SpreadsheetViewport viewport,
27902768
final SpreadsheetEngineContext context,
27912769
final String window) {
27922770
this.windowAndCheck(
27932771
engine,
27942772
viewport,
2795-
includeFrozenColumnsRows,
2796-
selection,
27972773
context,
27982774
SpreadsheetViewportWindows.parse(window)
27992775
);
28002776
}
28012777

28022778
default void windowAndCheck(
28032779
final SpreadsheetEngine engine,
2804-
final SpreadsheetViewportRectangle viewport,
2805-
final boolean includeFrozenColumnsRows,
2806-
final Optional<SpreadsheetSelection> selection,
2780+
final SpreadsheetViewport viewport,
28072781
final SpreadsheetEngineContext context,
28082782
final SpreadsheetCellRangeReference... window) {
28092783
this.windowAndCheck(
28102784
engine,
28112785
viewport,
2812-
includeFrozenColumnsRows,
2813-
selection,
28142786
context,
28152787
SpreadsheetViewportWindows.with(
28162788
Sets.of(window)
@@ -2820,22 +2792,16 @@ default void windowAndCheck(
28202792

28212793
default void windowAndCheck(
28222794
final SpreadsheetEngine engine,
2823-
final SpreadsheetViewportRectangle viewport,
2824-
final boolean includeFrozenColumnsRows,
2825-
final Optional<SpreadsheetSelection> selection,
2795+
final SpreadsheetViewport viewport,
28262796
final SpreadsheetEngineContext context,
28272797
final SpreadsheetViewportWindows window) {
28282798
this.checkEquals(
28292799
window,
28302800
engine.window(
28312801
viewport,
2832-
includeFrozenColumnsRows,
2833-
selection,
28342802
context
28352803
),
2836-
() -> "window " + viewport +
2837-
(includeFrozenColumnsRows ? " includeFrozenColumnsRows" : "") +
2838-
selection.orElse(null)
2804+
() -> "window " + viewport
28392805
);
28402806
}
28412807

src/main/java/walkingkooka/spreadsheet/engine/SpreadsheetMetadataStampingSpreadsheetEngine.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import walkingkooka.spreadsheet.store.SpreadsheetLabelStore;
3737
import walkingkooka.spreadsheet.store.repo.SpreadsheetStoreRepository;
3838
import walkingkooka.spreadsheet.viewport.SpreadsheetViewport;
39-
import walkingkooka.spreadsheet.viewport.SpreadsheetViewportRectangle;
4039
import walkingkooka.spreadsheet.viewport.SpreadsheetViewportWindows;
4140
import walkingkooka.tree.expression.Expression;
4241
import walkingkooka.validation.ValidationValueTypeName;
@@ -436,14 +435,10 @@ public int rowCount(final SpreadsheetEngineContext context) {
436435
}
437436

438437
@Override
439-
public SpreadsheetViewportWindows window(final SpreadsheetViewportRectangle viewportRectangle,
440-
final boolean includeFrozenColumnsRows,
441-
final Optional<SpreadsheetSelection> selection,
438+
public SpreadsheetViewportWindows window(final SpreadsheetViewport viewport,
442439
final SpreadsheetEngineContext context) {
443440
return this.engine.window(
444-
viewportRectangle,
445-
includeFrozenColumnsRows,
446-
selection,
441+
viewport,
447442
context
448443
);
449444
}

src/main/java/walkingkooka/spreadsheet/viewport/BasicSpreadsheetViewportNavigationContext.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ static BasicSpreadsheetViewportNavigationContext with(final Predicate<Spreadshee
3232
final Function<SpreadsheetColumnReference, Double> columnWidths,
3333
final Predicate<SpreadsheetRowReference> rowHidden,
3434
final Function<SpreadsheetRowReference, Double> rowHeights,
35-
final SpreadsheetViewportWindowsFunction windows) {
35+
final Function<SpreadsheetViewport, SpreadsheetViewportWindows> windows) {
3636
return new BasicSpreadsheetViewportNavigationContext(
3737
Objects.requireNonNull(columnHidden, "columnHidden"),
3838
Objects.requireNonNull(columnWidths, "columnWidths"),
@@ -46,7 +46,7 @@ private BasicSpreadsheetViewportNavigationContext(final Predicate<SpreadsheetCol
4646
final Function<SpreadsheetColumnReference, Double> columnWidths,
4747
final Predicate<SpreadsheetRowReference> rowHidden,
4848
final Function<SpreadsheetRowReference, Double> rowHeights,
49-
final SpreadsheetViewportWindowsFunction windows) {
49+
final Function<SpreadsheetViewport, SpreadsheetViewportWindows> windows) {
5050
this.columnHidden = columnHidden;
5151
this.columnWidths = columnWidths;
5252
this.rowHidden = rowHidden;
@@ -260,17 +260,11 @@ private static void checkRow(final SpreadsheetRowReference row) {
260260
}
261261

262262
@Override
263-
public SpreadsheetViewportWindows windows(final SpreadsheetViewportRectangle viewportRectangle,
264-
final boolean includeFrozenColumnsRows,
265-
final Optional<SpreadsheetSelection> selection) {
266-
return this.windows.windows(
267-
viewportRectangle,
268-
includeFrozenColumnsRows,
269-
selection
270-
);
263+
public SpreadsheetViewportWindows windows(final SpreadsheetViewport viewport) {
264+
return this.windows.apply(viewport);
271265
}
272266

273-
private final SpreadsheetViewportWindowsFunction windows;
267+
private final Function<SpreadsheetViewport, SpreadsheetViewportWindows> windows;
274268

275269
@Override
276270
public String toString() {

src/main/java/walkingkooka/spreadsheet/viewport/FakeSpreadsheetViewportNavigationContext.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import walkingkooka.spreadsheet.reference.SpreadsheetColumnReference;
2121
import walkingkooka.spreadsheet.reference.SpreadsheetRowReference;
22-
import walkingkooka.spreadsheet.reference.SpreadsheetSelection;
2322

2423
import java.util.Optional;
2524

@@ -79,9 +78,7 @@ public Optional<SpreadsheetRowReference> downPixels(final SpreadsheetRowReferenc
7978
}
8079

8180
@Override
82-
public SpreadsheetViewportWindows windows(final SpreadsheetViewportRectangle viewportRectangle,
83-
final boolean includeFrozenColumnsRows,
84-
final Optional<SpreadsheetSelection> selection) {
81+
public SpreadsheetViewportWindows windows(final SpreadsheetViewport viewport) {
8582
throw new UnsupportedOperationException();
8683
}
8784
}

src/main/java/walkingkooka/spreadsheet/viewport/FakeSpreadsheetViewportWindowsFunction.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/main/java/walkingkooka/spreadsheet/viewport/SpreadsheetViewportNavigation.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,9 +222,8 @@ final SpreadsheetViewport updateViewport(final AnchoredSpreadsheetSelection anch
222222

223223
// check if moved selection is within the original viewport
224224
final SpreadsheetViewportWindows windows = context.windows(
225-
rectangle,
226-
true, //includeFrozenColumnsRows
227-
SpreadsheetViewportWindowsFunction.NO_SELECTION
225+
SpreadsheetViewport.with(rectangle)
226+
.setIncludeFrozenColumnsRows(true)
228227
);
229228

230229
if (

src/main/java/walkingkooka/spreadsheet/viewport/SpreadsheetViewportNavigationContext.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
/**
2727
* The {@link Context} that accompanies a {@link SpreadsheetViewportNavigation#update(SpreadsheetViewport, SpreadsheetViewportNavigationContext)}
2828
*/
29-
public interface SpreadsheetViewportNavigationContext extends Context, SpreadsheetViewportWindowsFunction {
29+
public interface SpreadsheetViewportNavigationContext extends Context {
3030

3131
/**
3232
* Returns true if the {@link SpreadsheetColumnReference} is hidden.
@@ -113,4 +113,9 @@ Optional<SpreadsheetRowReference> upPixels(final SpreadsheetRowReference referen
113113
*/
114114
Optional<SpreadsheetRowReference> downPixels(final SpreadsheetRowReference reference,
115115
final int count);
116+
117+
/**
118+
* Computes the {@link SpreadsheetViewportWindows} for the given {@link SpreadsheetViewport}.
119+
*/
120+
SpreadsheetViewportWindows windows(final SpreadsheetViewport viewport);
116121
}

0 commit comments

Comments
 (0)