diff --git a/src/com/modsim/gui/GUI.java b/src/com/modsim/gui/GUI.java index 842228d..70395fa 100644 --- a/src/com/modsim/gui/GUI.java +++ b/src/com/modsim/gui/GUI.java @@ -265,7 +265,10 @@ public void zoomOutToView() view.zoomOut(view.getWidth()/2,view.getHeight()/2); } - + public void resetView() + { + view.resetView(); + } /** diff --git a/src/com/modsim/gui/Menu.java b/src/com/modsim/gui/Menu.java index b1c224b..1035789 100644 --- a/src/com/modsim/gui/Menu.java +++ b/src/com/modsim/gui/Menu.java @@ -83,6 +83,7 @@ private void addViewMenu() { JMenu view = new JMenu("View"); view.setMnemonic(KeyEvent.VK_V); view.add(Ops.toggleAA); + view.add(Ops.resetView); app_menu.add(view); } diff --git a/src/com/modsim/gui/view/View.java b/src/com/modsim/gui/view/View.java index 229b34e..61467ef 100644 --- a/src/com/modsim/gui/view/View.java +++ b/src/com/modsim/gui/view/View.java @@ -21,13 +21,16 @@ */ public class View extends JPanel { - public int zoomI = 3; + public int init_zoomI = 3; + public double init_camX = 0, init_camY = 0; + + public int zoomI = init_zoomI; public double zoom = zoomI * ZOOM_MULTIPLIER; public static final double ZOOM_MULTIPLIER = 0.15; public static final int ZOOM_LIMIT = 12; - public double camX = 0, camY = 0; + public double camX = init_camX, camY = init_camY; public AffineTransform wToV = new AffineTransform(); private static final long serialVersionUID = 1L; @@ -250,4 +253,13 @@ public void zoomOut(int x, int y) { } } + public void resetView() { + //center view + camX = init_camX; + camY = init_camY; + //reset zoom + zoomI = init_zoomI; + zoom = zoomI * ZOOM_MULTIPLIER; + } + } diff --git a/src/com/modsim/operations/Ops.java b/src/com/modsim/operations/Ops.java index 1860a1b..7c7345c 100644 --- a/src/com/modsim/operations/Ops.java +++ b/src/com/modsim/operations/Ops.java @@ -136,7 +136,7 @@ public static void fileNew() { // Core application actions public static final DesignAction undo, redo, copy, paste, delete, rotateCW, rotateCCW, rotate180, labelEdit, labelBig, labelSmall, - pause, run, step, toggleRun, zoomIn, zoomOut, toggleAA, open, save, saveAs, fileNew, quit; + pause, run, step, toggleRun, zoomIn, zoomOut, resetView, toggleAA, open, save, saveAs, fileNew, quit; static { // Keyboard shortcuts @@ -248,7 +248,7 @@ public static void fileNew() { //Zoom controls zoomIn = new DesignAction(event -> Main.ui.zoomInToView(), "Zoom In"); zoomOut = new DesignAction(event -> Main.ui.zoomOutToView(), "Zoom Out"); - + resetView = new DesignAction(event -> Main.ui.resetView(), "Reset View"); // View controls toggleAA = new DesignAction(event -> Main.ui.view.useAA = !Main.ui.view.useAA, diff --git a/src/com/modsim/util/XMLReader.java b/src/com/modsim/util/XMLReader.java index 44c3472..c476ce2 100644 --- a/src/com/modsim/util/XMLReader.java +++ b/src/com/modsim/util/XMLReader.java @@ -44,9 +44,9 @@ public static void readFile(File xmlFile) { // View load Element view = (Element) doc.getElementsByTagName("view").item(0); View v = Main.ui.view; - v.camX = Double.parseDouble(view.getAttribute("camX")); - v.camY = Double.parseDouble(view.getAttribute("camY")); - v.zoomI = Integer.parseInt(view.getAttribute("zoom")); + v.init_camX = v.camX = Double.parseDouble(view.getAttribute("camX")); + v.init_camY = v.camY = Double.parseDouble(view.getAttribute("camY")); + v.init_zoomI = v.zoomI = Integer.parseInt(view.getAttribute("zoom")); v.zoom = View.ZOOM_MULTIPLIER * v.zoomI; v.calcXForm();