From 0f3a2cc7e6c8f2ebe6a4147eb6068ac86ad12a0c Mon Sep 17 00:00:00 2001 From: Axel Howind Date: Thu, 30 Jan 2025 21:37:23 +0100 Subject: [PATCH] refactoring --- .../com/dua3/meja/ui/fx/FxSegmentView.java | 4 +-- .../java/com/dua3/meja/ui/fx/FxSheetView.java | 34 ++++++------------- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/meja-fx/src/main/java/com/dua3/meja/ui/fx/FxSegmentView.java b/meja-fx/src/main/java/com/dua3/meja/ui/fx/FxSegmentView.java index 48dac39b..d5eec3d0 100644 --- a/meja-fx/src/main/java/com/dua3/meja/ui/fx/FxSegmentView.java +++ b/meja-fx/src/main/java/com/dua3/meja/ui/fx/FxSegmentView.java @@ -204,7 +204,7 @@ public void updateLayout() { @Override public void setViewSizeOnDisplay(float widthInPoints, float heightIPoints) { - Scale2f scale = svDelegate.getScale(); - setPrefSize(widthInPoints * scale.sx(), heightIPoints * scale.sy()); + Scale2f scale = svDelegate.getScale(); + setPrefSize(widthInPoints * scale.sx(), heightIPoints * scale.sy()); } } diff --git a/meja-fx/src/main/java/com/dua3/meja/ui/fx/FxSheetView.java b/meja-fx/src/main/java/com/dua3/meja/ui/fx/FxSheetView.java index 01bb6c00..ed89c7bc 100644 --- a/meja-fx/src/main/java/com/dua3/meja/ui/fx/FxSheetView.java +++ b/meja-fx/src/main/java/com/dua3/meja/ui/fx/FxSheetView.java @@ -58,11 +58,9 @@ public class FxSheetView extends StackPane implements SheetView { public FxSheetView(Sheet sheet) { LOG.debug("FxSheetView({})", sheet); - this.delegate = new FxSheetViewDelegate(sheet, this); + this.delegate = new FxSheetViewDelegate(sheet, this, getDpi()); this.gridPane = new GridPane(); - updateDelegate(sheet); - // Create quadrants ObservableSheet observableSheet = new ObservableSheet(sheet); @@ -71,8 +69,6 @@ public FxSheetView(Sheet sheet) { bottomLeftQuadrant = new FxSegmentView(delegate, Quadrant.BOTTOM_LEFT, observableSheet); bottomRightQuadrant = new FxSegmentView(delegate, Quadrant.BOTTOM_RIGHT, observableSheet); - updateContent(); - // Create scrollbars hScrollbar = new ScrollBar(); hScrollbar.setOrientation(Orientation.HORIZONTAL); @@ -181,6 +177,10 @@ private void entangleBinding(Property visibleProperty, Property contro visibleProperty.bindBidirectional(dependentProperty); } + static int getDpi() { + return Toolkit.getDefaultToolkit().getScreenResolution(); + } + void onKeyPressed(KeyEvent event) { LOG.trace("onKeyPressed(): event = {}, focusOwner = {}", () -> event, () -> getScene().getFocusOwner()); @@ -254,7 +254,7 @@ public void scrollToCurrentCell() { Sheet sheet = delegate.getSheet(); int i = cell.getRowNumber(); int j = cell.getColumnNumber(); - int splitRow = sheet.getSplitRow(); + int splitRow = delegate.getSplitRow(); if (i >= splitRow) { i -= splitRow; // at least part of the (possibly merged) cell is below the split => scroll row into view @@ -262,7 +262,7 @@ public void scrollToCurrentCell() { LOG.trace("scrolling row {} into view", i); flow.scrollTo(i); } - int splitColumn = sheet.getSplitColumn(); + int splitColumn = delegate.getSplitColumn(); if (j >= splitColumn) { // at least part of the (possibly merged) cell is to the right of the split => scroll column into view Scale2f s = delegate.getScale(); @@ -336,11 +336,11 @@ private void updateLayout() { LOG.debug("updateLayout()"); PlatformHelper.checkApplicationThread(); try (var __ = delegate.automaticWriteLock()) { - updateDelegate(getSheet()); - topLeftQuadrant.updateLayout(); + delegate.update(getDpi()); + bottomRightQuadrant.updateLayout(); topRightQuadrant.updateLayout(); bottomLeftQuadrant.updateLayout(); - bottomRightQuadrant.updateLayout(); + topLeftQuadrant.updateLayout(); } } @@ -356,12 +356,7 @@ public void updateContent() { try (var __ = delegate.automaticWriteLock()) { updating = true; - updateDelegate(getSheet()); - - topLeftQuadrant.updateLayout(); - topRightQuadrant.updateLayout(); - bottomLeftQuadrant.updateLayout(); - bottomRightQuadrant.updateLayout(); + updateLayout(); topLeftQuadrant.refresh(); topRightQuadrant.refresh(); @@ -372,13 +367,6 @@ public void updateContent() { } } - private void updateDelegate(Sheet sheet) { - int dpi = Toolkit.getDefaultToolkit().getScreenResolution(); - delegate.setDisplayScale(getDisplayScale()); - delegate.setScale(new Scale2f(sheet.getZoom() * dpi / 72.0f)); - delegate.updateLayout(); - } - @Override public void focusView() { LOG.debug("focusView()");