-
Notifications
You must be signed in to change notification settings - Fork 0
/
mcr-pw02.drawio
247 lines (247 loc) · 29.8 KB
/
mcr-pw02.drawio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
<mxfile host="app.diagrams.net" modified="2024-04-11T07:26:23.304Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" etag="UnUUENr0CqP3m2qsusNm" version="24.2.3" type="device">
<diagram id="dc8PlPbyk_JPTDViQMkN" name="Page-1">
<mxGraphModel dx="2640" dy="560" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="node8" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b><i>AbstractShape</i></b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">- size: int</p><p style="margin:0 0 0 4px;line-height:1.6;">- position: Vec2d<br>- velocity: Vec2d</p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">+ draw(): void</p><p style="margin:0 0 0 4px;line-height:1.6;">+ move(): void</p><p style="margin:0 0 0 4px;line-height:1.6;"># getPosition(): Vec2d</p><p style="margin:0 0 0 4px;line-height:1.6;"># getVelocity(): Vec2d</p><p style="margin:0 0 0 4px;line-height:1.6;"># getSize(): int</p><p style="margin:0 0 0 4px;line-height:1.6;"># getClampedPosition(Displayer): Vec2d<br># isWithinBounds(Displayer): boolean<br># getWallNormal(Displayer): Vec2d</p><p style="margin:0 0 0 4px;line-height:1.6;"><i># getRenderer(): Renderer</i></p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="178" y="790" width="284" height="330" as="geometry" />
</mxCell>
<mxCell id="node16" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;interface&gt;&gt;</i><br><b>Bouncable</b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;"><i>+ draw(): void<br>+ move(): void</i></p><p style="margin:0 0 0 4px;line-height:1.6;"><i>+ getColor(): Color</i></p><p style="margin:0 0 0 4px;line-height:1.6;"><i>+ getShape(): Colo</i>r</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-30" y="802.9399999999999" width="133" height="144.12" as="geometry" />
</mxCell>
<mxCell id="node1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>BouncableActions</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ keyTyped(KeyEvent): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-345" y="1000" width="208" height="74" as="geometry" />
</mxCell>
<mxCell id="16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" parent="1" source="node20" target="node16" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="17" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="16" vertex="1" connectable="0">
<mxGeometry x="0.8423" y="-1" relative="1" as="geometry">
<mxPoint x="1" y="15" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="18" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="16" vertex="1" connectable="0">
<mxGeometry x="-0.8353" y="-3" relative="1" as="geometry">
<mxPoint y="-18" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="node20" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Bouncers</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ run(): void<br/>+ main(String[]): void<br/>- createShapes(ShapeFactory): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-371" y="820" width="260" height="110" as="geometry" />
</mxCell>
<mxCell id="node19" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>BouncersWindow</b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;"><span style="background-color: initial;">+ addKeyListener(KeyListener): void</span><br></p><p style="margin:0 0 0 4px;line-height:1.6;">+ repaint(): void</p><p style="margin:0 0 0 4px;line-height:1.6;">+ getWidth(): int</p><p style="margin:0 0 0 4px;line-height:1.6;">+ getHeight():int<br></p><p style="margin:0 0 0 4px;line-height:1.6;">+ getGraphics(): Graphics2D<br></p><p style="margin:0 0 0 4px;line-height:1.6;">+ repaint(): void<br></p><p style="margin:0 0 0 4px;line-height:1.6;">+ setTitle(String): void<br></p><p style="margin:0 0 0 4px;line-height:1.6;">+ addKeyListener(KeyListener)</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-797.5" y="1240" width="264" height="220.5" as="geometry" />
</mxCell>
<mxCell id="node10" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b><i>Circle</i></b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">+ getShape(): Shape<br></p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="480" y="1180" width="180" height="60" as="geometry" />
</mxCell>
<mxCell id="node12" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;interface&gt;&gt;</i><br><b>Displayer</b></p><hr size="1"><p style="margin: 0px 0px 0px 4px; line-height: 120%;"><font style="font-size: 14px;"><i><span style="background-color: initial;">+ getWidth(): int</span><br></i></font></p><p style="margin: 0px 0px 0px 4px; line-height: 120%;"><font style="font-size: 14px;"><i>+ getHeight: int<br>+ getGraphics: Graphics2D</i></font></p><font style="font-size: 14px;"><i>&nbsp;+ addKeyListener(KeyListener): void<br>&nbsp;+ repaint(): void<br>&nbsp;+ setTitle(String) : void</i><br>&nbsp;<u>+ getInstance(): Displayer</u></font>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-439" y="1260.25" width="259" height="180" as="geometry" />
</mxCell>
<mxCell id="node11" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>DisplayerSingleton</b></p><hr>&nbsp;<u>- instance : Displayer</u><br><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;"><u>+ getInstance(): Displayer</u></p><p style="margin:0 0 0 4px;line-height:1.6;"><u>+ registerInstance(Class&lt;Displayer&gt;): void</u></p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-468" y="1500" width="298" height="126" as="geometry" />
</mxCell>
<mxCell id="node9" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>FillRenderer</b></p><hr size="1">&nbsp;+ display(Graphics2D, Bouncable)<br>&nbsp;<u>+&nbsp;getInstance(): FillRenderer<br></u>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="290" y="520" width="276" height="74" as="geometry" />
</mxCell>
<mxCell id="node5" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>FilledCircle</b></p><hr><p style="margin:0 0 0 4px;line-height:1.6;">+ getRenderer(): Renderer<br>+ getColor(): Color<br></p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="367" y="1349" width="180" height="81" as="geometry" />
</mxCell>
<mxCell id="node23" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>FilledShapeFactory</b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">+ createCircle(Random): Bouncable</p><p style="margin:0 0 0 4px;line-height:1.6;">+ createSquare(Random): Bouncable</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="178" y="1712" width="261" height="86" as="geometry" />
</mxCell>
<mxCell id="node22" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>FilledSquare</b></p><hr>&nbsp;+ getRenderer(): Renderer&nbsp;<br>&nbsp;+ getColor(): Color" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-111" y="1349" width="189" height="71" as="geometry" />
</mxCell>
<mxCell id="node6" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>GraphicsPanel</b></p><hr>&nbsp;- buffer: Image<br><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;"># paintComponent(Graphics): void<br>- resetBuffer(): void<br>- clear(): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-789" y="1601" width="247" height="139" as="geometry" />
</mxCell>
<mxCell id="node7" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>InstanceHolder</b></p><hr size="1">&nbsp;<u>- instance: FillRenderer {read only} = FillRenderer()</u>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="258" y="638" width="340" height="60" as="geometry" />
</mxCell>
<mxCell id="node21" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>InstanceHolder</b></p><hr size="1">&nbsp;<u>-&nbsp; instance: StrokeRenderer {read only} = StrokeRenderer()</u>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-570" y="638" width="390" height="60" as="geometry" />
</mxCell>
<mxCell id="node4" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;interface&gt;&gt;</i><br><b>Renderer</b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;"><i>+ display(Graphics2D, Bouncable): void</i></p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-111" y="518" width="276" height="78" as="geometry" />
</mxCell>
<mxCell id="node3" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>ResizeListener</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ componentResized(ComponentEvent): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-824" y="1790" width="317" height="70" as="geometry" />
</mxCell>
<mxCell id="node17" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b><i>ShapeFactory</i></b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;"><i>+ createSquare(Random): Bouncable<br>+ createCircle(Random): Bouncable</i></p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-3" y="1456" width="261" height="93" as="geometry" />
</mxCell>
<mxCell id="node13" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b><i>Square</i></b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">+ getShape(): Shape<br></p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="10" y="1180" width="190" height="60" as="geometry" />
</mxCell>
<mxCell id="node15" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>StrokeRenderer</b></p><hr size="1">&nbsp;+ display(Graphics2D, Bouncable)<br>&nbsp;<u>+&nbsp;getInstance(): StrokeRenderer<br></u>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-513" y="518" width="276" height="80" as="geometry" />
</mxCell>
<mxCell id="node14" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>StrokeShapeFactory</b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">+ createCircle(Random): Bouncable</p><p style="margin:0 0 0 4px;line-height:1.6;">+ createSquare(Random): Bouncable</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-170" y="1712" width="261" height="83" as="geometry" />
</mxCell>
<mxCell id="node2" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>StrokedCircle</b></p><hr>&nbsp;+ getRenderer(): Renderer<br>&nbsp;+ getColor(): Color" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="590" y="1349" width="196" height="81" as="geometry" />
</mxCell>
<mxCell id="node18" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>StrokedSquare</b></p><hr>&nbsp;+ getRenderer(): Renderer<br>&nbsp;+ getColor(): Color" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="127" y="1349" width="205" height="81" as="geometry" />
</mxCell>
<mxCell id="node0" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;record&gt;&gt;</i><br><b>Vec2d</b></p><hr size="1">&nbsp;+ X_AXIS: Vec2d {read only} = Vec2d(1,0)<br>&nbsp;+ Y_AXIS: Vec2d {read only} = Vec2d(0,1)<br><hr><p style="margin:0 0 0 4px;line-height:1.6;">+ subtract(Vec2d): Vec2d<br>+ add(Vec2d): Vec2d<br>+ dot(Vec2d): double<br>+ clamp(int, int, int, int): Vec2d<br>+ invert(): Vec2d<br>+ length(): double<br>+ reflect(Vec2d): Vec2d<br>+ normalize(): Vec2d<br>+ scale(double): Vec2d<br>+ flip(): Vec2d</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="500" y="1460.5" width="286" height="333" as="geometry" />
</mxCell>
<mxCell id="edge9" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=1;startArrow=none;endArrow=block;endSize=12;endFill=0;" parent="1" source="node8" target="node16" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge10" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=circlePlus;startFill=0;endArrow=none;exitX=0.500;exitY=0.000;exitDx=0;exitDy=0;entryX=0.500;entryY=1.004;entryDx=0;entryDy=0;" parent="1" source="node1" target="node20" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge3" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=1;startArrow=none;endArrow=block;endSize=12;entryX=0.000;entryY=0.502;entryDx=0;entryDy=0;endFill=0;" parent="1" source="node19" target="node12" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge16" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;exitX=0.500;exitY=0.006;exitDx=0;exitDy=0;entryX=0.500;entryY=1.004;entryDx=0;entryDy=0;endFill=0;" parent="1" source="node10" target="node8" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="571" y="1151" />
<mxPoint x="332" y="1151" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge8" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=1;startArrow=none;endArrow=block;endSize=12;endFill=0;" parent="1" source="node9" target="node4" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge15" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;exitX=0.500;exitY=0.005;exitDx=0;exitDy=0;endFill=0;" parent="1" source="node5" target="node10" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="457" y="1308" />
<mxPoint x="571" y="1308" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge4" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;entryX=0.500;entryY=1.005;entryDx=0;entryDy=0;endFill=0;" parent="1" source="node23" target="node17" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="297" y="1631" />
<mxPoint x="127" y="1631" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge5" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;exitX=0.500;exitY=0.005;exitDx=0;exitDy=0;endFill=0;" parent="1" source="node22" target="node13" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="-16" y="1309" />
<mxPoint x="103" y="1309" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge12" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=open;startFill=0;endArrow=none;exitX=0.500;exitY=0.000;exitDx=0;exitDy=0;entryX=0.500;entryY=1.005;entryDx=0;entryDy=0;" parent="1" source="node6" target="node19" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge6" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=circlePlus;startFill=0;endArrow=none;exitX=0.500;exitY=0.001;exitDx=0;exitDy=0;entryX=0.500;entryY=1.009;entryDx=0;entryDy=0;" parent="1" source="node7" target="node9" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge1" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=circlePlus;startFill=0;endArrow=none;exitX=0.500;exitY=0.001;exitDx=0;exitDy=0;entryX=0.500;entryY=1.009;entryDx=0;entryDy=0;" parent="1" source="node21" target="node15" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge2" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=circlePlus;startFill=0;endArrow=none;exitX=0.500;exitY=0.000;exitDx=0;exitDy=0;entryX=0.500;entryY=1.000;entryDx=0;entryDy=0;" parent="1" source="node3" target="node6" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge11" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;exitX=0.500;exitY=0.006;exitDx=0;exitDy=0;entryX=0.500;entryY=1.004;entryDx=0;entryDy=0;endFill=0;" parent="1" source="node13" target="node8" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="103" y="1151" />
<mxPoint x="332" y="1151" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge7" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=1;startArrow=none;endArrow=block;endSize=12;endFill=0;" parent="1" source="node15" target="node4" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge14" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;entryX=0.500;entryY=1.005;entryDx=0;entryDy=0;endFill=0;" parent="1" source="node14" target="node17" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="-42" y="1631" />
<mxPoint x="127" y="1631" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge0" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;endFill=0;" parent="1" source="node2" target="node10" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="680" y="1308" />
<mxPoint x="571" y="1308" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge13" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;exitX=0.500;exitY=0.005;exitDx=0;exitDy=0;endFill=0;" parent="1" source="node18" target="node13" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="230" y="1309" />
<mxPoint x="103" y="1309" />
</Array>
<mxPoint x="110" y="1260" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2" value="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="-665" y="1571" width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="8" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>JPanel</b></p><hr size="1">" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-993" y="1530" width="169" height="41" as="geometry" />
</mxCell>
<mxCell id="9" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=block;endArrow=none;endSize=12;endFill=0;startFill=0;" parent="1" source="8" target="node6" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="-900" y="1656" />
</Array>
<mxPoint x="-1070.0000000000002" y="1686.5" as="sourcePoint" />
<mxPoint x="-869" y="1520.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=14;startArrow=open;startFill=0;endArrow=none;endFill=0;" parent="1" source="12" target="node19" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="15" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" parent="13" vertex="1" connectable="0">
<mxGeometry x="-0.8052" relative="1" as="geometry">
<mxPoint x="3" y="-20" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="12" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>JFrame</b></p><hr size="1">" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-1050" y="1329.75" width="169" height="41" as="geometry" />
</mxCell>
<mxCell id="20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;startArrow=open;startFill=0;" parent="1" source="19" target="node20" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="21" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="20" vertex="1" connectable="0">
<mxGeometry x="-0.6823" y="1" relative="1" as="geometry">
<mxPoint x="-7" y="-13" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="22" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="20" vertex="1" connectable="0">
<mxGeometry x="0.7873" y="-3" relative="1" as="geometry">
<mxPoint y="12" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="19" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Random</b></p><hr size="1">" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-650" y="854" width="169" height="41" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>