auto save
This commit is contained in:
parent
0eb53de222
commit
b7954b7459
@ -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);
|
||||
|
||||
@ -29,10 +29,6 @@ public class Circuit {
|
||||
|
||||
private final List<Wire> 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) {
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -77,7 +77,7 @@ public abstract class Part {
|
||||
public void rotate() {
|
||||
orientation = orientation.clockwise();
|
||||
junctions.forEach(Junction::updatePosition);
|
||||
render();
|
||||
evaluate();
|
||||
}
|
||||
|
||||
public void render() {
|
||||
|
||||
@ -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));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user