package de.ph87.electro.circuit; import de.ph87.electro.circuit.part.Part; import de.ph87.electro.circuit.part.impl.*; import de.ph87.electro.common.AbstractDropTarget; import java.awt.*; import static de.ph87.electro.CONFIG.RASTER; import static de.ph87.electro.common.MathHelpers.div; public class CircuitPanelDropTarget extends AbstractDropTarget { private final CircuitPanel circuitPanel; private final Circuit circuit; public CircuitPanelDropTarget(final CircuitPanel circuitPanel, final Circuit circuit) { super(circuitPanel); this.circuitPanel = circuitPanel; this.circuit = circuit; circuitPanel.setDropTarget(this); } @Override protected boolean drop(final Point point, final String data) { final Point raster = div(point, RASTER); if (data.equals(PartBattery.class.getSimpleName())) { addPart(new PartBattery(raster)); } else if (data.equals(PartJunctionCorner.class.getSimpleName())) { addPart(new PartJunctionCorner(raster)); } else if (data.equals(PartJunctionEdge.class.getSimpleName())) { addPart(new PartJunctionEdge(raster)); } else if (data.equals(PartJunctionMiddle.class.getSimpleName())) { addPart(new PartJunctionMiddle(raster)); } else if (data.equals(PartLight.class.getSimpleName())) { addPart(new PartLight(raster)); } else if (data.equals(PartSwitch1x1.class.getSimpleName())) { addPart(new PartSwitch1x1(raster)); } else if (data.equals(PartSwitch1x2.class.getSimpleName())) { addPart(new PartSwitch1x2(raster)); } else if (data.equals(PartSwitchCross.class.getSimpleName())) { addPart(new PartSwitchCross(raster)); } else { throw new RuntimeException(); } circuitPanel.repaint(); return true; } public void addPart(final Part part) { circuit.partAdd(part); circuitPanel.repaint(); } }