diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/Application.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/Application.java index 60b62aea..ba4d935f 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/Application.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/Application.java @@ -54,11 +54,8 @@ public class Application extends javafx.application.Application { throw new RuntimeException(exception); } - primaryStage.setOnCloseRequest(new EventHandler() { - @Override - public void handle(final WindowEvent t) { - t.consume(); - } + primaryStage.setOnCloseRequest((final WindowEvent t) -> { + t.consume(); }); primaryStage.show(); } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java index 9a926657..45ea814b 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java @@ -1,6 +1,6 @@ package org.badvision.outlaweditor; -import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Pane; import org.badvision.outlaweditor.data.DataObserver; import org.badvision.outlaweditor.data.DataProducer; import org.badvision.outlaweditor.data.xml.Script; @@ -28,7 +28,7 @@ public abstract class Editor implements DataObserver { abstract public void showShiftUI(); - abstract public void buildEditorUI(AnchorPane tileEditorAnchorPane); + abstract public void buildEditorUI(Pane targetPane); abstract public void unregister(); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ImageEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ImageEditor.java index 52f4875c..11980bf8 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ImageEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ImageEditor.java @@ -21,13 +21,13 @@ public abstract class ImageEditor extends Editor { abstract public void buildPatternSelector(Menu tilePatternMenu); - public abstract void scrollBy(int deltaX, int deltaY); - public abstract void togglePanZoom(); public abstract void zoomIn(); public abstract void zoomOut(); + + public abstract double getZoomScale(); public abstract void exportImage(); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java index 8b96819b..21514c1c 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java @@ -19,7 +19,7 @@ import javafx.scene.input.Clipboard; import javafx.scene.input.DataFormat; import javafx.scene.input.MouseEvent; import javafx.scene.input.ScrollEvent; -import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; @@ -37,7 +37,7 @@ import org.badvision.outlaweditor.ui.ToolType; */ public class MapEditor extends Editor implements EventHandler { - AnchorPane anchorPane; + Pane anchorPane; Canvas drawCanvas; private Tile currentTile; int posX = 0; @@ -80,7 +80,7 @@ public class MapEditor extends Editor implements EventH } @Override - public void buildEditorUI(AnchorPane tileEditorAnchorPane) { + public void buildEditorUI(Pane tileEditorAnchorPane) { anchorPane = tileEditorAnchorPane; initCanvas(); redraw(); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleImageEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleImageEditor.java index bece734c..f3333d5e 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleImageEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleImageEditor.java @@ -14,7 +14,7 @@ import javafx.scene.image.WritableImage; import javafx.scene.input.Clipboard; import javafx.scene.input.DataFormat; import javafx.scene.input.MouseEvent; -import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import org.badvision.outlaweditor.Application; @@ -36,7 +36,7 @@ public class AppleImageEditor extends ImageEditor implements EventHandler !(n == screen)).forEach((n) -> { @@ -154,16 +147,6 @@ public class AppleImageEditor extends ImageEditor implements EventHandler() { - @Override - public void handle(MouseEvent t) { - performDragAction((int) (t.getX() / zoom), (int) (t.getY() / zoom)); - } + rect.setOnMouseDragged((MouseEvent t) -> { + performDragAction((int) (t.getX() / zoom), (int) (t.getY() / zoom)); }); - rect.setOnMousePressed(new EventHandler() { - @Override - public void handle(MouseEvent t) { - handleMouse(t, xx, yy); - } + rect.setOnMousePressed((MouseEvent t) -> { + handleMouse(t, xx, yy); }); grid[x][y] = rect; gridGroup.getChildren().add(rect); @@ -146,11 +140,8 @@ public class AppleTileEditor extends TileEditor { @Override public void buildPatternSelector(Menu tilePatternMenu) { - FillPattern.buildMenu(tilePatternMenu, new DataObserver() { - @Override - public void observedObjectChanged(FillPattern object) { - changeCurrentPattern(object); - } + FillPattern.buildMenu(tilePatternMenu, (FillPattern object) -> { + changeCurrentPattern(object); }); } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileEditor.java index f6fe7b1c..a140f31d 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileEditor.java @@ -1,18 +1,16 @@ package org.badvision.outlaweditor.apple.dhgr; -import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.control.Menu; import javafx.scene.image.WritableImage; import javafx.scene.input.MouseButton; import javafx.scene.input.MouseEvent; -import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.scene.shape.Shape; import org.badvision.outlaweditor.Platform; import org.badvision.outlaweditor.TileEditor; -import org.badvision.outlaweditor.data.DataObserver; import org.badvision.outlaweditor.data.xml.Tile; import org.badvision.outlaweditor.data.TileUtils; @@ -34,7 +32,7 @@ public class AppleDHGRTileEditor extends TileEditor { } @Override - public void buildEditorUI(AnchorPane tileEditorAnchorPane) { + public void buildEditorUI(Pane tileEditorAnchorPane) { grid = new Rectangle[28][16]; gridGroup = new Group(); for (int y = 0; y < 16; y++) { @@ -42,19 +40,13 @@ public class AppleDHGRTileEditor extends TileEditor { final int xx = x; final int yy = y; Rectangle rect = new Rectangle((zoom/2) * x + 5, zoom * y + 5, zoom/2 - 2, zoom - 2); - rect.setOnMouseDragged(new EventHandler() { - @Override - public void handle(MouseEvent t) { - performDragAction((int) (t.getX() / (zoom/2)), (int) (t.getY() / zoom)); - } + rect.setOnMouseDragged((MouseEvent t) -> { + performDragAction((int) (t.getX() / (zoom/2)), (int) (t.getY() / zoom)); }); - rect.setOnMousePressed(new EventHandler() { - @Override - public void handle(MouseEvent t) { - handleMouse(t, xx, yy); - lastActionX=-1; - lastActionY=-1; - } + rect.setOnMousePressed((MouseEvent t) -> { + handleMouse(t, xx, yy); + lastActionX=-1; + lastActionY=-1; }); grid[x][y] = rect; gridGroup.getChildren().add(rect); @@ -145,11 +137,8 @@ public class AppleDHGRTileEditor extends TileEditor { @Override public void buildPatternSelector(Menu tilePatternMenu) { - FillPattern.buildMenu(tilePatternMenu, new DataObserver() { - @Override - public void observedObjectChanged(FillPattern object) { - changeCurrentPattern(object); - } + FillPattern.buildMenu(tilePatternMenu, (FillPattern object) -> { + changeCurrentPattern(object); }); } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ImageEditorTabController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ImageEditorTabController.java index 8def26e6..451504f5 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ImageEditorTabController.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ImageEditorTabController.java @@ -2,9 +2,10 @@ package org.badvision.outlaweditor.ui; import javafx.event.ActionEvent; import javafx.fxml.FXML; -import javafx.scene.control.CheckBox; +import javafx.scene.Group; import javafx.scene.control.ComboBox; import javafx.scene.control.Menu; +import javafx.scene.control.ScrollPane; import javafx.scene.control.TextField; import javafx.scene.layout.AnchorPane; import org.badvision.outlaweditor.Editor; @@ -20,6 +21,12 @@ public abstract class ImageEditorTabController { protected TextField imageCategoryField; // Value injected by FXMLLoader @FXML // fx:id="imageEditorAnchorPane" protected AnchorPane imageEditorAnchorPane; // Value injected by FXMLLoader + @FXML + protected ScrollPane imageEditorScrollPane; + @FXML + protected Group imageEditorZoomGroup; + @FXML + protected AnchorPane imageEditorScrollAnchorPane; @FXML // fx:id="imageHeightField" protected TextField imageHeightField; // Value injected by FXMLLoader @FXML // fx:id="imageNameField" @@ -40,6 +47,9 @@ public abstract class ImageEditorTabController { assert imagePatternMenu != null : "fx:id=\"imagePatternMenu\" was not injected: check your FXML file 'ApplicationUI.fxml'."; assert imageSelector != null : "fx:id=\"imageSelector\" was not injected: check your FXML file 'ApplicationUI.fxml'."; assert imageWidthField != null : "fx:id=\"imageWidthField\" was not injected: check your FXML file 'ApplicationUI.fxml'."; + assert imageEditorScrollPane != null : "fx:id\"imageEditorScrollPane\" was not injected: check your FXML file 'ApplicationUI.fxml'"; + assert imageEditorZoomGroup != null : "fx:id\"imageEditorZoomGroup\" was not injected: check your FXML file 'ApplicationUI.fxml'"; + assert imageEditorScrollAnchorPane != null : "fx:id\"imageEditorScrollAnchorPane\" was not injected: check your FXML file 'ApplicationUI.fxml'"; } abstract public void rebuildImageSelector(); @@ -95,21 +105,6 @@ public abstract class ImageEditorTabController { @FXML abstract public void onImageSelected(ActionEvent event); - // Handler for Button[Button[id=null, styleClass=button moveButton]] onAction - @FXML - abstract public void scrollImageDown(ActionEvent event); - - // Handler for Button[Button[id=null, styleClass=button moveButton]] onAction - @FXML - abstract public void scrollImageLeft(ActionEvent event); - - // Handler for Button[Button[id=null, styleClass=button moveButton]] onAction - @FXML - abstract public void scrollImageRight(ActionEvent event); - - // Handler for Button[Button[id=null, styleClass=button moveButton]] onAction - @FXML - abstract public void scrollImageUp(ActionEvent event); @FXML abstract public void imageDraw5BitMode(ActionEvent event); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java index 84876582..1d88a289 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java @@ -139,7 +139,11 @@ public class UIAction { } public static void quit() { - confirm("Quit? Are you sure?", Platform::exit, null); + confirm("Quit? Are you sure?", UIAction::quitWithoutConfirming, null); + } + + public static void quitWithoutConfirming() { + Platform.runLater(Platform::exit); } static Image badImage; diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ImageEditorTabControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ImageEditorTabControllerImpl.java index 9b84fcbb..76011b5b 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ImageEditorTabControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ImageEditorTabControllerImpl.java @@ -113,6 +113,7 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController { public void imageZoomIn(ActionEvent event) { if (currentImageEditor != null) { currentImageEditor.zoomIn(); + updateScrollAreaWithScale(currentImageEditor.getZoomScale()); } } @@ -120,6 +121,7 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController { public void imageZoomOut(ActionEvent event) { if (currentImageEditor != null) { currentImageEditor.zoomOut(); + updateScrollAreaWithScale(currentImageEditor.getZoomScale()); } } @@ -162,34 +164,6 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController { setCurrentImage(imageSelector.getSelectionModel().getSelectedItem()); } - @Override - public void scrollImageDown(ActionEvent event) { - if (currentImageEditor != null) { - currentImageEditor.scrollBy(0, 1); - } - } - - @Override - public void scrollImageLeft(ActionEvent event) { - if (currentImageEditor != null) { - currentImageEditor.scrollBy(-1, 0); - } - } - - @Override - public void scrollImageRight(ActionEvent event) { - if (currentImageEditor != null) { - currentImageEditor.scrollBy(1, 0); - } - } - - @Override - public void scrollImageUp(ActionEvent event) { - if (currentImageEditor != null) { - currentImageEditor.scrollBy(0, -1); - } - } - private void setCurrentImage(Image i) { if (currentImage != null && currentImage.equals(i)) { return; @@ -229,7 +203,7 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController { Logger.getLogger(ApplicationUIControllerImpl.class.getName()).log(Level.SEVERE, null, ex); } currentImageEditor.setEntity(i); - currentImageEditor.buildEditorUI(imageEditorAnchorPane); + currentImageEditor.buildEditorUI(imageEditorScrollAnchorPane); currentImageEditor.buildPatternSelector(imagePatternMenu); } } @@ -245,4 +219,13 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController { imageSelector.getItems().addAll(Application.gameData.getImage()); imageSelector.getSelectionModel().select(i); } + + private void updateScrollAreaWithScale(double zoomScale) { + double hval = imageEditorScrollPane.getHvalue(); + double vval = imageEditorScrollPane.getVvalue(); + imageEditorZoomGroup.setScaleX(zoomScale); + imageEditorZoomGroup.setScaleY(zoomScale); + imageEditorScrollPane.setHvalue(hval); + imageEditorScrollPane.setVvalue(vval); + } } diff --git a/OutlawEditor/src/main/resources/imageEditorTab.fxml b/OutlawEditor/src/main/resources/imageEditorTab.fxml index c080ba08..44db4328 100644 --- a/OutlawEditor/src/main/resources/imageEditorTab.fxml +++ b/OutlawEditor/src/main/resources/imageEditorTab.fxml @@ -6,14 +6,14 @@ - +