From aa505902378bd2c23547500bf1fad6228917597c Mon Sep 17 00:00:00 2001 From: Samuel Russell Date: Fri, 25 Nov 2016 11:16:22 +0000 Subject: [PATCH] added a reset View feature in view menu that resets the view to the last save position since students kept loosing their curcuits in the workspace. COuld improve by making it auto fit the current cricuit but this was a quicker fix and works fine for now --- src/com/modsim/gui/GUI.java | 5 ++++- src/com/modsim/gui/Menu.java | 1 + src/com/modsim/gui/view/View.java | 16 ++++++++++++++-- src/com/modsim/operations/Ops.java | 4 ++-- src/com/modsim/util/XMLReader.java | 6 +++--- 5 files changed, 24 insertions(+), 8 deletions(-) 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();