diff --git a/src/main/java/de/ph87/electro/Window.java b/src/main/java/de/ph87/electro/Window.java index fb8f2a2..349bba2 100644 --- a/src/main/java/de/ph87/electro/Window.java +++ b/src/main/java/de/ph87/electro/Window.java @@ -1,6 +1,5 @@ package de.ph87.electro; -import de.ph87.electro.circuit.CircuitIOService; import de.ph87.electro.circuit.CircuitPanel; import de.ph87.electro.sidebar.Sidebar; @@ -18,7 +17,7 @@ public class Window extends JFrame { setExtendedState(MAXIMIZED_BOTH); final CircuitPanel circuitPanel = new CircuitPanel(); - final Sidebar sidebar = new Sidebar(circuitPanel::newCircuit, () -> CircuitIOService.save(circuitPanel.getCircuit())); + final Sidebar sidebar = new Sidebar(circuitPanel::newCircuit, circuitPanel.getCircuit()::save); final JSplitPane splitter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, sidebar, circuitPanel); sidebar.setRepaintCallback(circuitPanel::repaint); diff --git a/src/main/java/de/ph87/electro/circuit/Circuit.java b/src/main/java/de/ph87/electro/circuit/Circuit.java index e71f245..0ac651a 100644 --- a/src/main/java/de/ph87/electro/circuit/Circuit.java +++ b/src/main/java/de/ph87/electro/circuit/Circuit.java @@ -29,10 +29,6 @@ public class Circuit { private final List wires = new ArrayList<>(); - @Setter - @Getter - private boolean dirty = false; - @Setter @Getter private File file = null; @@ -88,13 +84,17 @@ public class Circuit { } verifyFree(position); part.setPosition(position); - dirty = true; + evaluate(); } public void evaluate() { - dirty = true; Calculation.calculate(this); parts.forEach(Part::render); + save(); + } + + public void save() { + CircuitIOService.save(this); } private void verifyFree(final Position position) { diff --git a/src/main/java/de/ph87/electro/circuit/CircuitIOService.java b/src/main/java/de/ph87/electro/circuit/CircuitIOService.java index 2fbb40e..9df994f 100644 --- a/src/main/java/de/ph87/electro/circuit/CircuitIOService.java +++ b/src/main/java/de/ph87/electro/circuit/CircuitIOService.java @@ -15,9 +15,6 @@ public class CircuitIOService { private static final ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules(); public static void save(final Circuit circuit) { - if (!circuit.isDirty()) { - return; - } if (circuit.getFile() == null) { circuit.setFile(new File("./data/%s.json".formatted(circuit.getCreated()))); } @@ -26,7 +23,6 @@ public class CircuitIOService { log.info("Directory created: {}", circuit.getFile().getParent()); } CircuitIOService.serialize(circuit, new FileOutputStream(circuit.getFile())); - circuit.setDirty(false); } catch (IOException e) { log.error(e.toString()); } diff --git a/src/main/java/de/ph87/electro/circuit/CircuitPanel.java b/src/main/java/de/ph87/electro/circuit/CircuitPanel.java index 1f662f1..1b8ff2d 100644 --- a/src/main/java/de/ph87/electro/circuit/CircuitPanel.java +++ b/src/main/java/de/ph87/electro/circuit/CircuitPanel.java @@ -1,7 +1,5 @@ package de.ph87.electro.circuit; -import de.ph87.electro.circuit.part.parts.Battery; -import de.ph87.electro.circuit.part.parts.Light; import lombok.Getter; import lombok.extern.slf4j.Slf4j; @@ -9,7 +7,6 @@ import javax.swing.*; import java.awt.*; import static de.ph87.electro.circuit.CircuitPainter.paintCircuit; -import static de.ph87.electro.circuit.part.Position.RST; @Slf4j public class CircuitPanel extends JPanel { @@ -21,11 +18,6 @@ public class CircuitPanel extends JPanel { public CircuitPanel() { new CircuitPanelDropTarget(this); - final Battery b0 = circuit.addPart(new Battery(circuit, RST(0, 0))); - final Light l = circuit.addPart(new Light(circuit, RST(2, 0))); - final Battery b1 = circuit.addPart(new Battery(circuit, RST(4, 0))); - circuit.connect(b0.getPlus(), l.getA()); - circuit.connect(l.getB(), b1.getMinus()); } @Override diff --git a/src/main/java/de/ph87/electro/circuit/part/Part.java b/src/main/java/de/ph87/electro/circuit/part/Part.java index 845672b..c938d3a 100644 --- a/src/main/java/de/ph87/electro/circuit/part/Part.java +++ b/src/main/java/de/ph87/electro/circuit/part/Part.java @@ -77,7 +77,7 @@ public abstract class Part { public void rotate() { orientation = orientation.clockwise(); junctions.forEach(Junction::updatePosition); - render(); + evaluate(); } public void render() { diff --git a/src/main/java/de/ph87/electro/sidebar/Sidebar.java b/src/main/java/de/ph87/electro/sidebar/Sidebar.java index 75b8636..a402d66 100644 --- a/src/main/java/de/ph87/electro/sidebar/Sidebar.java +++ b/src/main/java/de/ph87/electro/sidebar/Sidebar.java @@ -17,16 +17,23 @@ public class Sidebar extends JPanel { @Setter private Runnable repaintCallback = null; - public Sidebar(final Runnable newCircuit, final Runnable doSave) { + public Sidebar(final Runnable newCircuit, final Runnable save) { setPreferredSize(new Dimension(0, 200)); addButton("Neu", null, newCircuit, new Color(128, 202, 255)); - addButton("Öffnen", null, doSave, new Color(128, 202, 255)); - addButton("Speichern", null, doSave, new Color(128, 202, 255)); - addToggle("Details", () -> SHOW_WIRE_DETAILS, v -> SHOW_WIRE_DETAILS = v); - addToggle("Namen", () -> SHOW_JUNCTION_NAMES, v -> SHOW_JUNCTION_NAMES = v); - addToggle("Spannungen", () -> SHOW_JUNCTION_VOLTAGES, v -> SHOW_JUNCTION_VOLTAGES = v); + addToggle("Details", () -> SHOW_WIRE_DETAILS, v -> { + SHOW_WIRE_DETAILS = v; + save.run(); + }); + addToggle("Namen", () -> SHOW_JUNCTION_NAMES, v -> { + SHOW_JUNCTION_NAMES = v; + save.run(); + }); + addToggle("Spannungen", () -> SHOW_JUNCTION_VOLTAGES, v -> { + SHOW_JUNCTION_VOLTAGES = v; + save.run(); + }); addPart(new Battery(null, Position.ZERO)); addPart(new ConnectorCorner(null, Position.ZERO));