mirror of
https://github.com/badvision/lawless-legends.git
synced 2024-10-11 18:23:48 +00:00
Changed zoom/pan of image editor to use scrollPane, also other small code tweaks in a few places.
This commit is contained in:
parent
dee30787b4
commit
ef905a7457
@ -54,11 +54,8 @@ public class Application extends javafx.application.Application {
|
|||||||
throw new RuntimeException(exception);
|
throw new RuntimeException(exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
|
primaryStage.setOnCloseRequest((final WindowEvent t) -> {
|
||||||
@Override
|
|
||||||
public void handle(final WindowEvent t) {
|
|
||||||
t.consume();
|
t.consume();
|
||||||
}
|
|
||||||
});
|
});
|
||||||
primaryStage.show();
|
primaryStage.show();
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package org.badvision.outlaweditor;
|
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.DataObserver;
|
||||||
import org.badvision.outlaweditor.data.DataProducer;
|
import org.badvision.outlaweditor.data.DataProducer;
|
||||||
import org.badvision.outlaweditor.data.xml.Script;
|
import org.badvision.outlaweditor.data.xml.Script;
|
||||||
@ -28,7 +28,7 @@ public abstract class Editor<T, D> implements DataObserver<T> {
|
|||||||
|
|
||||||
abstract public void showShiftUI();
|
abstract public void showShiftUI();
|
||||||
|
|
||||||
abstract public void buildEditorUI(AnchorPane tileEditorAnchorPane);
|
abstract public void buildEditorUI(Pane targetPane);
|
||||||
|
|
||||||
abstract public void unregister();
|
abstract public void unregister();
|
||||||
|
|
||||||
|
@ -21,14 +21,14 @@ public abstract class ImageEditor extends Editor<Image, ImageEditor.DrawMode> {
|
|||||||
|
|
||||||
abstract public void buildPatternSelector(Menu tilePatternMenu);
|
abstract public void buildPatternSelector(Menu tilePatternMenu);
|
||||||
|
|
||||||
public abstract void scrollBy(int deltaX, int deltaY);
|
|
||||||
|
|
||||||
public abstract void togglePanZoom();
|
public abstract void togglePanZoom();
|
||||||
|
|
||||||
public abstract void zoomIn();
|
public abstract void zoomIn();
|
||||||
|
|
||||||
public abstract void zoomOut();
|
public abstract void zoomOut();
|
||||||
|
|
||||||
|
public abstract double getZoomScale();
|
||||||
|
|
||||||
public abstract void exportImage();
|
public abstract void exportImage();
|
||||||
|
|
||||||
public abstract void resize(int newWidth, int newHeight);
|
public abstract void resize(int newWidth, int newHeight);
|
||||||
|
@ -19,7 +19,7 @@ import javafx.scene.input.Clipboard;
|
|||||||
import javafx.scene.input.DataFormat;
|
import javafx.scene.input.DataFormat;
|
||||||
import javafx.scene.input.MouseEvent;
|
import javafx.scene.input.MouseEvent;
|
||||||
import javafx.scene.input.ScrollEvent;
|
import javafx.scene.input.ScrollEvent;
|
||||||
import javafx.scene.layout.AnchorPane;
|
import javafx.scene.layout.Pane;
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
import javafx.scene.shape.Rectangle;
|
import javafx.scene.shape.Rectangle;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
@ -37,7 +37,7 @@ import org.badvision.outlaweditor.ui.ToolType;
|
|||||||
*/
|
*/
|
||||||
public class MapEditor extends Editor<Map, MapEditor.DrawMode> implements EventHandler<MouseEvent> {
|
public class MapEditor extends Editor<Map, MapEditor.DrawMode> implements EventHandler<MouseEvent> {
|
||||||
|
|
||||||
AnchorPane anchorPane;
|
Pane anchorPane;
|
||||||
Canvas drawCanvas;
|
Canvas drawCanvas;
|
||||||
private Tile currentTile;
|
private Tile currentTile;
|
||||||
int posX = 0;
|
int posX = 0;
|
||||||
@ -80,7 +80,7 @@ public class MapEditor extends Editor<Map, MapEditor.DrawMode> implements EventH
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void buildEditorUI(AnchorPane tileEditorAnchorPane) {
|
public void buildEditorUI(Pane tileEditorAnchorPane) {
|
||||||
anchorPane = tileEditorAnchorPane;
|
anchorPane = tileEditorAnchorPane;
|
||||||
initCanvas();
|
initCanvas();
|
||||||
redraw();
|
redraw();
|
||||||
|
@ -14,7 +14,7 @@ import javafx.scene.image.WritableImage;
|
|||||||
import javafx.scene.input.Clipboard;
|
import javafx.scene.input.Clipboard;
|
||||||
import javafx.scene.input.DataFormat;
|
import javafx.scene.input.DataFormat;
|
||||||
import javafx.scene.input.MouseEvent;
|
import javafx.scene.input.MouseEvent;
|
||||||
import javafx.scene.layout.AnchorPane;
|
import javafx.scene.layout.Pane;
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
import javafx.scene.shape.Rectangle;
|
import javafx.scene.shape.Rectangle;
|
||||||
import org.badvision.outlaweditor.Application;
|
import org.badvision.outlaweditor.Application;
|
||||||
@ -36,7 +36,7 @@ public class AppleImageEditor extends ImageEditor implements EventHandler<MouseE
|
|||||||
public boolean hiBitMatters = true;
|
public boolean hiBitMatters = true;
|
||||||
protected DrawMode currentDrawMode = DrawMode.Pencil1px;
|
protected DrawMode currentDrawMode = DrawMode.Pencil1px;
|
||||||
protected WritableImage currentImage;
|
protected WritableImage currentImage;
|
||||||
protected AnchorPane anchorPane;
|
protected Pane anchorPane;
|
||||||
protected ImageView screen;
|
protected ImageView screen;
|
||||||
protected int posX = 0;
|
protected int posX = 0;
|
||||||
protected int posY = 0;
|
protected int posY = 0;
|
||||||
@ -49,7 +49,7 @@ public class AppleImageEditor extends ImageEditor implements EventHandler<MouseE
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void buildEditorUI(AnchorPane editorAnchorPane) {
|
public void buildEditorUI(Pane editorAnchorPane) {
|
||||||
anchorPane = editorAnchorPane;
|
anchorPane = editorAnchorPane;
|
||||||
redraw();
|
redraw();
|
||||||
screen = new ImageView(currentImage);
|
screen = new ImageView(currentImage);
|
||||||
@ -105,15 +105,8 @@ public class AppleImageEditor extends ImageEditor implements EventHandler<MouseE
|
|||||||
public void redraw() {
|
public void redraw() {
|
||||||
System.out.println("Redraw " + getPlatform().name());
|
System.out.println("Redraw " + getPlatform().name());
|
||||||
currentImage = getPlatform().imageRenderer.renderImage(currentImage, getImageData(), getWidth(), getHeight());
|
currentImage = getPlatform().imageRenderer.renderImage(currentImage, getImageData(), getWidth(), getHeight());
|
||||||
fixPanArrows();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fixPanArrows() {
|
|
||||||
anchorPane.getChildren().get(1).setLayoutX((anchorPane.getWidth() - 30) / 2);
|
|
||||||
anchorPane.getChildren().get(2).setLayoutY((anchorPane.getHeight() - 30) / 2);
|
|
||||||
anchorPane.getChildren().get(3).setLayoutX((anchorPane.getWidth() - 30) / 2);
|
|
||||||
anchorPane.getChildren().get(4).setLayoutY((anchorPane.getHeight() - 30) / 2);
|
|
||||||
}
|
|
||||||
private byte[] imageData = null;
|
private byte[] imageData = null;
|
||||||
|
|
||||||
public byte[] getImageData() {
|
public byte[] getImageData() {
|
||||||
@ -154,16 +147,6 @@ public class AppleImageEditor extends ImageEditor implements EventHandler<MouseE
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void scrollBy(int deltaX, int deltaY) {
|
|
||||||
posX += deltaX * 20;
|
|
||||||
posY += deltaY * 20;
|
|
||||||
posX = Math.max(0, posX);
|
|
||||||
posY = Math.max(0, posY);
|
|
||||||
updatePanTranslation();
|
|
||||||
redraw();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void zoomOut() {
|
public void zoomOut() {
|
||||||
if (zoom <= 1) {
|
if (zoom <= 1) {
|
||||||
@ -182,30 +165,14 @@ public class AppleImageEditor extends ImageEditor implements EventHandler<MouseE
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void zoom(double delta) {
|
@Override
|
||||||
double oldZoom = zoom;
|
public double getZoomScale() {
|
||||||
zoom += delta;
|
return zoom;
|
||||||
zoom = Math.min(Math.max(0.15, zoom), 4.0);
|
|
||||||
// double left = mapEditorScroll.getHvalue();
|
|
||||||
// double top = mapEditorScroll.getVvalue();
|
|
||||||
//
|
|
||||||
// double pointerX = t.getX();
|
|
||||||
// double pointerY = t.getY();
|
|
||||||
//
|
|
||||||
double ratio = zoom / oldZoom;
|
|
||||||
//
|
|
||||||
// double newLeft = (left + pointerX) * ratio - pointerX;
|
|
||||||
// double newTop = (top + pointerY) * ratio - pointerY;
|
|
||||||
// Scale the image and move it so the upper-left corner is still in the right place.
|
|
||||||
screen.setScaleX(zoom);
|
|
||||||
screen.setScaleY(zoom);
|
|
||||||
updatePanTranslation();
|
|
||||||
redraw();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updatePanTranslation() {
|
private void zoom(double delta) {
|
||||||
screen.setTranslateX((posX - getWidth()*7) * (zoom-1));
|
zoom += delta;
|
||||||
screen.setTranslateY((posY - getHeight()) * (zoom-1));
|
zoom = Math.min(Math.max(0.15, zoom), 4.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -469,11 +436,9 @@ public class AppleImageEditor extends ImageEditor implements EventHandler<MouseE
|
|||||||
if (out == null) {
|
if (out == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try (FileOutputStream outStream = new FileOutputStream(out)) {
|
||||||
FileOutputStream outStream = new FileOutputStream(out);
|
|
||||||
outStream.write(output);
|
outStream.write(output);
|
||||||
outStream.flush();
|
outStream.flush();
|
||||||
outStream.close();
|
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
Logger.getLogger(AppleImageEditor.class.getName()).log(Level.SEVERE, null, ex);
|
Logger.getLogger(AppleImageEditor.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import javafx.scene.control.Menu;
|
|||||||
import javafx.scene.image.WritableImage;
|
import javafx.scene.image.WritableImage;
|
||||||
import javafx.scene.input.MouseButton;
|
import javafx.scene.input.MouseButton;
|
||||||
import javafx.scene.input.MouseEvent;
|
import javafx.scene.input.MouseEvent;
|
||||||
import javafx.scene.layout.AnchorPane;
|
import javafx.scene.layout.Pane;
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
import javafx.scene.shape.Rectangle;
|
import javafx.scene.shape.Rectangle;
|
||||||
import javafx.scene.shape.Shape;
|
import javafx.scene.shape.Shape;
|
||||||
@ -34,7 +34,7 @@ public class AppleTileEditor extends TileEditor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void buildEditorUI(AnchorPane tileEditorAnchorPane) {
|
public void buildEditorUI(Pane tileEditorAnchorPane) {
|
||||||
grid = new Rectangle[14][16];
|
grid = new Rectangle[14][16];
|
||||||
gridGroup = new Group();
|
gridGroup = new Group();
|
||||||
for (int y = 0; y < 16; y++) {
|
for (int y = 0; y < 16; y++) {
|
||||||
@ -42,17 +42,11 @@ public class AppleTileEditor extends TileEditor {
|
|||||||
final int xx = x;
|
final int xx = x;
|
||||||
final int yy = y;
|
final int yy = y;
|
||||||
Rectangle rect = new Rectangle(zoom * x + 5, zoom * y + 5, zoom - 2, zoom - 2);
|
Rectangle rect = new Rectangle(zoom * x + 5, zoom * y + 5, zoom - 2, zoom - 2);
|
||||||
rect.setOnMouseDragged(new EventHandler<MouseEvent>() {
|
rect.setOnMouseDragged((MouseEvent t) -> {
|
||||||
@Override
|
|
||||||
public void handle(MouseEvent t) {
|
|
||||||
performDragAction((int) (t.getX() / zoom), (int) (t.getY() / zoom));
|
performDragAction((int) (t.getX() / zoom), (int) (t.getY() / zoom));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
rect.setOnMousePressed(new EventHandler<MouseEvent>() {
|
rect.setOnMousePressed((MouseEvent t) -> {
|
||||||
@Override
|
|
||||||
public void handle(MouseEvent t) {
|
|
||||||
handleMouse(t, xx, yy);
|
handleMouse(t, xx, yy);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
grid[x][y] = rect;
|
grid[x][y] = rect;
|
||||||
gridGroup.getChildren().add(rect);
|
gridGroup.getChildren().add(rect);
|
||||||
@ -146,11 +140,8 @@ public class AppleTileEditor extends TileEditor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void buildPatternSelector(Menu tilePatternMenu) {
|
public void buildPatternSelector(Menu tilePatternMenu) {
|
||||||
FillPattern.buildMenu(tilePatternMenu, new DataObserver<FillPattern>() {
|
FillPattern.buildMenu(tilePatternMenu, (FillPattern object) -> {
|
||||||
@Override
|
|
||||||
public void observedObjectChanged(FillPattern object) {
|
|
||||||
changeCurrentPattern(object);
|
changeCurrentPattern(object);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,18 +1,16 @@
|
|||||||
package org.badvision.outlaweditor.apple.dhgr;
|
package org.badvision.outlaweditor.apple.dhgr;
|
||||||
|
|
||||||
import javafx.event.EventHandler;
|
|
||||||
import javafx.scene.Group;
|
import javafx.scene.Group;
|
||||||
import javafx.scene.control.Menu;
|
import javafx.scene.control.Menu;
|
||||||
import javafx.scene.image.WritableImage;
|
import javafx.scene.image.WritableImage;
|
||||||
import javafx.scene.input.MouseButton;
|
import javafx.scene.input.MouseButton;
|
||||||
import javafx.scene.input.MouseEvent;
|
import javafx.scene.input.MouseEvent;
|
||||||
import javafx.scene.layout.AnchorPane;
|
import javafx.scene.layout.Pane;
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
import javafx.scene.shape.Rectangle;
|
import javafx.scene.shape.Rectangle;
|
||||||
import javafx.scene.shape.Shape;
|
import javafx.scene.shape.Shape;
|
||||||
import org.badvision.outlaweditor.Platform;
|
import org.badvision.outlaweditor.Platform;
|
||||||
import org.badvision.outlaweditor.TileEditor;
|
import org.badvision.outlaweditor.TileEditor;
|
||||||
import org.badvision.outlaweditor.data.DataObserver;
|
|
||||||
import org.badvision.outlaweditor.data.xml.Tile;
|
import org.badvision.outlaweditor.data.xml.Tile;
|
||||||
import org.badvision.outlaweditor.data.TileUtils;
|
import org.badvision.outlaweditor.data.TileUtils;
|
||||||
|
|
||||||
@ -34,7 +32,7 @@ public class AppleDHGRTileEditor extends TileEditor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void buildEditorUI(AnchorPane tileEditorAnchorPane) {
|
public void buildEditorUI(Pane tileEditorAnchorPane) {
|
||||||
grid = new Rectangle[28][16];
|
grid = new Rectangle[28][16];
|
||||||
gridGroup = new Group();
|
gridGroup = new Group();
|
||||||
for (int y = 0; y < 16; y++) {
|
for (int y = 0; y < 16; y++) {
|
||||||
@ -42,19 +40,13 @@ public class AppleDHGRTileEditor extends TileEditor {
|
|||||||
final int xx = x;
|
final int xx = x;
|
||||||
final int yy = y;
|
final int yy = y;
|
||||||
Rectangle rect = new Rectangle((zoom/2) * x + 5, zoom * y + 5, zoom/2 - 2, zoom - 2);
|
Rectangle rect = new Rectangle((zoom/2) * x + 5, zoom * y + 5, zoom/2 - 2, zoom - 2);
|
||||||
rect.setOnMouseDragged(new EventHandler<MouseEvent>() {
|
rect.setOnMouseDragged((MouseEvent t) -> {
|
||||||
@Override
|
|
||||||
public void handle(MouseEvent t) {
|
|
||||||
performDragAction((int) (t.getX() / (zoom/2)), (int) (t.getY() / zoom));
|
performDragAction((int) (t.getX() / (zoom/2)), (int) (t.getY() / zoom));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
rect.setOnMousePressed(new EventHandler<MouseEvent>() {
|
rect.setOnMousePressed((MouseEvent t) -> {
|
||||||
@Override
|
|
||||||
public void handle(MouseEvent t) {
|
|
||||||
handleMouse(t, xx, yy);
|
handleMouse(t, xx, yy);
|
||||||
lastActionX=-1;
|
lastActionX=-1;
|
||||||
lastActionY=-1;
|
lastActionY=-1;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
grid[x][y] = rect;
|
grid[x][y] = rect;
|
||||||
gridGroup.getChildren().add(rect);
|
gridGroup.getChildren().add(rect);
|
||||||
@ -145,11 +137,8 @@ public class AppleDHGRTileEditor extends TileEditor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void buildPatternSelector(Menu tilePatternMenu) {
|
public void buildPatternSelector(Menu tilePatternMenu) {
|
||||||
FillPattern.buildMenu(tilePatternMenu, new DataObserver<FillPattern>() {
|
FillPattern.buildMenu(tilePatternMenu, (FillPattern object) -> {
|
||||||
@Override
|
|
||||||
public void observedObjectChanged(FillPattern object) {
|
|
||||||
changeCurrentPattern(object);
|
changeCurrentPattern(object);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,9 +2,10 @@ package org.badvision.outlaweditor.ui;
|
|||||||
|
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.control.CheckBox;
|
import javafx.scene.Group;
|
||||||
import javafx.scene.control.ComboBox;
|
import javafx.scene.control.ComboBox;
|
||||||
import javafx.scene.control.Menu;
|
import javafx.scene.control.Menu;
|
||||||
|
import javafx.scene.control.ScrollPane;
|
||||||
import javafx.scene.control.TextField;
|
import javafx.scene.control.TextField;
|
||||||
import javafx.scene.layout.AnchorPane;
|
import javafx.scene.layout.AnchorPane;
|
||||||
import org.badvision.outlaweditor.Editor;
|
import org.badvision.outlaweditor.Editor;
|
||||||
@ -20,6 +21,12 @@ public abstract class ImageEditorTabController {
|
|||||||
protected TextField imageCategoryField; // Value injected by FXMLLoader
|
protected TextField imageCategoryField; // Value injected by FXMLLoader
|
||||||
@FXML // fx:id="imageEditorAnchorPane"
|
@FXML // fx:id="imageEditorAnchorPane"
|
||||||
protected AnchorPane imageEditorAnchorPane; // Value injected by FXMLLoader
|
protected AnchorPane imageEditorAnchorPane; // Value injected by FXMLLoader
|
||||||
|
@FXML
|
||||||
|
protected ScrollPane imageEditorScrollPane;
|
||||||
|
@FXML
|
||||||
|
protected Group imageEditorZoomGroup;
|
||||||
|
@FXML
|
||||||
|
protected AnchorPane imageEditorScrollAnchorPane;
|
||||||
@FXML // fx:id="imageHeightField"
|
@FXML // fx:id="imageHeightField"
|
||||||
protected TextField imageHeightField; // Value injected by FXMLLoader
|
protected TextField imageHeightField; // Value injected by FXMLLoader
|
||||||
@FXML // fx:id="imageNameField"
|
@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 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 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 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();
|
abstract public void rebuildImageSelector();
|
||||||
@ -95,21 +105,6 @@ public abstract class ImageEditorTabController {
|
|||||||
@FXML
|
@FXML
|
||||||
abstract public void onImageSelected(ActionEvent event);
|
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
|
@FXML
|
||||||
abstract public void imageDraw5BitMode(ActionEvent event);
|
abstract public void imageDraw5BitMode(ActionEvent event);
|
||||||
|
@ -139,7 +139,11 @@ public class UIAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void quit() {
|
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;
|
static Image badImage;
|
||||||
|
@ -113,6 +113,7 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController {
|
|||||||
public void imageZoomIn(ActionEvent event) {
|
public void imageZoomIn(ActionEvent event) {
|
||||||
if (currentImageEditor != null) {
|
if (currentImageEditor != null) {
|
||||||
currentImageEditor.zoomIn();
|
currentImageEditor.zoomIn();
|
||||||
|
updateScrollAreaWithScale(currentImageEditor.getZoomScale());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,6 +121,7 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController {
|
|||||||
public void imageZoomOut(ActionEvent event) {
|
public void imageZoomOut(ActionEvent event) {
|
||||||
if (currentImageEditor != null) {
|
if (currentImageEditor != null) {
|
||||||
currentImageEditor.zoomOut();
|
currentImageEditor.zoomOut();
|
||||||
|
updateScrollAreaWithScale(currentImageEditor.getZoomScale());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,34 +164,6 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController {
|
|||||||
setCurrentImage(imageSelector.getSelectionModel().getSelectedItem());
|
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) {
|
private void setCurrentImage(Image i) {
|
||||||
if (currentImage != null && currentImage.equals(i)) {
|
if (currentImage != null && currentImage.equals(i)) {
|
||||||
return;
|
return;
|
||||||
@ -229,7 +203,7 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController {
|
|||||||
Logger.getLogger(ApplicationUIControllerImpl.class.getName()).log(Level.SEVERE, null, ex);
|
Logger.getLogger(ApplicationUIControllerImpl.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
}
|
}
|
||||||
currentImageEditor.setEntity(i);
|
currentImageEditor.setEntity(i);
|
||||||
currentImageEditor.buildEditorUI(imageEditorAnchorPane);
|
currentImageEditor.buildEditorUI(imageEditorScrollAnchorPane);
|
||||||
currentImageEditor.buildPatternSelector(imagePatternMenu);
|
currentImageEditor.buildPatternSelector(imagePatternMenu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -245,4 +219,13 @@ public class ImageEditorTabControllerImpl extends ImageEditorTabController {
|
|||||||
imageSelector.getItems().addAll(Application.gameData.getImage());
|
imageSelector.getItems().addAll(Application.gameData.getImage());
|
||||||
imageSelector.getSelectionModel().select(i);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<?import javafx.scene.control.*?>
|
<?import javafx.scene.control.*?>
|
||||||
<?import javafx.scene.layout.*?>
|
<?import javafx.scene.layout.*?>
|
||||||
|
|
||||||
<AnchorPane id="tilesTab" minHeight="0.0" minWidth="0.0" prefHeight="420.0" prefWidth="677.0" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.badvision.outlaweditor.ui.impl.ImageEditorTabControllerImpl">
|
<AnchorPane id="tilesTab" minHeight="0.0" minWidth="0.0" prefHeight="420.0" prefWidth="677.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.badvision.outlaweditor.ui.impl.ImageEditorTabControllerImpl">
|
||||||
<children>
|
<children>
|
||||||
<VBox prefHeight="420.0000999999975" prefWidth="677.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
<VBox prefHeight="420.0000999999975" prefWidth="677.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<children>
|
<children>
|
||||||
@ -52,12 +52,21 @@
|
|||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<AnchorPane id="mapEditorAnchorPane" fx:id="imageEditorAnchorPane" prefHeight="389.0" prefWidth="477.0" HBox.hgrow="ALWAYS">
|
<AnchorPane id="mapEditorAnchorPane" fx:id="imageEditorAnchorPane" prefHeight="389.0" prefWidth="477.0" HBox.hgrow="ALWAYS">
|
||||||
<children>
|
<children>
|
||||||
<Button layoutX="236.0" mnemonicParsing="false" onAction="#scrollImageUp" styleClass="moveButton" text="Up" AnchorPane.topAnchor="5.0" />
|
<ScrollPane fx:id="imageEditorScrollPane" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<Button layoutY="185.0" mnemonicParsing="false" onAction="#scrollImageLeft" rotate="270.0" styleClass="moveButton" text="Left" AnchorPane.leftAnchor="-20.0" />
|
<content>
|
||||||
<Button layoutX="236.0" mnemonicParsing="false" onAction="#scrollImageDown" rotate="180.0" styleClass="moveButton" text="Down" AnchorPane.bottomAnchor="5.0" />
|
<Group>
|
||||||
<Button layoutY="175.0" mnemonicParsing="false" onAction="#scrollImageRight" rotate="90.0" styleClass="moveButton" text="Right" AnchorPane.rightAnchor="-15.0" />
|
<children>
|
||||||
<Button mnemonicParsing="false" onAction="#imageZoomIn" styleClass="zoomInButton" text="+" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="5.0" />
|
<Group fx:id="imageEditorZoomGroup">
|
||||||
<Button mnemonicParsing="false" onAction="#imageZoomOut" prefHeight="23.999908447265625" styleClass="zoomOutButton" text="-" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="30.0" />
|
<children>
|
||||||
|
<AnchorPane fx:id="imageEditorScrollAnchorPane" prefHeight="354.0" prefWidth="446.0" />
|
||||||
|
</children>
|
||||||
|
</Group>
|
||||||
|
</children>
|
||||||
|
</Group>
|
||||||
|
</content>
|
||||||
|
</ScrollPane>
|
||||||
|
<Button layoutX="433.0" layoutY="5.0" mnemonicParsing="false" onAction="#imageZoomIn" styleClass="zoomInButton" text="+" AnchorPane.rightAnchor="18.0" AnchorPane.topAnchor="5.0" />
|
||||||
|
<Button layoutX="435.0" layoutY="37.0" mnemonicParsing="false" onAction="#imageZoomOut" prefHeight="23.999908447265625" styleClass="zoomOutButton" text="-" AnchorPane.rightAnchor="18.0" AnchorPane.topAnchor="37.0" />
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
</children>
|
</children>
|
||||||
|
Loading…
Reference in New Issue
Block a user