57 lines
1.8 KiB
Java
57 lines
1.8 KiB
Java
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();
|
|
}
|
|
|
|
}
|