Skip to content

Commit 7200217

Browse files
author
Edward Nutting
committed
Split-merge draw output text dynamically to enable students to play with how it works.
1 parent fa6e44c commit 7200217

1 file changed

Lines changed: 88 additions & 29 deletions

File tree

src/com/modsim/modules/SplitMerge.java

Lines changed: 88 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import javax.swing.JOptionPane;
1212

13+
import com.modsim.modules.parts.VisiblePart;
1314
import com.modsim.modules.ports.BidirPort;
1415
import com.modsim.Main;
1516
import com.modsim.modules.parts.Port;
@@ -26,6 +27,9 @@ public class SplitMerge extends BaseModule {
2627
private final BidirPort portA0, portA1;
2728
private final BidirPort portB0, portB1, portB2, portB3;
2829

30+
private final SSText portA0Text, portA1Text;
31+
private final SSText portB0Text, portB1Text, portB2Text, portB3Text;
32+
2933
private final List<BezierCurve> curves;
3034

3135
public SplitMerge() {
@@ -79,14 +83,22 @@ public SplitMerge() {
7983
cs[8] = new BezierCurve(new Vec2(B + b1, 23), new Vec2(d - b0, -23), // B1-d0
8084
new Vec2(B + b1, -15), new Vec2(d - b0, 15));
8185
curves = Collections.unmodifiableList(Arrays.asList(cs));
82-
83-
parts.add(new SSText(A-8, 24, "DCBA", 7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily()));
84-
parts.add(new SSText(B-8, 24, "XXDC", 7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily()));
85-
parts.add(new SSText(a+8, -24, "XXBA", -7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily()));
86-
parts.add(new SSText(b+8, -24, "XXXB", -7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily()));
87-
parts.add(new SSText(c+8, -24, "XXDC", -7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily()));
88-
parts.add(new SSText(d+8, -24, "XXXD", -7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily()));
8986

87+
portA0Text = new SSText(A-8, 24, "DCBA", 7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily(), VisiblePart.RefreshMode.Dynamic);
88+
portA1Text = new SSText(B-8, 24, "XXDC", 7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily(), VisiblePart.RefreshMode.Dynamic);
89+
90+
portB0Text = new SSText(a+8, -24, "XXBA", -7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily(), VisiblePart.RefreshMode.Dynamic);
91+
portB1Text = new SSText(b+8, -24, "XXXB", -7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily(), VisiblePart.RefreshMode.Dynamic);
92+
portB2Text = new SSText(c+8, -24, "XXDC", -7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily(), VisiblePart.RefreshMode.Dynamic);
93+
portB3Text = new SSText(d+8, -24, "XXXD", -7, Colors.splitMergeLabel, Fonts.splitMergeLabel.getFamily(), VisiblePart.RefreshMode.Dynamic);
94+
95+
parts.add(portA0Text);
96+
parts.add(portA1Text);
97+
98+
parts.add(portB0Text);
99+
parts.add(portB1Text);
100+
parts.add(portB2Text);
101+
parts.add(portB3Text);
90102
}
91103

92104
@Override
@@ -95,42 +107,89 @@ public void paintStatic(Graphics2D g) {
95107
g.setColor(Colors.moduleFill);
96108
drawBox(g, 10);
97109

110+
drawStaticParts(g);
111+
}
112+
113+
@Override
114+
public void paintDynamic(Graphics2D g) {
98115
// Show drawing
99116
g.setStroke(new BasicStroke(2));
100117
for (int i = 0; i < curves.size(); i++) {
101118
int grad = 0;
102119
switch (i) {
103-
case 0:
104-
grad = 120;
105-
break;
106-
case 1:
107-
case 2:
108-
grad = 140;
109-
break;
110-
case 3:
111-
grad = 160;
112-
break;
113-
case 4:
114-
case 5:
115-
grad = 180;
116-
break;
117-
case 6:
118-
grad = 200;
119-
break;
120-
case 7:
121-
case 8:
122-
grad = 220;
123-
break;
120+
case 0:
121+
grad = 120;
122+
break;
123+
case 1:
124+
case 2:
125+
grad = 140;
126+
break;
127+
case 3:
128+
grad = 160;
129+
break;
130+
case 4:
131+
case 5:
132+
grad = 180;
133+
break;
134+
case 6:
135+
grad = 200;
136+
break;
137+
case 7:
138+
case 8:
139+
grad = 220;
140+
break;
124141
}
125142
g.setColor(new Color(grad, grad, grad));
126143
curves.get(i).draw(g);
127144
}
128145

146+
if (portA0.isConnected()) {
147+
portA0Text.setText(portA0.getVal().toString());
148+
}
149+
else {
150+
portA0Text.setText("DCBA");
151+
}
152+
153+
if (portA1.isConnected()) {
154+
portA1Text.setText(portA1.getVal().toString());
155+
}
156+
else {
157+
portA1Text.setText("XXDC");
158+
}
159+
160+
if (portB0.isConnected()) {
161+
portB0Text.setText(portB0.getVal().toString());
162+
}
163+
else {
164+
portB0Text.setText("XXBA");
165+
}
166+
167+
if (portB1.isConnected()) {
168+
portB1Text.setText(portB1.getVal().toString());
169+
}
170+
else {
171+
portB1Text.setText("XXXB");
172+
}
173+
174+
if (portB2.isConnected()) {
175+
portB2Text.setText(portB2.getVal().toString());
176+
}
177+
else {
178+
portB2Text.setText("XXDC");
179+
}
180+
181+
if (portB3.isConnected()) {
182+
portB3Text.setText(portB3.getVal().toString());
183+
}
184+
else {
185+
portB3Text.setText("XXXD");
186+
}
187+
129188
// Show output/input
130189
g.setColor(Colors.modulePorts);
131190
drawBidir(g);
132191

133-
drawStaticParts(g);
192+
drawDynamicParts(g);
134193
}
135194

136195
@Override

0 commit comments

Comments
 (0)