import era.mi.logic.components.gates.NotGate;\r
import era.mi.logic.components.gates.OrGate;\r
import era.mi.logic.timeline.Timeline.ExecutionResult;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire;\r
\r
-public class GUITest extends JPanel {\r
+public class GUITest extends JPanel\r
+{\r
\r
private static final long serialVersionUID = 1L;\r
\r
private static final int OR_DELAY = 100;\r
private static final int NOT_DELAY = 100;\r
\r
- WireArray r = new WireArray(1, WIRE_DELAY);\r
- WireArray s = new WireArray(1, WIRE_DELAY);\r
- WireArray t1 = new WireArray(1, WIRE_DELAY);\r
- WireArray t2 = new WireArray(1, WIRE_DELAY);\r
- WireArray q = new WireArray(1, WIRE_DELAY);\r
- WireArray nq = new WireArray(1, WIRE_DELAY);\r
+ Wire r = new Wire(1, WIRE_DELAY);\r
+ Wire s = new Wire(1, WIRE_DELAY);\r
+ Wire t1 = new Wire(1, WIRE_DELAY);\r
+ Wire t2 = new Wire(1, WIRE_DELAY);\r
+ Wire q = new Wire(1, WIRE_DELAY);\r
+ Wire nq = new Wire(1, WIRE_DELAY);\r
\r
- ManualSwitch rIn = new ManualSwitch(r);\r
- ManualSwitch sIn = new ManualSwitch(s);\r
+ ManualSwitch rIn = new ManualSwitch(r.createEnd());\r
+ ManualSwitch sIn = new ManualSwitch(s.createEnd());\r
\r
- OrGate or1 = new OrGate(OR_DELAY, t2, r, nq);\r
- OrGate or2 = new OrGate(OR_DELAY, t1, s, q);\r
- NotGate not1 = new NotGate(NOT_DELAY, t2, q);\r
- NotGate not2 = new NotGate(NOT_DELAY, t1, nq);\r
+ OrGate or1 = new OrGate(OR_DELAY, t2.createEnd(), r.createEnd(), nq.createEnd());\r
+ OrGate or2 = new OrGate(OR_DELAY, t1.createEnd(), s.createEnd(), q.createEnd());\r
+ NotGate not1 = new NotGate(NOT_DELAY, t2.createEnd(), q.createEnd());\r
+ NotGate not2 = new NotGate(NOT_DELAY, t1.createEnd(), nq.createEnd());\r
\r
Map<ManualSwitch, Rectangle> switchMap = new HashMap<>();\r
\r
int width;\r
boolean sizeChanged;\r
\r
- public GUITest() {\r
- addMouseListener(new MouseListener() {\r
+ public GUITest()\r
+ {\r
+ addMouseListener(new MouseListener()\r
+ {\r
\r
@Override\r
- public void mouseReleased(MouseEvent e) {\r
- for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet()) {\r
- if (dim.getValue().contains(e.getPoint())) {\r
+ public void mouseReleased(MouseEvent e)\r
+ {\r
+ for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet())\r
+ {\r
+ if (dim.getValue().contains(e.getPoint()))\r
+ {\r
dim.getKey().switchOff();\r
repaint();\r
}\r
}\r
\r
@Override\r
- public void mousePressed(MouseEvent e) {\r
- for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet()) {\r
- if (dim.getValue().contains(e.getPoint())) {\r
+ public void mousePressed(MouseEvent e)\r
+ {\r
+ for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet())\r
+ {\r
+ if (dim.getValue().contains(e.getPoint()))\r
+ {\r
dim.getKey().switchOn();\r
repaint();\r
}\r
}\r
\r
@Override\r
- public void mouseExited(MouseEvent e) {\r
+ public void mouseExited(MouseEvent e)\r
+ {\r
// none\r
}\r
\r
@Override\r
- public void mouseEntered(MouseEvent e) {\r
+ public void mouseEntered(MouseEvent e)\r
+ {\r
// none\r
}\r
\r
@Override\r
- public void mouseClicked(MouseEvent e) {\r
+ public void mouseClicked(MouseEvent e)\r
+ {\r
// If you want toggle buttons, use this code instead\r
// for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet()) {\r
// if (dim.getValue().contains(e.getPoint())) {\r
}\r
\r
@Override\r
- public void paint(Graphics some_g) {\r
+ public void paint(Graphics some_g)\r
+ {\r
super.paint(some_g);\r
Graphics2D g = ((Graphics2D) some_g);\r
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);\r
drawString(g, "Hint: drag the cursor out of the pressed switch to keep it's state", 5, 0, 0.0, 1.0);\r
}\r
\r
- private void checkSizeChange() {\r
+ private void checkSizeChange()\r
+ {\r
sizeChanged = height != getHeight() || width != getWidth();\r
- if (sizeChanged) {\r
+ if (sizeChanged)\r
+ {\r
height = getHeight();\r
width = getWidth();\r
}\r
}\r
\r
- private void adaptFont(Graphics g) {\r
+ private void adaptFont(Graphics g)\r
+ {\r
g.setFont(g.getFont().deriveFont(Math.min(height, width) / 40f));\r
}\r
\r
- private void drawString(Graphics g, String s, int x, int y, double anchorX, double anchorY) {\r
+ private void drawString(Graphics g, String s, int x, int y, double anchorX, double anchorY)\r
+ {\r
int h = g.getFontMetrics().getAscent();\r
int w = g.getFontMetrics().stringWidth(s);\r
g.drawString(s, x - (int) (w * anchorX), y + (int) (h * anchorY));\r
}\r
\r
- private void drawWire(Graphics g, WireArray wa, String name, double x1, double y1, double x2, double y2) {\r
+ private void drawWire(Graphics g, Wire wa, String name, double x1, double y1, double x2, double y2)\r
+ {\r
setTo(g, wa);\r
g.drawLine(gX(x1), gY(y1), gX(x2), gY(y2));\r
drawString(g, name, (gX(x1) + gX(x2)) / 2, (gY(y1) + gY(y2)) / 2 - 5, 0, 0);\r
}\r
\r
- private void drawSquare(Graphics g, int posX, int posY, String text) {\r
+ private void drawSquare(Graphics g, int posX, int posY, String text)\r
+ {\r
int x1 = gX(posX) - 5;\r
int x2 = gX(posX + 1) + 5;\r
int y1 = gY(posY) - 5;\r
\r
}\r
\r
- private void drawSwitch(Graphics g, ManualSwitch ms, String text, double posX1, double posY1, double posX2, double posY2) {\r
+ private void drawSwitch(Graphics g, ManualSwitch ms, String text, double posX1, double posY1, double posX2, double posY2)\r
+ {\r
int x1 = gX(posX1) - 5;\r
int x2 = gX(posX2) + 5;\r
int y1 = gY(posY1) - 5;\r
int y2 = gY(posY2) + 5;\r
\r
- if (sizeChanged) {\r
+ if (sizeChanged)\r
+ {\r
Rectangle r = new Rectangle(x1, y1, x2 - x1, y2 - y1);\r
switchMap.put(ms, r);\r
}\r
drawString(g, text, (x1 + x2) / 2, (y1 + y2) / 2, 0.5, 0.5);\r
}\r
\r
- private static void setBlack(Graphics g) {\r
+ private static void setBlack(Graphics g)\r
+ {\r
g.setColor(Color.BLACK);\r
}\r
\r
- private static void setTo(Graphics g, WireArray wa) {\r
- switch (wa.getValue()) {\r
+ private static void setTo(Graphics g, Wire wa)\r
+ {\r
+ switch (wa.getValue())\r
+ {\r
case ONE:\r
g.setColor(Color.GREEN);\r
break;\r
case ZERO:\r
g.setColor(Color.BLACK);\r
break;\r
+ case U:\r
+ g.setColor(Color.MAGENTA);\r
+ break;\r
default:\r
throw new IllegalArgumentException();\r
}\r
}\r
\r
- private int gY(double pos) {\r
+ private int gY(double pos)\r
+ {\r
return (int) (pos * height / 11);\r
}\r
\r
- private int gX(double pos) {\r
+ private int gX(double pos)\r
+ {\r
return (int) (pos * width / 11) + 50;\r
}\r
\r
- public static void main(String[] args) {\r
+ public static void main(String[] args)\r
+ {\r
JFrame f = new JFrame("Test circuit 1.0.0");\r
GUITest gt = new GUITest();\r
f.add(gt);\r
long lastFrame = begin;\r
long updateT = 16;\r
\r
- while (f.isVisible()) {\r
+ while (f.isVisible())\r
+ {\r
ExecutionResult er = Simulation.TIMELINE.executeUpTo((lastFrame - begin) * 3, lastFrame + 14);\r
// if (Simulation.TIMELINE.hasNext()) \r
// Simulation.TIMELINE.executeNext();\r
if (er != ExecutionResult.NOTHING_DONE)\r
gt.repaint(12);\r
- try {\r
+ try\r
+ {\r
Thread.sleep(Math.max(16 - System.currentTimeMillis() + lastFrame, 0));\r
- } catch (Exception e) {\r
+ }\r
+ catch (Exception e)\r
+ {\r
e.printStackTrace();\r
}\r
lastFrame = System.currentTimeMillis();\r