auto save
This commit is contained in:
parent
0eb53de222
commit
b7954b7459
@ -1,6 +1,5 @@
|
|||||||
package de.ph87.electro;
|
package de.ph87.electro;
|
||||||
|
|
||||||
import de.ph87.electro.circuit.CircuitIOService;
|
|
||||||
import de.ph87.electro.circuit.CircuitPanel;
|
import de.ph87.electro.circuit.CircuitPanel;
|
||||||
import de.ph87.electro.sidebar.Sidebar;
|
import de.ph87.electro.sidebar.Sidebar;
|
||||||
|
|
||||||
@ -18,7 +17,7 @@ public class Window extends JFrame {
|
|||||||
setExtendedState(MAXIMIZED_BOTH);
|
setExtendedState(MAXIMIZED_BOTH);
|
||||||
|
|
||||||
final CircuitPanel circuitPanel = new CircuitPanel();
|
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);
|
final JSplitPane splitter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, sidebar, circuitPanel);
|
||||||
|
|
||||||
sidebar.setRepaintCallback(circuitPanel::repaint);
|
sidebar.setRepaintCallback(circuitPanel::repaint);
|
||||||
|
|||||||
@ -29,10 +29,6 @@ public class Circuit {
|
|||||||
|
|
||||||
private final List<Wire> wires = new ArrayList<>();
|
private final List<Wire> wires = new ArrayList<>();
|
||||||
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
private boolean dirty = false;
|
|
||||||
|
|
||||||
@Setter
|
@Setter
|
||||||
@Getter
|
@Getter
|
||||||
private File file = null;
|
private File file = null;
|
||||||
@ -88,13 +84,17 @@ public class Circuit {
|
|||||||
}
|
}
|
||||||
verifyFree(position);
|
verifyFree(position);
|
||||||
part.setPosition(position);
|
part.setPosition(position);
|
||||||
dirty = true;
|
evaluate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void evaluate() {
|
public void evaluate() {
|
||||||
dirty = true;
|
|
||||||
Calculation.calculate(this);
|
Calculation.calculate(this);
|
||||||
parts.forEach(Part::render);
|
parts.forEach(Part::render);
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save() {
|
||||||
|
CircuitIOService.save(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void verifyFree(final Position position) {
|
private void verifyFree(final Position position) {
|
||||||
|
|||||||
@ -15,9 +15,6 @@ public class CircuitIOService {
|
|||||||
private static final ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
|
private static final ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
|
||||||
|
|
||||||
public static void save(final Circuit circuit) {
|
public static void save(final Circuit circuit) {
|
||||||
if (!circuit.isDirty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (circuit.getFile() == null) {
|
if (circuit.getFile() == null) {
|
||||||
circuit.setFile(new File("./data/%s.json".formatted(circuit.getCreated())));
|
circuit.setFile(new File("./data/%s.json".formatted(circuit.getCreated())));
|
||||||
}
|
}
|
||||||
@ -26,7 +23,6 @@ public class CircuitIOService {
|
|||||||
log.info("Directory created: {}", circuit.getFile().getParent());
|
log.info("Directory created: {}", circuit.getFile().getParent());
|
||||||
}
|
}
|
||||||
CircuitIOService.serialize(circuit, new FileOutputStream(circuit.getFile()));
|
CircuitIOService.serialize(circuit, new FileOutputStream(circuit.getFile()));
|
||||||
circuit.setDirty(false);
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error(e.toString());
|
log.error(e.toString());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
package de.ph87.electro.circuit;
|
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.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@ -9,7 +7,6 @@ import javax.swing.*;
|
|||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
import static de.ph87.electro.circuit.CircuitPainter.paintCircuit;
|
import static de.ph87.electro.circuit.CircuitPainter.paintCircuit;
|
||||||
import static de.ph87.electro.circuit.part.Position.RST;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class CircuitPanel extends JPanel {
|
public class CircuitPanel extends JPanel {
|
||||||
@ -21,11 +18,6 @@ public class CircuitPanel extends JPanel {
|
|||||||
|
|
||||||
public CircuitPanel() {
|
public CircuitPanel() {
|
||||||
new CircuitPanelDropTarget(this);
|
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
|
@Override
|
||||||
|
|||||||
@ -77,7 +77,7 @@ public abstract class Part {
|
|||||||
public void rotate() {
|
public void rotate() {
|
||||||
orientation = orientation.clockwise();
|
orientation = orientation.clockwise();
|
||||||
junctions.forEach(Junction::updatePosition);
|
junctions.forEach(Junction::updatePosition);
|
||||||
render();
|
evaluate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void render() {
|
public void render() {
|
||||||
|
|||||||
@ -17,16 +17,23 @@ public class Sidebar extends JPanel {
|
|||||||
@Setter
|
@Setter
|
||||||
private Runnable repaintCallback = null;
|
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));
|
setPreferredSize(new Dimension(0, 200));
|
||||||
|
|
||||||
addButton("Neu", null, newCircuit, new Color(128, 202, 255));
|
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("Details", () -> SHOW_WIRE_DETAILS, v -> {
|
||||||
addToggle("Namen", () -> SHOW_JUNCTION_NAMES, v -> SHOW_JUNCTION_NAMES = v);
|
SHOW_WIRE_DETAILS = v;
|
||||||
addToggle("Spannungen", () -> SHOW_JUNCTION_VOLTAGES, v -> SHOW_JUNCTION_VOLTAGES = 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 Battery(null, Position.ZERO));
|
||||||
addPart(new ConnectorCorner(null, Position.ZERO));
|
addPart(new ConnectorCorner(null, Position.ZERO));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user