Changes
This commit is contained in:
427
diagrams/.$Architecture.drawio.bkp
Normal file
427
diagrams/.$Architecture.drawio.bkp
Normal file
@@ -0,0 +1,427 @@
|
||||
<mxfile host="Electron" modified="2024-01-07T09:13:08.243Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.1.16 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="_bvHm9ioVpy3Jx4YFCDc" version="22.1.16" type="device" pages="3">
|
||||
<diagram name="Page-1" id="FHZ-RDlm81MId5-1I50H">
|
||||
<mxGraphModel dx="1114" dy="663" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="none" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="n1GnVWBW3RMSIi8rW6qm-1" value="View" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="40" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-1" value="Model" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-2" value="Controller" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-3" value="View Model" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-4" value="Presenter" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="230" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-14" value="Client" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="330" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-15" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-2" target="WrU0Sfet5MJkPbADlNtg-14">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="290" y="340" as="sourcePoint" />
|
||||
<mxPoint x="340" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-16" value="Request" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="WrU0Sfet5MJkPbADlNtg-15">
|
||||
<mxGeometry x="0.1" y="1" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-17" value="Server" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="509" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-18" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-14" target="WrU0Sfet5MJkPbADlNtg-17">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="450" as="sourcePoint" />
|
||||
<mxPoint x="520" y="400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-19" value="Request" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="WrU0Sfet5MJkPbADlNtg-18">
|
||||
<mxGeometry x="0.05" y="-2" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-20" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-17" target="WrU0Sfet5MJkPbADlNtg-14">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="450" as="sourcePoint" />
|
||||
<mxPoint x="520" y="400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-21" value="Response<br>Data" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="WrU0Sfet5MJkPbADlNtg-20">
|
||||
<mxGeometry x="-0.025" y="-1" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-22" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-14" target="WrU0Sfet5MJkPbADlNtg-2">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="350" as="sourcePoint" />
|
||||
<mxPoint x="520" y="300" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-24" value="Response<br>Data" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="WrU0Sfet5MJkPbADlNtg-22">
|
||||
<mxGeometry x="-0.1" y="3" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-25" value="Update<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-2" target="WrU0Sfet5MJkPbADlNtg-1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="540" y="220" as="sourcePoint" />
|
||||
<mxPoint x="630" y="220" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-30" value="View Event<br>Manager" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="230" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-31" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" edge="1" parent="1" source="n1GnVWBW3RMSIi8rW6qm-1" target="WrU0Sfet5MJkPbADlNtg-30">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="160" y="220" as="sourcePoint" />
|
||||
<mxPoint x="240" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-32" value="Event" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="WrU0Sfet5MJkPbADlNtg-31">
|
||||
<mxGeometry x="0.0286" y="-2" relative="1" as="geometry">
|
||||
<mxPoint y="-2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-33" value="Event" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-30" target="WrU0Sfet5MJkPbADlNtg-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="440" y="200" as="sourcePoint" />
|
||||
<mxPoint x="490" y="150" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-34" value="Event" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-30" target="WrU0Sfet5MJkPbADlNtg-2">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="440" y="200" as="sourcePoint" />
|
||||
<mxPoint x="490" y="150" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-3" value="Network Interface" style="endArrow=none;dashed=1;html=1;rounded=0;align=left;verticalAlign=bottom;" edge="1" parent="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="425" y="420" as="sourcePoint" />
|
||||
<mxPoint x="680" y="420" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-4" value="Trigger<br>Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-4" target="n1GnVWBW3RMSIi8rW6qm-1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="170" y="160" as="sourcePoint" />
|
||||
<mxPoint x="220" y="110" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-5" value="Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="n1GnVWBW3RMSIi8rW6qm-1" target="WrU0Sfet5MJkPbADlNtg-3">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="320" as="sourcePoint" />
|
||||
<mxPoint x="410" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-6" value="Trigger<br>Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-2" target="WrU0Sfet5MJkPbADlNtg-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="320" as="sourcePoint" />
|
||||
<mxPoint x="410" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-7" value="Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-4" target="WrU0Sfet5MJkPbADlNtg-1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="340" y="300" as="sourcePoint" />
|
||||
<mxPoint x="390" y="250" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-9" value="Update<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-4" target="WrU0Sfet5MJkPbADlNtg-3">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="170" y="340" as="sourcePoint" />
|
||||
<mxPoint x="220" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-10" value="Update<br>View<br>Model<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-4" target="WrU0Sfet5MJkPbADlNtg-2">
|
||||
<mxGeometry x="0.2549" y="22" width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-11" value="Fetching<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="n1GnVWBW3RMSIi8rW6qm-1" target="WrU0Sfet5MJkPbADlNtg-30">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-12" value="Fetching<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-30" target="WrU0Sfet5MJkPbADlNtg-4">
|
||||
<mxGeometry x="-0.3333" y="10" width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
<diagram id="LyT_7eZ8ZHafqnmZi-tR" name="Page-3">
|
||||
<mxGraphModel dx="1114" dy="663" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-1" value="View" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-2" value="Model" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-3" value="Controller" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-4" value="View Model" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-5" value="Presenter" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="230" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-6" value="Client" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="330" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-7" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-3" target="dZXWpN2tcvNV-OdXUMDU-6">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="290" y="340" as="sourcePoint" />
|
||||
<mxPoint x="340" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-8" value="Request" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="dZXWpN2tcvNV-OdXUMDU-7">
|
||||
<mxGeometry x="0.1" y="1" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-9" value="Server" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="509" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-10" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-6" target="dZXWpN2tcvNV-OdXUMDU-9">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="450" as="sourcePoint" />
|
||||
<mxPoint x="520" y="400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-11" value="Request" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="dZXWpN2tcvNV-OdXUMDU-10">
|
||||
<mxGeometry x="0.05" y="-2" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-12" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-9" target="dZXWpN2tcvNV-OdXUMDU-6">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="450" as="sourcePoint" />
|
||||
<mxPoint x="520" y="400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-13" value="Response<br>Data" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="dZXWpN2tcvNV-OdXUMDU-12">
|
||||
<mxGeometry x="-0.025" y="-1" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-14" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-6" target="dZXWpN2tcvNV-OdXUMDU-3">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="350" as="sourcePoint" />
|
||||
<mxPoint x="520" y="300" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-15" value="Response<br>Data" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="dZXWpN2tcvNV-OdXUMDU-14">
|
||||
<mxGeometry x="-0.1" y="3" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-16" value="Update<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-3" target="dZXWpN2tcvNV-OdXUMDU-2">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="540" y="220" as="sourcePoint" />
|
||||
<mxPoint x="630" y="220" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-17" value="View Event<br>Manager" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="230" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-18" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-1" target="dZXWpN2tcvNV-OdXUMDU-17">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="160" y="220" as="sourcePoint" />
|
||||
<mxPoint x="240" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-19" value="Event" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="dZXWpN2tcvNV-OdXUMDU-18">
|
||||
<mxGeometry x="0.0286" y="-2" relative="1" as="geometry">
|
||||
<mxPoint y="-2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-20" value="Event" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-17" target="dZXWpN2tcvNV-OdXUMDU-5">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="440" y="200" as="sourcePoint" />
|
||||
<mxPoint x="490" y="150" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-21" value="Event" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-17" target="dZXWpN2tcvNV-OdXUMDU-3">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="440" y="200" as="sourcePoint" />
|
||||
<mxPoint x="490" y="150" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-22" value="Network Interface" style="endArrow=none;dashed=1;html=1;rounded=0;align=left;verticalAlign=bottom;" edge="1" parent="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="425" y="420" as="sourcePoint" />
|
||||
<mxPoint x="680" y="420" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-23" value="Trigger<br>Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-5" target="dZXWpN2tcvNV-OdXUMDU-1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="170" y="160" as="sourcePoint" />
|
||||
<mxPoint x="220" y="110" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-24" value="Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-1" target="dZXWpN2tcvNV-OdXUMDU-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="320" as="sourcePoint" />
|
||||
<mxPoint x="410" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-25" value="Trigger<br>Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-3" target="dZXWpN2tcvNV-OdXUMDU-5">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="320" as="sourcePoint" />
|
||||
<mxPoint x="410" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-26" value="Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-5" target="dZXWpN2tcvNV-OdXUMDU-2">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="340" y="300" as="sourcePoint" />
|
||||
<mxPoint x="390" y="250" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-27" value="Update<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-5" target="dZXWpN2tcvNV-OdXUMDU-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="170" y="340" as="sourcePoint" />
|
||||
<mxPoint x="220" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-28" value="Update<br>View<br>Model<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-5" target="dZXWpN2tcvNV-OdXUMDU-3">
|
||||
<mxGeometry x="0.2549" y="22" width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-29" value="Fetching<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-1" target="dZXWpN2tcvNV-OdXUMDU-17">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-30" value="Fetching<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-17" target="dZXWpN2tcvNV-OdXUMDU-5">
|
||||
<mxGeometry x="-0.3333" y="10" width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-31" value="<font color="#121212">Swing UI</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="260" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-32" value="<font color="#121212">Sender</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" vertex="1" parent="1">
|
||||
<mxGeometry x="550" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-33" value="<font color="#121212">Receiver</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" vertex="1" parent="1">
|
||||
<mxGeometry x="680" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
<diagram id="Qvqhu417yh47AELHSp99" name="Page-2">
|
||||
<mxGraphModel dx="1114" dy="663" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-1" value="View" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-2" value="View Event<br>Manager" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="230" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-3" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="RjpXFJRHx75nK1sPjYBd-1" target="RjpXFJRHx75nK1sPjYBd-2">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="190" y="170" as="sourcePoint" />
|
||||
<mxPoint x="240" y="120" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-4" value="Event" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="RjpXFJRHx75nK1sPjYBd-3">
|
||||
<mxGeometry x="0.0286" y="-2" relative="1" as="geometry">
|
||||
<mxPoint y="-2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-5" value="Events:" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="160" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-6" value="Connect to Server Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="200" width="220" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-8" value="Alarm ID x got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="280" width="150" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-9" value="Active Connections Panel was clicked" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="320" width="220" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-10" value="System Information Panel was clicked" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="360" width="230" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-11" value="Requests Panel was clicked" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="400" width="170" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-12" value="Cake Diagram Panel was clicked" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="440" width="200" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-13" value="<font color="#ff0000">Montoring Panel:</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="238" width="110" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-14" value="<font color="#ff0000">Connect to Server Panel:</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="160" width="160" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-15" value="<font color="#ff0000">Controlling Panel:</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="160" width="120" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-16" value="NFTables Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="200" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-17" value="Add new Port Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="240" width="200" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-18" value="Logs Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="480" width="150" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-19" value="<font color="#ff0000">NFTables Family Panel:</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="320" width="150" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-20" value="Download Configuration got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="360" width="220" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-21" value="inet family Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="400" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-22" value="ipv4 family Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="440" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-23" value="ipv6 family Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="480" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-24" value="<font color="#ff0000">Status Panel:</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="520" width="90" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-25" value="Go to Monitoring Panel Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="560" width="250" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-28" value="Go to Controlling Panel Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="600" width="250" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-29" value="Go to Previous Panel Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="640" width="240" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-30" value="Go to Next Panel Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="680" width="220" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
430
diagrams/Architecture.drawio
Normal file
430
diagrams/Architecture.drawio
Normal file
@@ -0,0 +1,430 @@
|
||||
<mxfile host="Electron" modified="2024-01-07T09:16:47.650Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.1.16 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="2A-9a8xq9IaTpGp-kday" version="22.1.16" type="device" pages="3">
|
||||
<diagram name="Page-1" id="FHZ-RDlm81MId5-1I50H">
|
||||
<mxGraphModel dx="1114" dy="663" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="none" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="n1GnVWBW3RMSIi8rW6qm-1" value="View" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="40" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-1" value="Model" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-2" value="Controller" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-3" value="View Model" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-4" value="Presenter" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="230" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-14" value="Client" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="330" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-15" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-2" target="WrU0Sfet5MJkPbADlNtg-14">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="290" y="340" as="sourcePoint" />
|
||||
<mxPoint x="340" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-16" value="Request" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="WrU0Sfet5MJkPbADlNtg-15">
|
||||
<mxGeometry x="0.1" y="1" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-17" value="Server" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="509" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-18" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-14" target="WrU0Sfet5MJkPbADlNtg-17">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="450" as="sourcePoint" />
|
||||
<mxPoint x="520" y="400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-19" value="Request" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="WrU0Sfet5MJkPbADlNtg-18">
|
||||
<mxGeometry x="0.05" y="-2" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-20" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-17" target="WrU0Sfet5MJkPbADlNtg-14">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="450" as="sourcePoint" />
|
||||
<mxPoint x="520" y="400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-21" value="Response<br>Data" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="WrU0Sfet5MJkPbADlNtg-20">
|
||||
<mxGeometry x="-0.025" y="-1" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-22" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-14" target="WrU0Sfet5MJkPbADlNtg-2">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="350" as="sourcePoint" />
|
||||
<mxPoint x="520" y="300" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-24" value="Response<br>Data" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="WrU0Sfet5MJkPbADlNtg-22">
|
||||
<mxGeometry x="-0.1" y="3" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-25" value="Update<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-2" target="WrU0Sfet5MJkPbADlNtg-1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="540" y="220" as="sourcePoint" />
|
||||
<mxPoint x="630" y="220" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-30" value="View Event<br>Manager" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="230" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-31" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" edge="1" parent="1" source="n1GnVWBW3RMSIi8rW6qm-1" target="WrU0Sfet5MJkPbADlNtg-30">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="160" y="220" as="sourcePoint" />
|
||||
<mxPoint x="240" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-32" value="Event" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="WrU0Sfet5MJkPbADlNtg-31">
|
||||
<mxGeometry x="0.0286" y="-2" relative="1" as="geometry">
|
||||
<mxPoint y="-2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-33" value="Event" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-30" target="WrU0Sfet5MJkPbADlNtg-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="440" y="200" as="sourcePoint" />
|
||||
<mxPoint x="490" y="150" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="WrU0Sfet5MJkPbADlNtg-34" value="Event" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-30" target="WrU0Sfet5MJkPbADlNtg-2">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="440" y="200" as="sourcePoint" />
|
||||
<mxPoint x="490" y="150" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-3" value="Network Interface" style="endArrow=none;dashed=1;html=1;rounded=0;align=left;verticalAlign=bottom;" edge="1" parent="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="425" y="420" as="sourcePoint" />
|
||||
<mxPoint x="680" y="420" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-4" value="Trigger<br>Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-4" target="n1GnVWBW3RMSIi8rW6qm-1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="170" y="160" as="sourcePoint" />
|
||||
<mxPoint x="220" y="110" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-5" value="Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="n1GnVWBW3RMSIi8rW6qm-1" target="WrU0Sfet5MJkPbADlNtg-3">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="320" as="sourcePoint" />
|
||||
<mxPoint x="410" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-6" value="Trigger<br>Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-2" target="WrU0Sfet5MJkPbADlNtg-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="320" as="sourcePoint" />
|
||||
<mxPoint x="410" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-7" value="Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-4" target="WrU0Sfet5MJkPbADlNtg-1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="340" y="300" as="sourcePoint" />
|
||||
<mxPoint x="390" y="250" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-9" value="Update<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-4" target="WrU0Sfet5MJkPbADlNtg-3">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="170" y="340" as="sourcePoint" />
|
||||
<mxPoint x="220" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-10" value="Update<br>View<br>Model<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-4" target="WrU0Sfet5MJkPbADlNtg-2">
|
||||
<mxGeometry x="0.2549" y="22" width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-11" value="Fetching<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="n1GnVWBW3RMSIi8rW6qm-1" target="WrU0Sfet5MJkPbADlNtg-30">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="CPFinyiwZevcR04kn2mn-12" value="Fetching<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="WrU0Sfet5MJkPbADlNtg-30" target="WrU0Sfet5MJkPbADlNtg-4">
|
||||
<mxGeometry x="-0.3333" y="10" width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
<diagram id="LyT_7eZ8ZHafqnmZi-tR" name="Page-3">
|
||||
<mxGraphModel dx="1114" dy="663" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-1" value="View" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-2" value="Model" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-3" value="Controller" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-4" value="View Model" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-5" value="Presenter" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="230" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-6" value="Client" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="330" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-7" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-3" target="dZXWpN2tcvNV-OdXUMDU-6">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="290" y="340" as="sourcePoint" />
|
||||
<mxPoint x="340" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-8" value="Request" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="dZXWpN2tcvNV-OdXUMDU-7">
|
||||
<mxGeometry x="0.1" y="1" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-9" value="Server" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="425" y="509" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-10" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-6" target="dZXWpN2tcvNV-OdXUMDU-9">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="450" as="sourcePoint" />
|
||||
<mxPoint x="520" y="400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-11" value="Request" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="dZXWpN2tcvNV-OdXUMDU-10">
|
||||
<mxGeometry x="0.05" y="-2" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-12" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-9" target="dZXWpN2tcvNV-OdXUMDU-6">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="450" as="sourcePoint" />
|
||||
<mxPoint x="520" y="400" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-13" value="Response<br>Data" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="dZXWpN2tcvNV-OdXUMDU-12">
|
||||
<mxGeometry x="-0.025" y="-1" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-14" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-6" target="dZXWpN2tcvNV-OdXUMDU-3">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="350" as="sourcePoint" />
|
||||
<mxPoint x="520" y="300" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-15" value="Response<br>Data" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="dZXWpN2tcvNV-OdXUMDU-14">
|
||||
<mxGeometry x="-0.1" y="3" relative="1" as="geometry">
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-16" value="Update<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-3" target="dZXWpN2tcvNV-OdXUMDU-2">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="540" y="220" as="sourcePoint" />
|
||||
<mxPoint x="630" y="220" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-17" value="View Event<br>Manager" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="230" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-18" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-1" target="dZXWpN2tcvNV-OdXUMDU-17">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="160" y="220" as="sourcePoint" />
|
||||
<mxPoint x="240" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-19" value="Event" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="dZXWpN2tcvNV-OdXUMDU-18">
|
||||
<mxGeometry x="0.0286" y="-2" relative="1" as="geometry">
|
||||
<mxPoint y="-2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-20" value="Event" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-17" target="dZXWpN2tcvNV-OdXUMDU-5">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="440" y="200" as="sourcePoint" />
|
||||
<mxPoint x="490" y="150" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-21" value="Event" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-17" target="dZXWpN2tcvNV-OdXUMDU-3">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="440" y="200" as="sourcePoint" />
|
||||
<mxPoint x="490" y="150" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-22" value="Network Interface" style="endArrow=none;dashed=1;html=1;rounded=0;align=left;verticalAlign=bottom;" edge="1" parent="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="425" y="420" as="sourcePoint" />
|
||||
<mxPoint x="680" y="420" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-23" value="Trigger<br>Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-5" target="dZXWpN2tcvNV-OdXUMDU-1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="170" y="160" as="sourcePoint" />
|
||||
<mxPoint x="220" y="110" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-24" value="Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-1" target="dZXWpN2tcvNV-OdXUMDU-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="320" as="sourcePoint" />
|
||||
<mxPoint x="410" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-25" value="Trigger<br>Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-3" target="dZXWpN2tcvNV-OdXUMDU-5">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="360" y="320" as="sourcePoint" />
|
||||
<mxPoint x="410" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-26" value="Fetch<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-5" target="dZXWpN2tcvNV-OdXUMDU-2">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="340" y="300" as="sourcePoint" />
|
||||
<mxPoint x="390" y="250" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-27" value="Update<br>Data" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-5" target="dZXWpN2tcvNV-OdXUMDU-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="170" y="340" as="sourcePoint" />
|
||||
<mxPoint x="220" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-28" value="Update<br>View<br>Model<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-5" target="dZXWpN2tcvNV-OdXUMDU-3">
|
||||
<mxGeometry x="0.2549" y="22" width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-29" value="Fetching<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-1" target="dZXWpN2tcvNV-OdXUMDU-17">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-30" value="Fetching<br>Completed" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="dZXWpN2tcvNV-OdXUMDU-17" target="dZXWpN2tcvNV-OdXUMDU-5">
|
||||
<mxGeometry x="-0.3333" y="10" width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="340" as="sourcePoint" />
|
||||
<mxPoint x="370" y="290" as="targetPoint" />
|
||||
<mxPoint as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-31" value="<font color="#121212">Swing UI</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="260" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-32" value="<font color="#121212">Sender</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" vertex="1" parent="1">
|
||||
<mxGeometry x="550" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-33" value="<font color="#121212">Receiver</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#647687;fontColor=#ffffff;strokeColor=#314354;" vertex="1" parent="1">
|
||||
<mxGeometry x="680" y="190" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="dZXWpN2tcvNV-OdXUMDU-34" value="Error Handler" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="509" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
<diagram id="Qvqhu417yh47AELHSp99" name="Page-2">
|
||||
<mxGraphModel dx="1114" dy="663" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-1" value="View" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-2" value="View Event<br>Manager" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="230" y="40" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-3" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="RjpXFJRHx75nK1sPjYBd-1" target="RjpXFJRHx75nK1sPjYBd-2">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="190" y="170" as="sourcePoint" />
|
||||
<mxPoint x="240" y="120" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-4" value="Event" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="RjpXFJRHx75nK1sPjYBd-3">
|
||||
<mxGeometry x="0.0286" y="-2" relative="1" as="geometry">
|
||||
<mxPoint y="-2" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-5" value="Events:" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="160" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-6" value="Connect to Server Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="200" width="220" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-8" value="Alarm ID x got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="280" width="150" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-9" value="Active Connections Panel was clicked" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="320" width="220" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-10" value="System Information Panel was clicked" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="360" width="230" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-11" value="Requests Panel was clicked" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="400" width="170" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-12" value="Cake Diagram Panel was clicked" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="440" width="200" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-13" value="<font color="#ff0000">Montoring Panel:</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="238" width="110" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-14" value="<font color="#ff0000">Connect to Server Panel:</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="160" width="160" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-15" value="<font color="#ff0000">Controlling Panel:</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="160" width="120" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-16" value="NFTables Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="200" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-17" value="Add new Port Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="240" width="200" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-18" value="Logs Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="480" width="150" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-19" value="<font color="#ff0000">NFTables Family Panel:</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="320" width="150" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-20" value="Download Configuration got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="360" width="220" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-21" value="inet family Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="400" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-22" value="ipv4 family Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="440" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-23" value="ipv6 family Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="480" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-24" value="<font color="#ff0000">Status Panel:</font>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="520" width="90" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-25" value="Go to Monitoring Panel Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="560" width="250" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-28" value="Go to Controlling Panel Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="600" width="250" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-29" value="Go to Previous Panel Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="640" width="240" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="RjpXFJRHx75nK1sPjYBd-30" value="Go to Next Panel Button got pressed" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="680" width="220" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
@@ -3,10 +3,10 @@
|
||||
*/
|
||||
package connect.src;
|
||||
|
||||
import data.src.ControllerToConnectionClient.ControllerToConnectionClientData;
|
||||
import data.src.Controller_To_ConnectionClient.Controller_To_Connection_ClientData;
|
||||
|
||||
public interface Client {
|
||||
public boolean createConnection(ControllerToConnectionClientData controllerToConnectionClientData);
|
||||
public boolean createConnection(Controller_To_Connection_ClientData controllerToConnectionClientData);
|
||||
public void startSender();
|
||||
public void startReceiver();
|
||||
public void closeConnection();
|
||||
|
||||
@@ -3,10 +3,8 @@
|
||||
*/
|
||||
package connect.src;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
@@ -21,8 +19,8 @@ import javax.net.ssl.SSLSocket;
|
||||
import javax.net.ssl.SSLSocketFactory;
|
||||
import javax.net.ssl.TrustManagerFactory;
|
||||
|
||||
import data.src.ControllerToConnectionClient.ConnectToServer;
|
||||
import data.src.ControllerToConnectionClient.ControllerToConnectionClientData;
|
||||
import data.src.Controller_To_ConnectionClient.ConnectToServer;
|
||||
import data.src.Controller_To_ConnectionClient.Controller_To_Connection_ClientData;
|
||||
|
||||
public final class TLSClient implements Client {
|
||||
|
||||
@@ -32,13 +30,13 @@ public final class TLSClient implements Client {
|
||||
return sslSocket;
|
||||
}
|
||||
|
||||
public boolean createConnection(ControllerToConnectionClientData controllerToConnectionClientData) {
|
||||
public boolean createConnection(Controller_To_Connection_ClientData controllerToConnectionClientData) {
|
||||
try {
|
||||
ConnectToServer connectToServer = ((ConnectToServer)controllerToConnectionClientData);
|
||||
String ipAddress = connectToServer.getIPAddress();
|
||||
int port = connectToServer.getPort();
|
||||
String trustStorePath = connectToServer.getTruststorePath();
|
||||
String trustStorePassword = connectToServer.getTruststorePassword();
|
||||
String ipAddress = connectToServer.ipAddress();
|
||||
int port = connectToServer.port();
|
||||
String trustStorePath = connectToServer.trustStorePath();
|
||||
String trustStorePassword = connectToServer.trustStorePassword();
|
||||
|
||||
KeyStore truststore = KeyStore.getInstance("JKS");
|
||||
truststore.load(new FileInputStream(trustStorePath), trustStorePassword.toCharArray());
|
||||
|
||||
@@ -1,69 +1,75 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package controller.src;
|
||||
|
||||
import javax.xml.crypto.Data;
|
||||
|
||||
import connect.src.Client;
|
||||
import connect.src.TLSClient;
|
||||
import controller.src.DataProcessing.DataProcessorThread;
|
||||
import controller.src.Validate.Validate;
|
||||
|
||||
import data.src.ControllerToConnectionClient.ConnectToServer;
|
||||
import data.src.ControllerToConnectionClient.ControllerToConnectionClientData;
|
||||
|
||||
import data.src.ControllerToView.ConnectToServerSuccessful;
|
||||
import data.src.ControllerToView.ControllerToViewData;
|
||||
|
||||
import data.src.ViewToController.ConnectToServerData;
|
||||
import data.src.ViewToController.EmptyViewToControllerData;
|
||||
import data.src.ViewToController.ViewToControllerData;
|
||||
import data.src.ViewToController.ViewToControllerData.ViewEvent;
|
||||
|
||||
import controller.src.events.ConnectToServerSuccessful;
|
||||
import controller.src.interfaces.I_Controller;
|
||||
import data.src.Controller_To_ConnectionClient.ConnectToServer;
|
||||
import data.src.Controller_To_Presenter.Controller_To_Presenter_Data;
|
||||
import logger.src.MessageLogger;
|
||||
import model.src.Model;
|
||||
import model.src.ModelRepresentation;
|
||||
import model.src.I_Model;
|
||||
import model.src.ConnectionModel.ConnectionStatus;
|
||||
import queues.src.ControllerToViewQueue;
|
||||
import queues.src.Controller_To_Presenter_Queue;
|
||||
import queues.src.Presenter_To_Controller_Queue;
|
||||
import queues.src.SendingQueue;
|
||||
import queues.src.ViewToControllerQueue;
|
||||
import queues.src.ViewEventManager_To_Controller_Queue;
|
||||
import viewEventManager.src.data.AA_ConnectToServerData.AA_ConnectToServerData;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
import viewEventManager.src.events.AA_ConnectToServerPanelEvents.AA_ConnectToServerButtonGotPressed;
|
||||
import viewEventManager.src.events.ZZ_General.ZZ_EmptyViewEvent;
|
||||
|
||||
public class ControllerThread extends Thread implements Controller {
|
||||
public class ControllerThread extends Thread implements I_Controller {
|
||||
private static final String className = "ControllerThread";
|
||||
|
||||
private final static boolean SUCCESSFUL = true;
|
||||
|
||||
private Model model;
|
||||
private I_Model model = null;
|
||||
|
||||
private Client client;
|
||||
private ViewEventManager_To_Controller_Queue viewEventManager_To_Controller_Queue = null;
|
||||
private Controller_To_Presenter_Queue controller_To_Presenter_Queue = null;
|
||||
private Presenter_To_Controller_Queue presenter_To_Controller_Queue = null;
|
||||
|
||||
public ControllerThread(Model model) {
|
||||
this.model = model;
|
||||
private Client client = null;
|
||||
|
||||
public ControllerThread(I_Model model, ViewEventManager_To_Controller_Queue viewEventManager_To_Controller_Queue, Controller_To_Presenter_Queue controller_To_Presenter_Queue, Presenter_To_Controller_Queue presenter_To_Controller_Queue) {
|
||||
this.model = model;
|
||||
this.viewEventManager_To_Controller_Queue = viewEventManager_To_Controller_Queue;
|
||||
this.controller_To_Presenter_Queue = controller_To_Presenter_Queue;
|
||||
this.presenter_To_Controller_Queue = presenter_To_Controller_Queue;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
MessageLogger.printMessage(className, "Controller Thread was started.");
|
||||
ViewToControllerData viewToControllerData = new EmptyViewToControllerData();
|
||||
|
||||
I_ViewEvent event = new ZZ_EmptyViewEvent();
|
||||
// Run until view sends event quit application
|
||||
while (viewToControllerData.getViewEvent() != ViewEvent.QuitApplication) {
|
||||
while (event.getEventType() != E_ViewEvent.ZZ_ExitApplication) {
|
||||
|
||||
// Wait for a message from view.
|
||||
while ((viewToControllerData = ViewToControllerQueue.getInstance().poll()) == null) {}
|
||||
// If message from ViewEventManager received
|
||||
if ((event = viewEventManager_To_Controller_Queue.poll()) != null) {
|
||||
MessageLogger.printMessage(className, "Got new data from ViewEventManager.");
|
||||
MessageLogger.printMessage(className, "Event is: " + event.getEventType());
|
||||
|
||||
MessageLogger.printMessage(className, "Got new data from ViewToControllerQueue.");
|
||||
MessageLogger.printMessage(className, "Event is: " + viewToControllerData.getViewEvent());
|
||||
switch (event.getEventType()) {
|
||||
case AA_ConnectToServerButtonGotPressed: {
|
||||
AA_ConnectToServerButtonGotPressed connectToServerEvent = (AA_ConnectToServerButtonGotPressed)event;
|
||||
handleConnectToServerButtonWasPressed(new AA_ConnectToServerData(connectToServerEvent.connectToServerData().ipAddress(), connectToServerEvent.connectToServerData().port(), connectToServerEvent.connectToServerData().trustStoreFilePath(), connectToServerEvent.connectToServerData().trustStorePassword()));
|
||||
}break;
|
||||
|
||||
default: {
|
||||
|
||||
switch (viewToControllerData.getViewEvent()) {
|
||||
case ViewEvent.ConnectToServerButtonWasPressed: {
|
||||
handleConnectToServerButtonWasPressed(viewToControllerData);
|
||||
}break;
|
||||
|
||||
default: {
|
||||
|
||||
}break;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
if (event == null) {
|
||||
event = new ZZ_EmptyViewEvent();
|
||||
}
|
||||
}
|
||||
MessageLogger.printMessage(className, "Exit controller thread.");
|
||||
@@ -76,27 +82,29 @@ public class ControllerThread extends Thread implements Controller {
|
||||
* necessary to establish a connection to a server.
|
||||
* @param viewToControllerData
|
||||
*/
|
||||
private void handleConnectToServerButtonWasPressed(ViewToControllerData data) {
|
||||
private void handleConnectToServerButtonWasPressed(AA_ConnectToServerData data) {
|
||||
this.model.getConnectionModel().setConnectionStatus(ConnectionStatus.Pending);
|
||||
|
||||
ConnectToServerData connectToServerData = (ConnectToServerData)data;
|
||||
String ipAddress = connectToServerData.getIPAddress();
|
||||
int port = connectToServerData.getPort();
|
||||
String ipAddress = data.ipAddress();
|
||||
int port = data.port();
|
||||
String trustStoreFilePath = data.trustStoreFilePath();
|
||||
String trustStorePassword = data.trustStorePassword();
|
||||
|
||||
boolean validIP = Validate.isValidIPv4Address(ipAddress);
|
||||
boolean validPort = Validate.isValidPort(port, 1, 60000);
|
||||
MessageLogger.printMessage(className, "IP: " + validIP + ", Port: " + validPort);
|
||||
|
||||
ConnectToServer connectToServerData = new ConnectToServer(ipAddress, port, trustStoreFilePath, trustStorePassword);
|
||||
|
||||
if (validIP) {
|
||||
if (validPort) {
|
||||
this.client = new TLSClient();
|
||||
if (this.client.createConnection(viewToControllerToClientConnectData(connectToServerData)) == SUCCESSFUL) {
|
||||
if (this.client.createConnection(connectToServerData) == SUCCESSFUL) {
|
||||
startThreads();
|
||||
|
||||
this.model.getConnectionModel().setConnectionStatus(ConnectionStatus.Connected);
|
||||
|
||||
ControllerToViewData controllerToViewData = new ConnectToServerSuccessful();
|
||||
ControllerToViewQueue.getInstance().add(controllerToViewData);
|
||||
controller_To_Presenter_Queue.add(new ConnectToServerSuccessful());
|
||||
|
||||
//SendingQueue.getInstance().add("getSysInf");
|
||||
//SendingQueue.getInstance().add("getCon");
|
||||
@@ -109,15 +117,6 @@ public class ControllerThread extends Thread implements Controller {
|
||||
//TODO send event to view that ip is not valid.
|
||||
}
|
||||
}
|
||||
|
||||
private ConnectToServer viewToControllerToClientConnectData(ConnectToServerData connectToServerDataView) {
|
||||
ConnectToServer connectToServerData = new ConnectToServer();
|
||||
connectToServerData.setIPAddress(connectToServerDataView.getIPAddress());
|
||||
connectToServerData.setPort(connectToServerDataView.getPort());
|
||||
connectToServerData.setTruststorePath(connectToServerDataView.getTrustStorePath());
|
||||
connectToServerData.setTruststorePassword(connectToServerDataView.getTrustStorePassword());
|
||||
return connectToServerData;
|
||||
}
|
||||
|
||||
private void startThreads() {
|
||||
DataProcessorThread.getInstance().start();
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 28.12.2023
|
||||
* @lastChange 05.01.2024
|
||||
*/
|
||||
package controller.src.DataProcessing;
|
||||
|
||||
import controller.src.DataProcessing.ConnectionsProcessing.ConnectionInformation;
|
||||
import controller.src.DataProcessing.ConnectionsProcessing.ConnectionsProcessor;
|
||||
import controller.src.DataProcessing.nftablesProcessing.NFTableInformation;
|
||||
import controller.src.DataProcessing.nftablesProcessing.NFTablesProcessor;
|
||||
import model.src.Model;
|
||||
import model.src.I_Model;
|
||||
import model.src.ModelConstants.AccessModifier;
|
||||
import queues.src.ReceivingQueue;
|
||||
|
||||
public final class DataProcessorThread extends Thread {
|
||||
private static DataProcessorThread instance = null;
|
||||
|
||||
private Model model = null;
|
||||
private I_Model model = null;
|
||||
|
||||
private DataProcessorThread() {}
|
||||
|
||||
@@ -57,7 +56,7 @@ public final class DataProcessorThread extends Thread {
|
||||
return this.dataProcessorRunning;
|
||||
}
|
||||
|
||||
public void setModel(Model model) {
|
||||
public void setModel(I_Model model) {
|
||||
this.model = model;
|
||||
}
|
||||
|
||||
@@ -80,8 +79,7 @@ public final class DataProcessorThread extends Thread {
|
||||
model.getNetworkModel().accessConnections(AccessModifier.WriteEntry, conInf);
|
||||
}break;
|
||||
case NFTablesConfiguration: {
|
||||
NFTableInformation nftConf = NFTablesProcessor.processDataString(data);
|
||||
model.getNFTablesModel().accessNFTConfiguration(AccessModifier.WriteEntry, nftConf);
|
||||
|
||||
}break;
|
||||
case Undefined: // intended fall through
|
||||
default: {
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package controller.src.enums;
|
||||
|
||||
public enum E_ControllerEvent {
|
||||
ConnectToServerSuccessful,
|
||||
UpdateViewModel,
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package controller.src.events;
|
||||
|
||||
import controller.src.enums.E_ControllerEvent;
|
||||
import controller.src.interfaces.I_ControllerEvent;
|
||||
|
||||
public final record ConnectToServerSuccessful() implements I_ControllerEvent {
|
||||
|
||||
@Override
|
||||
public E_ControllerEvent getEventType() {
|
||||
return E_ControllerEvent.ConnectToServerSuccessful;
|
||||
}
|
||||
|
||||
}
|
||||
13
src/main/java/controller/src/events/UpdateViewModel.java
Normal file
13
src/main/java/controller/src/events/UpdateViewModel.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package controller.src.events;
|
||||
|
||||
import controller.src.enums.E_ControllerEvent;
|
||||
import controller.src.interfaces.I_ControllerEvent;
|
||||
|
||||
public final record UpdateViewModel(int fetchID) implements I_ControllerEvent {
|
||||
|
||||
@Override
|
||||
public E_ControllerEvent getEventType() {
|
||||
return E_ControllerEvent.UpdateViewModel;
|
||||
}
|
||||
|
||||
}
|
||||
10
src/main/java/controller/src/interfaces/I_Controller.java
Normal file
10
src/main/java/controller/src/interfaces/I_Controller.java
Normal file
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
* @lastChange 09.01.2024
|
||||
*/
|
||||
package controller.src.interfaces;
|
||||
|
||||
public interface I_Controller {
|
||||
public void start();
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package controller.src.interfaces;
|
||||
|
||||
import controller.src.enums.E_ControllerEvent;
|
||||
|
||||
public interface I_ControllerEvent {
|
||||
public E_ControllerEvent getEventType();
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 08.12.2023
|
||||
*/
|
||||
package data.src.ControllerToConnectionClient;
|
||||
|
||||
public class ConnectToServer implements ControllerToConnectionClientData {
|
||||
private String ipAddress;
|
||||
private int port;
|
||||
|
||||
String truststorePath;
|
||||
String truststorePassword;
|
||||
|
||||
@Override
|
||||
public ConnectionClientEvent getConnectionClientEvent() {
|
||||
return ConnectionClientEvent.ConnectToServer;
|
||||
}
|
||||
|
||||
public String getIPAddress() {
|
||||
return this.ipAddress;
|
||||
}
|
||||
|
||||
public void setIPAddress(String ipAddress) {
|
||||
this.ipAddress = ipAddress;
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
return this.port;
|
||||
}
|
||||
|
||||
public void setPort(int port) {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public String getTruststorePath() {
|
||||
return this.truststorePath;
|
||||
}
|
||||
|
||||
public void setTruststorePath(String truststorePath) {
|
||||
this.truststorePath = truststorePath;
|
||||
}
|
||||
|
||||
public String getTruststorePassword() {
|
||||
return this.truststorePassword;
|
||||
}
|
||||
|
||||
public void setTruststorePassword(String truststorePassword) {
|
||||
this.truststorePassword = truststorePassword;
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package data.src.ControllerToView;
|
||||
|
||||
public class ConnectToServerSuccessful implements ControllerToViewData {
|
||||
|
||||
@Override
|
||||
public void setControllerEvent(ControllerEvent controllerEvent) {
|
||||
return;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ControllerEvent getControllerEvent() {
|
||||
return ControllerEvent.ConnectToServerWasSuccessful;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
*/
|
||||
package data.src.ControllerToView;
|
||||
|
||||
public interface ControllerToViewData {
|
||||
public static enum ControllerEvent {
|
||||
ConnectToServerWasSuccessful,
|
||||
}
|
||||
public void setControllerEvent(ControllerEvent controllerEvent);
|
||||
public ControllerEvent getControllerEvent();
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 08.12.2023
|
||||
* @lastChange 06.01.2024
|
||||
*/
|
||||
package data.src.Controller_To_ConnectionClient;
|
||||
|
||||
public final record ConnectToServer(String ipAddress, int port, String trustStorePath, String trustStorePassword) implements Controller_To_Connection_ClientData {
|
||||
|
||||
@Override
|
||||
public ConnectionClientEvent getConnectionClientEvent() {
|
||||
return ConnectionClientEvent.ConnectToServer;
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 08.12.2023
|
||||
* @lastChange 06.01.2024
|
||||
*/
|
||||
package data.src.ControllerToConnectionClient;
|
||||
package data.src.Controller_To_ConnectionClient;
|
||||
|
||||
public interface ControllerToConnectionClientData {
|
||||
public interface Controller_To_Connection_ClientData {
|
||||
public static enum ConnectionClientEvent {
|
||||
ConnectToServer,
|
||||
};
|
||||
@@ -0,0 +1,5 @@
|
||||
package data.src.Controller_To_Presenter;
|
||||
|
||||
public final record Controller_To_Presenter_Data() {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package data.src.Presenter_To_Controller;
|
||||
|
||||
public final record Presenter_To_Controller_Data() {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package data.src.Presenter_To_View;
|
||||
|
||||
import presenter.src.interfaces.I_PresenterEvent;
|
||||
|
||||
public final record Presenter_To_View_Data(I_PresenterEvent event) {
|
||||
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.12.2023
|
||||
*/
|
||||
package data.src.ViewToController;
|
||||
|
||||
public class ConnectToServerData implements ViewToControllerData {
|
||||
|
||||
private String ipAddress;
|
||||
private int port;
|
||||
|
||||
private String trustStorePath;
|
||||
private String trustStorePassword;
|
||||
|
||||
public ConnectToServerData(String ipAddress, int port, String trustStorePath, String trustStorePassword) {
|
||||
this.ipAddress = ipAddress;
|
||||
this.port = port;
|
||||
this.trustStorePath = trustStorePath;
|
||||
this.trustStorePassword = trustStorePassword;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setViewEvent(ViewEvent viewEvent) {
|
||||
return;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ViewEvent getViewEvent() {
|
||||
return ViewEvent.ConnectToServerButtonWasPressed;
|
||||
}
|
||||
|
||||
public String getIPAddress() {
|
||||
return this.ipAddress;
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
return this.port;
|
||||
}
|
||||
|
||||
public String getTrustStorePath() {
|
||||
return this.trustStorePath;
|
||||
}
|
||||
|
||||
public void setTrustStorePath(String trustStorePath) {
|
||||
this.trustStorePath = trustStorePath;
|
||||
}
|
||||
|
||||
public String getTrustStorePassword() {
|
||||
return this.trustStorePassword;
|
||||
}
|
||||
|
||||
public void setTrustStorePassword(String trustStorePassword) {
|
||||
this.trustStorePassword = trustStorePassword;
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.12.2023
|
||||
*/
|
||||
package data.src.ViewToController;
|
||||
|
||||
public class EmptyViewToControllerData implements ViewToControllerData {
|
||||
|
||||
@Override
|
||||
public void setViewEvent(ViewEvent viewEvent) {
|
||||
return;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ViewEvent getViewEvent() {
|
||||
return ViewEvent.EmptyEvent;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
*/
|
||||
package data.src.ViewToController;
|
||||
|
||||
public interface ViewToControllerData {
|
||||
public static enum ViewEvent {
|
||||
EmptyEvent,
|
||||
QuitApplication,
|
||||
ConnectToServerButtonWasPressed,
|
||||
}
|
||||
public void setViewEvent(ViewEvent viewEvent);
|
||||
public ViewEvent getViewEvent();
|
||||
}
|
||||
@@ -2,8 +2,8 @@
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
*/
|
||||
package controller.src;
|
||||
package gui.src;
|
||||
|
||||
public interface Controller {
|
||||
public interface I_View {
|
||||
public void start();
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
*/
|
||||
package gui.src;
|
||||
|
||||
import data.src.ControllerToView.ControllerToViewData;
|
||||
|
||||
public interface View {
|
||||
public void start();
|
||||
public void notify(ControllerToViewData controllerToViewData);
|
||||
}
|
||||
@@ -1,44 +1,61 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package gui.src;
|
||||
|
||||
import data.src.ControllerToView.ControllerToViewData;
|
||||
import data.src.Presenter_To_View.Presenter_To_View_Data;
|
||||
import gui.src.frames.MainFrame;
|
||||
|
||||
import logger.src.MessageLogger;
|
||||
import queues.src.ControllerToViewQueue;
|
||||
import presenter.src.events.FetchData;
|
||||
import queues.src.Presenter_To_View_Queue;
|
||||
import queues.src.View_To_ViewEventManager_Queue;
|
||||
import viewModel.src.interfaces.I_ViewModel;
|
||||
|
||||
public class ViewThread extends Thread implements View {
|
||||
private static final String className = "ViewThread";
|
||||
|
||||
private static ViewThread instance;
|
||||
public class ViewThread extends Thread implements I_View {
|
||||
private static final String className = "View";
|
||||
|
||||
private boolean isRunning = true;
|
||||
|
||||
private ViewThread() {}
|
||||
private I_ViewModel viewModel = null;
|
||||
private Presenter_To_View_Queue presenter_To_View_Queue = null;
|
||||
private View_To_ViewEventManager_Queue view_To_ViewEventManager_Queue = null;
|
||||
|
||||
public static ViewThread getInstance() {
|
||||
if (null == instance) {
|
||||
instance = new ViewThread();
|
||||
public ViewThread(
|
||||
I_ViewModel viewModel,
|
||||
Presenter_To_View_Queue presenter_To_View_Queue,
|
||||
View_To_ViewEventManager_Queue view_To_ViewEventManager_Queue) {
|
||||
this.viewModel = viewModel;
|
||||
this.presenter_To_View_Queue = presenter_To_View_Queue;
|
||||
this.view_To_ViewEventManager_Queue = view_To_ViewEventManager_Queue;
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
MainFrame.getInstance();
|
||||
MainFrame.getInstance(this.viewModel, this.view_To_ViewEventManager_Queue, this.presenter_To_View_Queue);
|
||||
MessageLogger.printMessage(className, "Swing ui thread was started.");
|
||||
|
||||
while (isRunning) {
|
||||
ControllerToViewData controllerToViewData = ControllerToViewQueue.getInstance().poll();
|
||||
if (controllerToViewData != null) {
|
||||
notify(controllerToViewData);
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
// Take blocks until element is available
|
||||
Presenter_To_View_Data data = presenter_To_View_Queue.take();
|
||||
switch (data.event().getType()) {
|
||||
case FetchData: {
|
||||
FetchData fetchDataEvent = (FetchData)data.event();
|
||||
MessageLogger.printMessage(className, "Fetch data event received from presenter. ID:" + fetchDataEvent.id() + " Triggering MainFrame.");
|
||||
MainFrame.triggerFetchData(fetchDataEvent.id());
|
||||
}break;
|
||||
default: {
|
||||
|
||||
}break;
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
//TODO error handler has to restart queue.
|
||||
//Error has to be printed to log.
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void notify(ControllerToViewData controllerToViewData) {
|
||||
MainFrame.getInstance().notify(controllerToViewData);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 31.10.2023
|
||||
* @lastChange 04.01.2024
|
||||
*/
|
||||
|
||||
package gui.src.constants;
|
||||
@@ -14,7 +15,7 @@ public final class GUIConstants {
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents kinds of panels.
|
||||
* Represents kinds of panels that can be put in main frame.
|
||||
*/
|
||||
public static enum Panel {
|
||||
MonitoringPanel,
|
||||
@@ -25,6 +26,21 @@ public final class GUIConstants {
|
||||
ConnectionsTablePanel
|
||||
}
|
||||
|
||||
public static enum ControllingSubPanel {
|
||||
BasePanel,
|
||||
NFTableFamilyPanel,
|
||||
NFTableTablePanel,
|
||||
NFTableChainPanel,
|
||||
NFTableRulePanel,
|
||||
None
|
||||
}
|
||||
|
||||
public static enum NFTablePanel {
|
||||
NFTableTablesPanel,
|
||||
NFTableChainsPanel,
|
||||
NFTableRulesPanel
|
||||
}
|
||||
|
||||
public static enum Status {
|
||||
Connected,
|
||||
Connecting,
|
||||
|
||||
@@ -1,20 +1,16 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 31.10.2023
|
||||
* @lastChange 30.12.2023
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package gui.src.frames;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import data.src.ControllerToView.ControllerToViewData;
|
||||
import data.src.ControllerToView.ControllerToViewData.ControllerEvent;
|
||||
|
||||
import gui.src.constants.GUIConstants;
|
||||
import gui.src.constants.GUIConstants.Panel;
|
||||
import gui.src.constants.GUIConstants.Theme;
|
||||
|
||||
import gui.src.interfaces.Themeable;
|
||||
import gui.src.interfaces.I_PanelChangeable;
|
||||
import gui.src.interfaces.I_Themeable;
|
||||
|
||||
import gui.src.menubar.MenuBar;
|
||||
import gui.src.panels.ConnectToServerPanel.ConnectToServerPanel;
|
||||
@@ -22,45 +18,68 @@ import gui.src.panels.ConnectionsTablePanel.ConnectionsTablePanel;
|
||||
import gui.src.panels.ControllingPanel.ControllingPanel;
|
||||
import gui.src.panels.MonitoringPanel.MonitoringPanel;
|
||||
import gui.src.panels.StatusPanel.StatusPanel;
|
||||
import queues.src.Presenter_To_View_Queue;
|
||||
import queues.src.View_To_ViewEventManager_Queue;
|
||||
import viewModel.src.interfaces.I_ViewModel;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public final class MainFrame extends JFrame implements Themeable {
|
||||
public final class MainFrame extends JFrame implements I_Themeable, I_PanelChangeable {
|
||||
|
||||
private static MainFrame instance;
|
||||
|
||||
private MainFrame() {
|
||||
this.setTitle("Firewall Dashboard");
|
||||
this.setJMenuBar(MenuBar.getMenuBar());
|
||||
this.setPanel(Panel.ConnectToServerPanel);
|
||||
this.setSize(1400, 700);
|
||||
this.setMinimumSize(new Dimension(700, 500));
|
||||
this.setLocation(100, 100);
|
||||
this.setVisible(true);
|
||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
private I_ViewModel viewModel = null;
|
||||
private View_To_ViewEventManager_Queue view_To_ViewEventManager_Queue = null;
|
||||
private Presenter_To_View_Queue presenter_To_View_Queue = null;
|
||||
|
||||
private JPanel contentPanel = null;
|
||||
|
||||
private MainFrame(
|
||||
I_ViewModel viewModel,
|
||||
View_To_ViewEventManager_Queue view_To_ViewEventManager_Queue,
|
||||
Presenter_To_View_Queue presenter_To_View_Queue) {
|
||||
|
||||
this.viewModel = viewModel;
|
||||
this.view_To_ViewEventManager_Queue = view_To_ViewEventManager_Queue;
|
||||
this.presenter_To_View_Queue = presenter_To_View_Queue;
|
||||
|
||||
this.contentPanel = new JPanel();
|
||||
this.getContentPane().add(this.contentPanel);
|
||||
|
||||
this.setTitle("Firewall Dashboard");
|
||||
this.setJMenuBar(MenuBar.getMenuBar());
|
||||
this.setPanel(Panel.ConnectToServerPanel);
|
||||
this.setLocation(100, 100);
|
||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
}
|
||||
|
||||
public static MainFrame getInstance() {
|
||||
if (null == instance) {
|
||||
instance = new MainFrame();
|
||||
}
|
||||
return instance;
|
||||
public static MainFrame getInstance(
|
||||
I_ViewModel viewModel,
|
||||
View_To_ViewEventManager_Queue view_To_ViewEventManager_Queue,
|
||||
Presenter_To_View_Queue presenter_To_View_Queue) {
|
||||
if (instance == null) {
|
||||
instance = new MainFrame(viewModel, view_To_ViewEventManager_Queue, presenter_To_View_Queue);
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPanel(Panel kindOfPanel) {
|
||||
try {
|
||||
switch (kindOfPanel) {
|
||||
case MonitoringPanel: {
|
||||
this.setPanel(MonitoringPanel.getInstance());
|
||||
//StatusPanel.getInstance().setPreviousNextButtonsVisible(false);
|
||||
}break;
|
||||
case ControllingPanel: {
|
||||
this.setPanel(ControllingPanel.getInstance());
|
||||
//StatusPanel.getInstance().setPreviousNextButtonsVisible(true);
|
||||
}break;
|
||||
case ConnectToServerPanel: {
|
||||
this.setPanel(ConnectToServerPanel.getInstance());
|
||||
this.setPanel(ConnectToServerPanel.getInstance(viewModel, view_To_ViewEventManager_Queue));
|
||||
}break;
|
||||
case ConnectionsTablePanel: {
|
||||
this.setPanel(ConnectionsTablePanel.getInstance());
|
||||
//this.setPanel(ConnectionsTablePanel.getInstance());
|
||||
}break;
|
||||
default: {
|
||||
throw new Exception("Unknown kind of panel.");
|
||||
@@ -73,9 +92,9 @@ public final class MainFrame extends JFrame implements Themeable {
|
||||
}
|
||||
|
||||
private void setPanel(JPanel panel) {
|
||||
this.getContentPane().removeAll();
|
||||
this.contentPanel.removeAll();
|
||||
|
||||
this.getContentPane().setLayout(new GridBagLayout());
|
||||
this.contentPanel.setLayout(new GridBagLayout());
|
||||
|
||||
// Status Panel
|
||||
GridBagConstraints statusConstraints = new GridBagConstraints();
|
||||
@@ -85,7 +104,7 @@ public final class MainFrame extends JFrame implements Themeable {
|
||||
statusConstraints.fill = GridBagConstraints.HORIZONTAL;
|
||||
statusConstraints.weightx = 1;
|
||||
statusConstraints.insets = new Insets(5,5,0,0);
|
||||
this.getContentPane().add(StatusPanel.getInstance(), statusConstraints);
|
||||
this.contentPanel.add(StatusPanel.getInstance(this), statusConstraints);
|
||||
|
||||
// Main Panel
|
||||
GridBagConstraints mainConstraints = new GridBagConstraints();
|
||||
@@ -93,12 +112,11 @@ public final class MainFrame extends JFrame implements Themeable {
|
||||
mainConstraints.gridy = 2;
|
||||
mainConstraints.anchor = GridBagConstraints.CENTER;
|
||||
mainConstraints.weighty = 0.1;
|
||||
this.getContentPane().add(panel, mainConstraints);
|
||||
this.contentPanel.add(panel, mainConstraints);
|
||||
|
||||
this.pack();
|
||||
this.setSize(1400, 700);
|
||||
this.getContentPane().update(this.getGraphics());
|
||||
this.update(this.getGraphics());
|
||||
this.setSize(new Dimension(1400, 700));
|
||||
this.update(getGraphics());
|
||||
this.setVisible(true);
|
||||
}
|
||||
|
||||
// Nice to have
|
||||
@@ -121,17 +139,9 @@ public final class MainFrame extends JFrame implements Themeable {
|
||||
}
|
||||
}
|
||||
|
||||
public void notify(ControllerToViewData controllerToViewData) {
|
||||
ControllerEvent controllerEvent = controllerToViewData.getControllerEvent();
|
||||
switch (controllerEvent) {
|
||||
case ConnectToServerWasSuccessful: {
|
||||
ConnectToServerPanel.getInstance().enableFields();
|
||||
StatusPanel.getInstance().setStatus(GUIConstants.Status.Connected);
|
||||
this.setPanel(Panel.MonitoringPanel);
|
||||
}break;
|
||||
default: {
|
||||
public static void triggerFetchData(int triggerID) {
|
||||
if (instance != null) {
|
||||
|
||||
}break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
8
src/main/java/gui/src/interfaces/I_FetchesViewModel.java
Normal file
8
src/main/java/gui/src/interfaces/I_FetchesViewModel.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package gui.src.interfaces;
|
||||
|
||||
public interface I_FetchesViewModel {
|
||||
/**
|
||||
* Fetches data from view model and updates data of all ui elements at current parent.
|
||||
*/
|
||||
public void fetchViewModel();
|
||||
}
|
||||
7
src/main/java/gui/src/interfaces/I_PanelChangeable.java
Normal file
7
src/main/java/gui/src/interfaces/I_PanelChangeable.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package gui.src.interfaces;
|
||||
|
||||
import gui.src.constants.GUIConstants.Panel;
|
||||
|
||||
public interface I_PanelChangeable {
|
||||
public void setPanel(Panel kindOfPanel);
|
||||
}
|
||||
@@ -7,6 +7,6 @@ package gui.src.interfaces;
|
||||
|
||||
import gui.src.constants.GUIConstants.Theme;
|
||||
|
||||
public interface Themeable {
|
||||
public interface I_Themeable {
|
||||
public void setThemeColor(Theme themeColor);
|
||||
}
|
||||
@@ -1,12 +1,13 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 31.10.2023
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
|
||||
package gui.src.interfaces;
|
||||
|
||||
import gui.src.constants.GUIConstants.Languages;
|
||||
|
||||
public interface Translateable {
|
||||
public interface I_Translateable {
|
||||
public void changeLanguage(Languages language);
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.11.2023
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
|
||||
package gui.src.menubar;
|
||||
@@ -10,12 +11,12 @@ import javax.swing.JMenu;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import gui.src.constants.GUIConstants.Languages;
|
||||
import gui.src.interfaces.Translateable;
|
||||
import gui.src.interfaces.I_Translateable;
|
||||
|
||||
/**
|
||||
* Menu at menu bar.
|
||||
*/
|
||||
public final class Menu extends JMenu implements Translateable {
|
||||
public final class Menu extends JMenu implements I_Translateable {
|
||||
private String[] translations = null;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.11.2023
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
|
||||
package gui.src.menubar;
|
||||
@@ -9,12 +10,12 @@ import javax.swing.JMenuBar;
|
||||
|
||||
import gui.src.constants.GUIConstants.Languages;
|
||||
|
||||
import gui.src.interfaces.Translateable;
|
||||
import gui.src.interfaces.I_Translateable;
|
||||
|
||||
import gui.src.menubar.menus.HelpMenuFactory;
|
||||
import gui.src.menubar.menus.LanguageMenuFactory;
|
||||
|
||||
public final class MenuBar extends JMenuBar implements Translateable {
|
||||
public final class MenuBar extends JMenuBar implements I_Translateable {
|
||||
|
||||
private MenuBarLanguageController languageController = null;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.11.2023
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
|
||||
package gui.src.menubar;
|
||||
@@ -10,12 +11,12 @@ import java.awt.event.ActionListener;
|
||||
import javax.swing.JMenuItem;
|
||||
|
||||
import gui.src.constants.GUIConstants.Languages;
|
||||
import gui.src.interfaces.Translateable;
|
||||
import gui.src.interfaces.I_Translateable;
|
||||
|
||||
/**
|
||||
* Menu item at menu at menu bar.
|
||||
*/
|
||||
public final class MenuItem extends JMenuItem implements Translateable {
|
||||
public final class MenuItem extends JMenuItem implements I_Translateable {
|
||||
private String[] translations = null;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 09.12.2023
|
||||
* @lastChange 30.12.2023
|
||||
*/
|
||||
package gui.src.panels.ConnectToServerPanel;
|
||||
|
||||
import data.src.ViewToController.ConnectToServerData;
|
||||
import gui.src.constants.GUIConstants;
|
||||
import gui.src.panels.StatusPanel.StatusPanel;
|
||||
import queues.src.ViewToControllerQueue;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
public class ConnectToServerButton extends JButton implements ActionListener {
|
||||
private final JTextField ipAddressTextField;
|
||||
private final JTextField portTextField;
|
||||
private final JTextField trustStorePasswordTextField;
|
||||
|
||||
public ConnectToServerButton(JTextField ipAddressTextField, JTextField portTextField, JTextField trustStorePasswordTextField) {
|
||||
this.ipAddressTextField = ipAddressTextField;
|
||||
this.portTextField = portTextField;
|
||||
this.trustStorePasswordTextField = trustStorePasswordTextField;
|
||||
this.addActionListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
System.out.println("Connect to server button was pressed.");
|
||||
|
||||
ConnectToServerPanel.getInstance().disableFields();
|
||||
|
||||
// Reads in fields text
|
||||
String ipAddress = this.ipAddressTextField.getText();
|
||||
int port = Integer.parseInt(this.portTextField.getText());
|
||||
|
||||
String trustStorePath = ConnectToServerPanel.getInstance().getServerCertStoreFilePath();
|
||||
String trustStorePassword = this.trustStorePasswordTextField.getText();
|
||||
|
||||
StatusPanel.getInstance().setStatus(GUIConstants.Status.Connecting);
|
||||
// Sends data to queue
|
||||
ViewToControllerQueue.getInstance().add(new ConnectToServerData(
|
||||
ipAddress,
|
||||
port,
|
||||
trustStorePath,
|
||||
trustStorePassword
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -1,72 +1,74 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 02.12.2023
|
||||
* @lastChange 08.01.2024
|
||||
*/
|
||||
package gui.src.panels.ConnectToServerPanel;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.filechooser.FileSystemView;
|
||||
|
||||
import gui.src.constants.GUIConstants.Languages;
|
||||
import gui.src.constants.GUIConstants.Theme;
|
||||
import gui.src.interfaces.I_FetchesViewModel;
|
||||
import queues.src.View_To_ViewEventManager_Queue;
|
||||
import viewEventManager.src.data.AA_ConnectToServerData.AA_ConnectToServerData;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
import viewEventManager.src.events.AA_ConnectToServerPanelEvents.AA_ConnectToServerButtonGotPressed;
|
||||
import viewModel.src.interfaces.I_ConnectToServerPanel_ViewModel;
|
||||
import viewModel.src.interfaces.I_ViewModel;
|
||||
|
||||
import gui.src.interfaces.Themeable;
|
||||
import gui.src.interfaces.Translateable;
|
||||
/**
|
||||
* The panel to enter data to connect to the server.
|
||||
*/
|
||||
public final class ConnectToServerPanel extends JPanel implements I_FetchesViewModel {
|
||||
private static ConnectToServerPanel instance = null;
|
||||
|
||||
public final class ConnectToServerPanel extends JPanel implements Themeable, Translateable {
|
||||
private String serverCertStoreFilePath;
|
||||
private static ConnectToServerPanel instance;
|
||||
private I_ViewModel viewModel = null;
|
||||
private View_To_ViewEventManager_Queue view_To_ViewEventManager_Queue = null;
|
||||
|
||||
private JLabel mainMessageLabel;
|
||||
private JLabel ipAddressLabel;
|
||||
private JLabel portLabel;
|
||||
private JLabel serverCertStoreLabel;
|
||||
private JLabel serverCertStorePasswordLabel;
|
||||
private String serverCertStoreFilePath = "";
|
||||
|
||||
private JRadioButton[] ipVersionRadioButtons;
|
||||
private JLabel mainMessageLabel = null;
|
||||
private JLabel ipAddressLabel = null;
|
||||
private JLabel portLabel = null;
|
||||
private JLabel serverCertStoreLabel = null;
|
||||
private JLabel serverCertStorePasswordLabel = null;
|
||||
|
||||
private JTextField ipAddressTextField;
|
||||
private JTextField portTextField;
|
||||
private JTextField trustStorePasswordTextField;
|
||||
private JRadioButton[] ipVersionRadioButtons = null;
|
||||
|
||||
private JButton connectButton;
|
||||
private JButton trustStoreFileChooserButton;
|
||||
private JTextField ipAddressTextField = null;
|
||||
private JTextField portTextField = null;
|
||||
private JTextField trustStorePasswordTextField = null;
|
||||
|
||||
private final String[] translationsDE = {
|
||||
"Verbinden Sie sich mit dem Server",
|
||||
"IPv4",
|
||||
"IPv6",
|
||||
"IP Adresse",
|
||||
"Port",
|
||||
"Waehlen Sie den Trust Store, welcher das Server-Zertifikat enthaelt.",
|
||||
"Datei waehlen",
|
||||
"Trust Store Passwort",
|
||||
"Verbinden"
|
||||
};
|
||||
private final String[] translationsEN = {
|
||||
"Connect to server",
|
||||
"IPv4",
|
||||
"IPv6",
|
||||
"IP address",
|
||||
"Port",
|
||||
"Select the trust store, which contains the server certificate",
|
||||
"Choose file",
|
||||
"Trust store password",
|
||||
"Connect"
|
||||
};
|
||||
private JButton connectButton = null;
|
||||
private JButton trustStoreFileChooserButton = null;
|
||||
|
||||
public static ConnectToServerPanel getInstance() {
|
||||
if (null == instance) {
|
||||
instance = new ConnectToServerPanel();
|
||||
/**
|
||||
* On first call, initializes instance with overhanded parameters.
|
||||
* On later calls, lets instance fetch new data from view model and returns updated instance.
|
||||
* @param viewModel the model containing all the attributes of the ui elements.
|
||||
* @param view_To_ViewEventManager_Queue the queue to send events from the view to the view event manager.
|
||||
* @return the instance of the ConnectToServerPanel.
|
||||
*/
|
||||
public static ConnectToServerPanel getInstance(I_ViewModel viewModel, View_To_ViewEventManager_Queue view_To_ViewEventManager_Queue) {
|
||||
if (instance == null) {
|
||||
instance = new ConnectToServerPanel(viewModel, view_To_ViewEventManager_Queue);
|
||||
}
|
||||
instance.fetchViewModel();
|
||||
return instance;
|
||||
}
|
||||
|
||||
private ConnectToServerPanel() {
|
||||
private ConnectToServerPanel(I_ViewModel viewModel, View_To_ViewEventManager_Queue view_To_ViewEventManager_Queue) {
|
||||
this.viewModel = viewModel;
|
||||
this.view_To_ViewEventManager_Queue = view_To_ViewEventManager_Queue;
|
||||
|
||||
this.createComponents();
|
||||
this.addComponents();
|
||||
this.changeLanguage(Languages.German);
|
||||
|
||||
this.fetchViewModel();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -228,7 +230,23 @@ public final class ConnectToServerPanel extends JPanel implements Themeable, Tra
|
||||
}
|
||||
|
||||
private void createServerCertStoreFileChooserButton() {
|
||||
this.trustStoreFileChooserButton = new TrustStoreButton();
|
||||
|
||||
this.trustStoreFileChooserButton = new JButton();
|
||||
|
||||
this.trustStoreFileChooserButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
||||
JFileChooser fileChooser = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
|
||||
|
||||
int fileChooserOption = fileChooser.showSaveDialog(null);
|
||||
|
||||
// if the user selects a file
|
||||
if (fileChooserOption == JFileChooser.APPROVE_OPTION) {
|
||||
serverCertStoreFilePath = fileChooser.getSelectedFile().getAbsolutePath();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void addServerCertStoreFileChooserButton() {
|
||||
@@ -273,7 +291,23 @@ public final class ConnectToServerPanel extends JPanel implements Themeable, Tra
|
||||
}
|
||||
|
||||
private void createConnectButton() {
|
||||
this.connectButton = new ConnectToServerButton(this.ipAddressTextField, this.portTextField, this.trustStorePasswordTextField);
|
||||
|
||||
this.connectButton = new JButton();
|
||||
|
||||
this.connectButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
||||
I_ViewEvent data = new AA_ConnectToServerButtonGotPressed(
|
||||
new AA_ConnectToServerData(
|
||||
ipAddressTextField.getText(),
|
||||
Integer.valueOf(portTextField.getText()),
|
||||
serverCertStoreFilePath,
|
||||
trustStorePasswordTextField.getText()));
|
||||
// Pass the data to the event manager
|
||||
view_To_ViewEventManager_Queue.add(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void addConnectButton() {
|
||||
@@ -287,227 +321,20 @@ public final class ConnectToServerPanel extends JPanel implements Themeable, Tra
|
||||
this.add(this.connectButton, gridBagConstraints);
|
||||
}
|
||||
|
||||
public void setThemeColor(Theme themeColor) {
|
||||
try {
|
||||
switch (themeColor) {
|
||||
case Dark: {
|
||||
|
||||
}break;
|
||||
case Light: {
|
||||
|
||||
}break;
|
||||
default: {
|
||||
throw new Exception("Unknown kind of theme color.");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
this.setThemeColor(Theme.Light);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void fetchViewModel() {
|
||||
I_ConnectToServerPanel_ViewModel panelViewModel = viewModel.get_ConnectToServerPanel_ViewModel();
|
||||
|
||||
/**
|
||||
* Changes text of panel elements.
|
||||
* Panel elements are: descriptive text, ip version radio buttons,
|
||||
* ip address field descriptive text, port field descriptive text,
|
||||
* connect button text.
|
||||
* @param language the language the elements to set to.
|
||||
*/
|
||||
public void changeLanguage(Languages language) {
|
||||
changeLanguageMainMessageLabel(language);
|
||||
changeLanguageIPVersionRadioButtons(language);
|
||||
changeLanguageIPAddressLabel(language);
|
||||
changeLanguagePortLabel(language);
|
||||
changeLanguageConnectButton(language);
|
||||
changeLanguageServerCertStoreLabel(language);
|
||||
changeLanguageTrustStoreFileChooserButton(language);
|
||||
changeLanguageServerCertStorePasswordLabel(language);
|
||||
}
|
||||
mainMessageLabel.setText(panelViewModel.get_MainMessageLabel_Text());
|
||||
ipAddressLabel.setText(panelViewModel.get_IPAddressLabel_Text());
|
||||
portLabel.setText(panelViewModel.get_PortLabel_Text());
|
||||
serverCertStoreLabel.setText(panelViewModel.get_ServerCertStoreLabel_Text());
|
||||
serverCertStorePasswordLabel.setText(panelViewModel.get_ServerCertStorePasswordLabel_Text());
|
||||
|
||||
/**
|
||||
* Changes translation of radio buttons for selection of ip-version.
|
||||
* Prints an error message if the language is unknown.
|
||||
* @param language the language the elements to set to.
|
||||
*/
|
||||
private void changeLanguageIPVersionRadioButtons(Languages language) {
|
||||
try {
|
||||
switch (language) {
|
||||
case German: {
|
||||
ipVersionRadioButtons[0].setText(translationsDE[1]);
|
||||
ipVersionRadioButtons[1].setText(translationsDE[2]);
|
||||
}break;
|
||||
case English: {
|
||||
ipVersionRadioButtons[0].setText(translationsEN[1]);
|
||||
ipVersionRadioButtons[1].setText(translationsEN[2]);
|
||||
}break;
|
||||
default: {
|
||||
throw new Exception("Unknown kind of language.");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
this.changeLanguageIPVersionRadioButtons(Languages.German);
|
||||
}
|
||||
}
|
||||
ipVersionRadioButtons[0].setText(panelViewModel.get_IPVersion4RadioButton_Text());
|
||||
ipVersionRadioButtons[1].setText(panelViewModel.get_IPVersion6RadioButton_Text());
|
||||
|
||||
private void changeLanguageMainMessageLabel(Languages language) {
|
||||
try {
|
||||
switch (language) {
|
||||
case German: {
|
||||
mainMessageLabel.setText(translationsDE[0]);
|
||||
}break;
|
||||
case English: {
|
||||
mainMessageLabel.setText(translationsEN[0]);
|
||||
}break;
|
||||
default: {
|
||||
throw new Exception("Unknown kind of language.");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
this.changeLanguageMainMessageLabel(Languages.German);
|
||||
}
|
||||
}
|
||||
|
||||
private void changeLanguageIPAddressLabel(Languages language) {
|
||||
try {
|
||||
switch (language) {
|
||||
case German: {
|
||||
ipAddressLabel.setText(translationsDE[3]);
|
||||
}break;
|
||||
case English: {
|
||||
ipAddressLabel.setText(translationsEN[3]);
|
||||
}break;
|
||||
default: {
|
||||
throw new Exception("Unknown kind of language.");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
this.changeLanguageIPAddressLabel(Languages.German);
|
||||
}
|
||||
}
|
||||
|
||||
private void changeLanguagePortLabel(Languages language) {
|
||||
try {
|
||||
switch (language) {
|
||||
case German: {
|
||||
this.portLabel.setText(translationsDE[4]);
|
||||
}break;
|
||||
case English: {
|
||||
this.portLabel.setText(translationsEN[4]);
|
||||
}break;
|
||||
default: {
|
||||
throw new Exception("Unknown kind of language.");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
this.changeLanguagePortLabel(Languages.German);
|
||||
}
|
||||
}
|
||||
|
||||
private void changeLanguageServerCertStoreLabel(Languages language) {
|
||||
try {
|
||||
switch (language) {
|
||||
case German: {
|
||||
this.serverCertStoreLabel.setText(translationsDE[5]);
|
||||
}break;
|
||||
case English: {
|
||||
this.serverCertStoreLabel.setText(translationsEN[5]);
|
||||
}break;
|
||||
default: {
|
||||
throw new Exception("Unknown kind of language.");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
this.changeLanguagePortLabel(Languages.German);
|
||||
}
|
||||
}
|
||||
|
||||
private void changeLanguageTrustStoreFileChooserButton(Languages language) {
|
||||
try {
|
||||
switch (language) {
|
||||
case German: {
|
||||
this.trustStoreFileChooserButton.setText(translationsDE[6]);
|
||||
}break;
|
||||
case English: {
|
||||
this.trustStoreFileChooserButton.setText(translationsEN[6]);
|
||||
}break;
|
||||
default: {
|
||||
throw new Exception("Unknown kind of language.");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
this.changeLanguagePortLabel(Languages.German);
|
||||
}
|
||||
}
|
||||
|
||||
private void changeLanguageServerCertStorePasswordLabel(Languages language) {
|
||||
try {
|
||||
switch (language) {
|
||||
case German: {
|
||||
this.serverCertStorePasswordLabel.setText(translationsDE[7]);
|
||||
}break;
|
||||
case English: {
|
||||
this.serverCertStorePasswordLabel.setText(translationsEN[7]);
|
||||
}break;
|
||||
default: {
|
||||
throw new Exception("Unknown kind of language.");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
this.changeLanguagePortLabel(Languages.German);
|
||||
}
|
||||
}
|
||||
|
||||
private void changeLanguageConnectButton(Languages language) {
|
||||
try {
|
||||
switch (language) {
|
||||
case German: {
|
||||
this.connectButton.setText(translationsDE[8]);
|
||||
}break;
|
||||
case English: {
|
||||
this.connectButton.setText(translationsEN[8]);
|
||||
}break;
|
||||
default: {
|
||||
throw new Exception("Unknown kind of language.");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
this.changeLanguagePortLabel(Languages.German);
|
||||
}
|
||||
}
|
||||
|
||||
public void setServerCertStoreFilePath(String serverCertStoreFilePath) {
|
||||
this.serverCertStoreFilePath = serverCertStoreFilePath;
|
||||
}
|
||||
|
||||
public String getServerCertStoreFilePath() {
|
||||
return serverCertStoreFilePath;
|
||||
}
|
||||
|
||||
public void enableFields() {
|
||||
for (JRadioButton radioButton : this.ipVersionRadioButtons) {
|
||||
radioButton.setEnabled(true);
|
||||
}
|
||||
this.ipAddressTextField.setEditable(true);
|
||||
this.portTextField.setEditable(true);
|
||||
this.trustStorePasswordTextField.setEditable(true);
|
||||
this.connectButton.setEnabled(true);
|
||||
}
|
||||
|
||||
public void disableFields() {
|
||||
for (JRadioButton radioButton : this.ipVersionRadioButtons) {
|
||||
radioButton.setEnabled(false);
|
||||
}
|
||||
this.ipAddressTextField.setEditable(false);
|
||||
this.portTextField.setEditable(false);
|
||||
this.trustStorePasswordTextField.setEditable(false);
|
||||
this.connectButton.setEnabled(false);
|
||||
connectButton.setText(panelViewModel.get_ConnectButton_Text());
|
||||
trustStoreFileChooserButton.setText(panelViewModel.get_TrustStoreFileChooserButton_Text());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 09.12.2023
|
||||
*/
|
||||
package gui.src.panels.ConnectToServerPanel;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFileChooser;
|
||||
|
||||
import javax.swing.filechooser.FileSystemView;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
public class TrustStoreButton extends JButton implements ActionListener {
|
||||
|
||||
public TrustStoreButton() {
|
||||
this.addActionListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JFileChooser fileChooser = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
|
||||
|
||||
int fileChooserOption = fileChooser.showSaveDialog(null);
|
||||
|
||||
// if the user selects a file
|
||||
if (fileChooserOption == JFileChooser.APPROVE_OPTION) {
|
||||
ConnectToServerPanel.getInstance().setServerCertStoreFilePath(fileChooser.getSelectedFile().getAbsolutePath());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,15 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package gui.src.panels.ConnectionsTablePanel;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
public class ConnectionsTablePanel extends JPanel {
|
||||
import gui.src.interfaces.I_FetchesViewModel;
|
||||
|
||||
public class ConnectionsTablePanel extends JPanel implements I_FetchesViewModel {
|
||||
private static ConnectionsTablePanel instance;
|
||||
|
||||
private ConnectionsTablePanel() {
|
||||
@@ -15,4 +22,10 @@ public class ConnectionsTablePanel extends JPanel {
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchViewModel() {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'fetchViewModel'");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package gui.src.panels.ControllingPanel.BasePanel;
|
||||
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
public class ControllingBasePanel extends JPanel {
|
||||
private static ControllingBasePanel instance = null;
|
||||
|
||||
private final JButton nftConfigButton;
|
||||
|
||||
private ControllingBasePanel() {
|
||||
nftConfigButton = new NFTConfigurationButton();
|
||||
this.setLayout(new GridBagLayout());
|
||||
|
||||
GridBagConstraints nftConfButtonConstraints = new GridBagConstraints();
|
||||
|
||||
this.add(nftConfigButton, nftConfButtonConstraints);
|
||||
}
|
||||
|
||||
public static ControllingBasePanel getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new ControllingBasePanel();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 04.01.2024
|
||||
* @lastChange 04.01.2024
|
||||
*/
|
||||
package gui.src.panels.ControllingPanel.BasePanel;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JButton;
|
||||
|
||||
import gui.src.constants.GUIConstants.ControllingSubPanel;
|
||||
import gui.src.panels.ControllingPanel.ControllingPanel;
|
||||
|
||||
public final class NFTConfigurationButton extends JButton implements ActionListener {
|
||||
|
||||
public NFTConfigurationButton() {
|
||||
this.setText("NFT Configuration");
|
||||
this.addActionListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ControllingPanel.getInstance().setPanel(ControllingSubPanel.NFTableFamilyPanel);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,19 +5,125 @@
|
||||
|
||||
package gui.src.panels.ControllingPanel;
|
||||
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Deque;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import gui.src.constants.GUIConstants.ControllingSubPanel;
|
||||
import gui.src.frames.MainFrame;
|
||||
import gui.src.panels.ControllingPanel.BasePanel.ControllingBasePanel;
|
||||
import gui.src.panels.ControllingPanel.NFTable.NFTFamilyPanel.NFTFamilyPanel;
|
||||
import gui.src.panels.ControllingPanel.NFTable.NFTablesTablePanel.NFTablesTablePanel;
|
||||
import gui.src.panels.ControllingPanel.NFTable.NFTablesChainPanel.NFTablesChainPanel;
|
||||
import gui.src.panels.ControllingPanel.NFTable.NFTablesRulePanel.NFTablesRulePanel;
|
||||
|
||||
public final class ControllingPanel extends JPanel {
|
||||
private static ControllingPanel instance;
|
||||
|
||||
private ControllingPanel() {
|
||||
private ControllingSubPanel activePanelType = ControllingSubPanel.None;
|
||||
private Deque<ControllingSubPanel> previousPanelStack = new ArrayDeque<ControllingSubPanel>();
|
||||
private Deque<ControllingSubPanel> nextPanelStack = new ArrayDeque<ControllingSubPanel>();
|
||||
|
||||
private ControllingPanel() {
|
||||
this.setPanel(ControllingSubPanel.BasePanel);
|
||||
}
|
||||
|
||||
public static ControllingPanel getInstance() {
|
||||
if (null == instance) {
|
||||
if (instance == null) {
|
||||
instance = new ControllingPanel();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void setPanel(ControllingSubPanel panelType) {
|
||||
this.removeAll();
|
||||
|
||||
switch (panelType) {
|
||||
case ControllingSubPanel.BasePanel: {
|
||||
if (activePanelType != ControllingSubPanel.BasePanel) {
|
||||
previousPanelStack.push(activePanelType);
|
||||
this.activePanelType = ControllingSubPanel.BasePanel;
|
||||
this.add(ControllingBasePanel.getInstance());
|
||||
}
|
||||
}break;
|
||||
case ControllingSubPanel.NFTableFamilyPanel: {
|
||||
if (activePanelType != ControllingSubPanel.NFTableFamilyPanel) {
|
||||
previousPanelStack.push(activePanelType);
|
||||
this.activePanelType = ControllingSubPanel.NFTableFamilyPanel;
|
||||
this.add(NFTFamilyPanel.getInstance());
|
||||
}
|
||||
}break;
|
||||
case ControllingSubPanel.NFTableTablePanel: {
|
||||
if (activePanelType != ControllingSubPanel.NFTableTablePanel) {
|
||||
previousPanelStack.push(activePanelType);
|
||||
this.activePanelType = ControllingSubPanel.NFTableTablePanel;
|
||||
this.add(NFTablesTablePanel.getInstance());
|
||||
}
|
||||
}break;
|
||||
case ControllingSubPanel.NFTableChainPanel: {
|
||||
if (activePanelType != ControllingSubPanel.NFTableChainPanel) {
|
||||
previousPanelStack.push(activePanelType);
|
||||
this.activePanelType = ControllingSubPanel.NFTableChainPanel;
|
||||
this.add(NFTablesChainPanel.getInstance());
|
||||
}
|
||||
}break;
|
||||
case ControllingSubPanel.NFTableRulePanel: {
|
||||
if (activePanelType != ControllingSubPanel.NFTableRulePanel) {
|
||||
previousPanelStack.push(activePanelType);
|
||||
this.activePanelType = ControllingSubPanel.NFTableRulePanel;
|
||||
this.add(NFTablesRulePanel.getInstance());
|
||||
}
|
||||
}break;
|
||||
default: {
|
||||
|
||||
}break;
|
||||
}
|
||||
MainFrame.getInstance(null, null, null).setVisible(true);
|
||||
}
|
||||
|
||||
public void previousButtonEvent() {
|
||||
if (!previousPanelStack.isEmpty()) {
|
||||
nextPanelStack.push(activePanelType);
|
||||
setPanel(previousPanelStack.pop());
|
||||
}
|
||||
}
|
||||
|
||||
public void nextButtonEvent() {
|
||||
if(!nextPanelStack.isEmpty()) {
|
||||
previousPanelStack.push(activePanelType);
|
||||
setPanel(nextPanelStack.pop());
|
||||
}
|
||||
}
|
||||
|
||||
/*public void setNFTInformation(NFTablesConfigurationReceived nftConfig) {
|
||||
LinkedList<LinkedList<LinkedList<String>>> nftInformation = nftConfig.getNFTableInformation().getTables();
|
||||
|
||||
LinkedList<String> tables = new LinkedList<String>();
|
||||
|
||||
HashMap<String, String> chains = new HashMap<String, String>();
|
||||
|
||||
HashMap<String, String> rules = new HashMap<String, String>();
|
||||
|
||||
for (int tableIndex = 0; tableIndex < nftInformation.size(); tableIndex++) {
|
||||
for (int chainIndex = 0; chainIndex < nftInformation.get(tableIndex).size(); chainIndex++) {
|
||||
for (int ruleIndex = 0; ruleIndex < nftInformation.get(tableIndex).get(chainIndex).size(); ruleIndex++) {
|
||||
switch (ruleIndex) {
|
||||
case 0: {
|
||||
tables.add(nftInformation.get(tableIndex).get(chainIndex).get(0));
|
||||
}break;
|
||||
case 1: {
|
||||
chains.put(nftInformation.get(tableIndex).get(chainIndex).get(0), nftInformation.get(tableIndex).get(chainIndex).get(1));
|
||||
}break;
|
||||
default: {
|
||||
|
||||
}break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
NFTablesTablePanel.getInstance().setTables(tables);
|
||||
} */
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 04.01.2024
|
||||
* @lastChange 04.01.2024
|
||||
*/
|
||||
package gui.src.panels.ControllingPanel.NFTable.NFTFamilyPanel;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JButton;
|
||||
|
||||
public class IPv4FamilyButton extends JButton implements ActionListener {
|
||||
private static IPv4FamilyButton instance = null;
|
||||
|
||||
private IPv4FamilyButton() {
|
||||
this.setText("IPv4");
|
||||
this.addActionListener(this);
|
||||
this.setPreferredSize(new Dimension(100,100));
|
||||
}
|
||||
|
||||
public static IPv4FamilyButton getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new IPv4FamilyButton();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'actionPerformed'");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 04.01.2024
|
||||
* @lastChange 04.01.2024
|
||||
*/
|
||||
package gui.src.panels.ControllingPanel.NFTable.NFTFamilyPanel;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JButton;
|
||||
|
||||
public class IPv6FamilyButton extends JButton implements ActionListener {
|
||||
private static IPv6FamilyButton instance = null;
|
||||
|
||||
private IPv6FamilyButton() {
|
||||
this.setText("IPv6");
|
||||
this.addActionListener(this);
|
||||
this.setPreferredSize(new Dimension(100,100));
|
||||
}
|
||||
|
||||
public static IPv6FamilyButton getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new IPv6FamilyButton();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'actionPerformed'");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 04.01.2024
|
||||
* @lastChange 04.01.2024
|
||||
*/
|
||||
package gui.src.panels.ControllingPanel.NFTable.NFTFamilyPanel;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JButton;
|
||||
|
||||
public class InetFamilyButton extends JButton implements ActionListener {
|
||||
private static InetFamilyButton instance = null;
|
||||
|
||||
private InetFamilyButton() {
|
||||
this.setText("Inet");
|
||||
this.addActionListener(this);
|
||||
this.setPreferredSize(new Dimension(100,100));
|
||||
}
|
||||
|
||||
public static InetFamilyButton getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new InetFamilyButton();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'actionPerformed'");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 31.12.2023
|
||||
* @lastChange 04.01.2024
|
||||
*/
|
||||
package gui.src.panels.ControllingPanel.NFTable.NFTFamilyPanel;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public final class NFTFamilyPanel extends JPanel {
|
||||
private static NFTFamilyPanel instance = null;
|
||||
|
||||
private final JLabel instruction;
|
||||
|
||||
private final JButton inetFamilyButton;
|
||||
private final JButton ipv4FamilyButton;
|
||||
private final JButton ipv6FamilyButton;
|
||||
|
||||
private NFTFamilyPanel() {
|
||||
instruction = new JLabel("Waehlen Sie die Familie aus, deren Tabellen / Ketten / Regeln Sie anschauen / veraendern moechten.");
|
||||
|
||||
this.setLayout(new GridBagLayout());
|
||||
|
||||
this.addInstructions();
|
||||
|
||||
inetFamilyButton = InetFamilyButton.getInstance();
|
||||
ipv4FamilyButton = IPv4FamilyButton.getInstance();
|
||||
ipv6FamilyButton = IPv6FamilyButton.getInstance();
|
||||
|
||||
this.addFamilyButtons();
|
||||
}
|
||||
|
||||
private void addInstructions() {
|
||||
GridBagConstraints instructionConstraints = new GridBagConstraints();
|
||||
instructionConstraints.gridx = 0;
|
||||
instructionConstraints.gridy = 0;
|
||||
instructionConstraints.anchor = GridBagConstraints.NORTHWEST;
|
||||
instructionConstraints.fill = GridBagConstraints.HORIZONTAL;
|
||||
instructionConstraints.weightx = 1;
|
||||
instructionConstraints.insets = new Insets(0,0,0,0);
|
||||
this.add(instruction, instructionConstraints);
|
||||
}
|
||||
|
||||
private void addFamilyButtons() {
|
||||
GridBagConstraints buttonPanelConstraints = new GridBagConstraints();
|
||||
buttonPanelConstraints.gridx = 0;
|
||||
buttonPanelConstraints.gridy = 1;
|
||||
buttonPanelConstraints.anchor = GridBagConstraints.NORTHWEST;
|
||||
buttonPanelConstraints.fill = GridBagConstraints.HORIZONTAL;
|
||||
buttonPanelConstraints.weightx = 1;
|
||||
buttonPanelConstraints.insets = new Insets(0,0,0,0);
|
||||
|
||||
JPanel familyButtonPanel = new JPanel();
|
||||
familyButtonPanel.setLayout(new FlowLayout());
|
||||
|
||||
familyButtonPanel.add(inetFamilyButton);
|
||||
familyButtonPanel.add(ipv4FamilyButton);
|
||||
familyButtonPanel.add(ipv6FamilyButton);
|
||||
|
||||
this.add(familyButtonPanel, buttonPanelConstraints);
|
||||
}
|
||||
|
||||
public static NFTFamilyPanel getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new NFTFamilyPanel();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,26 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 30.12.2023
|
||||
* @lastChange 30.12.2023
|
||||
* @lastChange 04.01.2024
|
||||
*/
|
||||
package gui.src.panels.ControllingPanel.NFTable.NFTablesChainPanel;
|
||||
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
public class NFTablesChainPanel extends JPanel {
|
||||
|
||||
public final class NFTablesChainPanel extends JPanel {
|
||||
private static NFTablesChainPanel instance = null;
|
||||
|
||||
private NFTablesChainPanel() {
|
||||
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static NFTablesChainPanel getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new NFTablesChainPanel();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 04.01.2024
|
||||
* @lastChange 04.01.2024
|
||||
*/
|
||||
package gui.src.panels.ControllingPanel.NFTable.NFTablesRulePanel;
|
||||
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
public final class NFTablesRulePanel extends JPanel {
|
||||
private static NFTablesRulePanel instance = null;
|
||||
|
||||
private NFTablesRulePanel() {
|
||||
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static NFTablesRulePanel getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new NFTablesRulePanel();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
@@ -5,16 +5,25 @@
|
||||
*/
|
||||
package gui.src.panels.ControllingPanel.NFTable.NFTablesTablePanel;
|
||||
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
public final class NFTablesTablePanel extends JPanel {
|
||||
private static NFTablesTablePanel instance = null;
|
||||
|
||||
private NFTablesTablePanel() {
|
||||
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
|
||||
private JPanel tableListPanel = null;
|
||||
|
||||
|
||||
private NFTablesTablePanel() {
|
||||
setTables(null);
|
||||
this.setLayout(new GridBagLayout());
|
||||
|
||||
GridBagConstraints tablesPanelConstraints = new GridBagConstraints();
|
||||
|
||||
this.add(tableListPanel, tablesPanelConstraints);
|
||||
}
|
||||
|
||||
public static NFTablesTablePanel getInstance() {
|
||||
@@ -23,4 +32,19 @@ public final class NFTablesTablePanel extends JPanel {
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void setTables(List<String> tables) {
|
||||
tableListPanel = new JPanel();
|
||||
tableListPanel.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
|
||||
|
||||
if (tables != null) {
|
||||
|
||||
for (String table : tables) {
|
||||
//tableListPanel.add();
|
||||
}
|
||||
} else {
|
||||
//tableListPanel.add();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ public class ConnectionsLineChartPanel extends JPanel {
|
||||
|
||||
addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
MainFrame.getInstance().setPanel(null);
|
||||
// MainFrame.getInstance().setPanel(null);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -11,20 +11,24 @@ import java.awt.event.ActionListener;
|
||||
import javax.swing.JButton;
|
||||
|
||||
import gui.src.constants.GUIConstants.Panel;
|
||||
import gui.src.frames.MainFrame;
|
||||
import gui.src.interfaces.I_PanelChangeable;
|
||||
|
||||
public class ControllingButton extends JButton implements ActionListener {
|
||||
|
||||
private static ControllingButton instance = null;
|
||||
|
||||
private ControllingButton() {
|
||||
private I_PanelChangeable mainFrame = null;
|
||||
|
||||
private ControllingButton(I_PanelChangeable mainFrame) {
|
||||
this.mainFrame = mainFrame;
|
||||
|
||||
this.setText("Controlling");
|
||||
this.addActionListener(this);
|
||||
}
|
||||
|
||||
public static ControllingButton getInstance() {
|
||||
public static ControllingButton getInstance(I_PanelChangeable mainFrame) {
|
||||
if (instance == null) {
|
||||
instance = new ControllingButton();
|
||||
instance = new ControllingButton(mainFrame);
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
@@ -32,8 +36,8 @@ public class ControllingButton extends JButton implements ActionListener {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
this.setEnabled(false);
|
||||
MonitoringButton.getInstance().setEnabled(true);
|
||||
MainFrame.getInstance().setPanel(Panel.ControllingPanel);
|
||||
MonitoringButton.getInstance(null).setEnabled(true);
|
||||
this.mainFrame.setPanel(Panel.ControllingPanel);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,19 +12,23 @@ import javax.swing.JButton;
|
||||
|
||||
import gui.src.constants.GUIConstants.Panel;
|
||||
import gui.src.frames.MainFrame;
|
||||
import gui.src.interfaces.I_PanelChangeable;
|
||||
|
||||
public class MonitoringButton extends JButton implements ActionListener {
|
||||
|
||||
private static MonitoringButton instance = null;
|
||||
|
||||
private MonitoringButton() {
|
||||
private I_PanelChangeable mainFrame = null;
|
||||
|
||||
private MonitoringButton(I_PanelChangeable mainFrame) {
|
||||
this.mainFrame = mainFrame;
|
||||
this.setText("Monitoring");
|
||||
this.addActionListener(this);
|
||||
}
|
||||
|
||||
public static MonitoringButton getInstance() {
|
||||
public static MonitoringButton getInstance(I_PanelChangeable mainFrame) {
|
||||
if (instance == null) {
|
||||
instance = new MonitoringButton();
|
||||
instance = new MonitoringButton(mainFrame);
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
@@ -32,8 +36,8 @@ public class MonitoringButton extends JButton implements ActionListener {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
this.setEnabled(false);
|
||||
ControllingButton.getInstance().setEnabled(true);
|
||||
MainFrame.getInstance().setPanel(Panel.MonitoringPanel);
|
||||
ControllingButton.getInstance(null).setEnabled(true);
|
||||
mainFrame.setPanel(Panel.MonitoringPanel);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
30
src/main/java/gui/src/panels/StatusPanel/NextButton.java
Normal file
30
src/main/java/gui/src/panels/StatusPanel/NextButton.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package gui.src.panels.StatusPanel;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JButton;
|
||||
|
||||
import gui.src.panels.ControllingPanel.ControllingPanel;
|
||||
|
||||
public class NextButton extends JButton implements ActionListener {
|
||||
private static NextButton instance = null;
|
||||
|
||||
private NextButton() {
|
||||
this.setText("->");
|
||||
this.addActionListener(this);
|
||||
}
|
||||
|
||||
public static NextButton getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new NextButton();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ControllingPanel.getInstance().nextButtonEvent();
|
||||
}
|
||||
|
||||
}
|
||||
29
src/main/java/gui/src/panels/StatusPanel/PreviousButton.java
Normal file
29
src/main/java/gui/src/panels/StatusPanel/PreviousButton.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package gui.src.panels.StatusPanel;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JButton;
|
||||
|
||||
import gui.src.panels.ControllingPanel.ControllingPanel;
|
||||
|
||||
public class PreviousButton extends JButton implements ActionListener {
|
||||
private static PreviousButton instance = null;
|
||||
|
||||
private PreviousButton() {
|
||||
this.setText("<-");
|
||||
this.addActionListener(this);
|
||||
}
|
||||
|
||||
public static PreviousButton getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new PreviousButton();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ControllingPanel.getInstance().previousButtonEvent();
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
package gui.src.panels.StatusPanel;
|
||||
|
||||
import gui.src.constants.GUIConstants;
|
||||
import gui.src.interfaces.I_PanelChangeable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
@@ -13,38 +14,63 @@ import java.awt.*;
|
||||
public class StatusPanel extends JPanel {
|
||||
private static StatusPanel instance;
|
||||
|
||||
private final JPanel flowPanel;
|
||||
private final JPanel flowPanelWest;
|
||||
private final JPanel flowPanelEast;
|
||||
|
||||
private final JLabel statusLabel;
|
||||
private final JButton monitoringButton;
|
||||
private final JButton controllingButton;
|
||||
|
||||
private StatusPanel() {
|
||||
private final JButton nextControllingButton;
|
||||
private final JButton previousControllingButton;
|
||||
|
||||
private StatusPanel(I_PanelChangeable mainFrame) {
|
||||
this.statusLabel = new JLabel("Status: Disconnected");
|
||||
this.monitoringButton = MonitoringButton.getInstance();
|
||||
this.controllingButton = ControllingButton.getInstance();
|
||||
this.monitoringButton = MonitoringButton.getInstance(mainFrame);
|
||||
this.controllingButton = ControllingButton.getInstance(mainFrame);
|
||||
|
||||
this.nextControllingButton = NextButton.getInstance();
|
||||
this.previousControllingButton = PreviousButton.getInstance();
|
||||
|
||||
this.monitoringButton.setVisible(false);
|
||||
this.controllingButton.setVisible(false);
|
||||
|
||||
this.flowPanel = new JPanel();
|
||||
this.flowPanel.setLayout(new FlowLayout());
|
||||
this.flowPanel.add(this.statusLabel);
|
||||
this.flowPanel.add(this.monitoringButton);
|
||||
this.flowPanel.add(this.controllingButton);
|
||||
this.nextControllingButton.setVisible(false);
|
||||
this.previousControllingButton.setVisible(false);
|
||||
|
||||
this.flowPanelWest = new JPanel();
|
||||
this.flowPanelWest.setLayout(new FlowLayout());
|
||||
this.flowPanelWest.add(this.statusLabel);
|
||||
this.flowPanelWest.add(this.monitoringButton);
|
||||
this.flowPanelWest.add(this.controllingButton);
|
||||
|
||||
GridBagConstraints flowPanelConstraints = new GridBagConstraints();
|
||||
flowPanelConstraints.anchor = GridBagConstraints.WEST;
|
||||
flowPanelConstraints.weightx = 1;
|
||||
flowPanelConstraints.gridx = 0;
|
||||
flowPanelConstraints.weightx = 0.5;
|
||||
flowPanelConstraints.weighty = 1;
|
||||
flowPanelConstraints.insets = new Insets(0, 0, 0, 0);
|
||||
this.setLayout(new GridBagLayout());
|
||||
this.add(this.flowPanel, flowPanelConstraints);
|
||||
this.add(this.flowPanelWest, flowPanelConstraints);
|
||||
|
||||
this.flowPanelEast = new JPanel();
|
||||
this.flowPanelEast.setLayout(new FlowLayout());
|
||||
this.flowPanelEast.add(this.previousControllingButton);
|
||||
this.flowPanelEast.add(this.nextControllingButton);
|
||||
|
||||
GridBagConstraints flowPanelConstraintsEast = new GridBagConstraints();
|
||||
flowPanelConstraintsEast.anchor = GridBagConstraints.EAST;
|
||||
flowPanelConstraintsEast.gridx = 1;
|
||||
flowPanelConstraintsEast.weightx = 0.5;
|
||||
flowPanelConstraintsEast.weighty = 1;
|
||||
flowPanelConstraintsEast.insets = new Insets(0, 0, 0, 0);
|
||||
this.setLayout(new GridBagLayout());
|
||||
this.add(this.flowPanelEast, flowPanelConstraintsEast);
|
||||
}
|
||||
|
||||
public static StatusPanel getInstance() {
|
||||
public static StatusPanel getInstance(I_PanelChangeable mainFrame) {
|
||||
if (null == instance) {
|
||||
instance = new StatusPanel();
|
||||
instance = new StatusPanel(mainFrame);
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
@@ -70,4 +96,9 @@ public class StatusPanel extends JPanel {
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
public void setPreviousNextButtonsVisible(boolean isVisble) {
|
||||
this.previousControllingButton.setVisible(isVisble);
|
||||
this.nextControllingButton.setVisible(isVisble);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +1,91 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 31.10.2023
|
||||
* @lastCHange 06.01.2024
|
||||
*/
|
||||
package main.src;
|
||||
|
||||
import controller.src.Controller;
|
||||
import controller.src.ControllerThread;
|
||||
|
||||
import controller.src.interfaces.I_Controller;
|
||||
import gui.src.I_View;
|
||||
import gui.src.ViewThread;
|
||||
|
||||
import model.src.ModelRepresentation;
|
||||
import model.src.I_Model;
|
||||
import model.src.Model;
|
||||
|
||||
import queues.src.ControllerToViewQueue;
|
||||
import queues.src.ViewToControllerQueue;
|
||||
import presenter.src.PresenterThread;
|
||||
import presenter.src.interfaces.I_Presenter;
|
||||
|
||||
import queues.src.Controller_To_Presenter_Queue;
|
||||
import queues.src.Presenter_To_Controller_Queue;
|
||||
import queues.src.Presenter_To_View_Queue;
|
||||
import queues.src.ViewEventManager_To_Controller_Queue;
|
||||
import queues.src.ViewEventManager_To_Presenter_Queue;
|
||||
import queues.src.View_To_ViewEventManager_Queue;
|
||||
|
||||
import viewEventManager.src.ViewEventManagerThread;
|
||||
import viewEventManager.src.interfaces.I_ViewEventManager;
|
||||
|
||||
import viewModel.src.enums.E_Language;
|
||||
import viewModel.src.enums.E_Status;
|
||||
import viewModel.src.informations.StatusPanel_Information;
|
||||
import viewModel.src.interfaces.I_ViewModel;
|
||||
import viewModel.src.models.ConnectToServerPanel_ViewModel;
|
||||
import viewModel.src.models.ControllingPanel_ViewModel;
|
||||
import viewModel.src.models.MonitoringPanel_ViewModel;
|
||||
import viewModel.src.models.StatusPanel_ViewModel;
|
||||
import viewModel.src.models.ViewModel;
|
||||
|
||||
public final class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
ControllerToViewQueue.getInstance();
|
||||
ViewToControllerQueue.getInstance();
|
||||
|
||||
ViewThread.getInstance().start();
|
||||
Controller_To_Presenter_Queue controller_to_presenter_queue = new Controller_To_Presenter_Queue();
|
||||
|
||||
ModelRepresentation model = new ModelRepresentation();
|
||||
ViewEventManager_To_Controller_Queue viewEventManager_to_controller_queue = new ViewEventManager_To_Controller_Queue();
|
||||
ViewEventManager_To_Presenter_Queue viewEventManager_to_presenter_queue = new ViewEventManager_To_Presenter_Queue();
|
||||
|
||||
Controller controller = new ControllerThread(model);
|
||||
Presenter_To_Controller_Queue presenter_to_controller_queue = new Presenter_To_Controller_Queue();
|
||||
Presenter_To_View_Queue presenter_to_view_queue = new Presenter_To_View_Queue();
|
||||
|
||||
View_To_ViewEventManager_Queue view_to_viewEventManager_queue = new View_To_ViewEventManager_Queue();
|
||||
|
||||
I_Model model = new Model();
|
||||
|
||||
I_ViewModel viewModel = new ViewModel(
|
||||
E_Language.German,
|
||||
new StatusPanel_ViewModel(new StatusPanel_Information(E_Language.German, E_Status.Disconnected)),
|
||||
new ConnectToServerPanel_ViewModel(E_Language.German),
|
||||
new MonitoringPanel_ViewModel(E_Language.German),
|
||||
new ControllingPanel_ViewModel(E_Language.German));
|
||||
|
||||
I_Presenter presenter = new PresenterThread(
|
||||
model,
|
||||
viewModel,
|
||||
viewEventManager_to_presenter_queue,
|
||||
presenter_to_controller_queue,
|
||||
controller_to_presenter_queue,
|
||||
presenter_to_view_queue);
|
||||
|
||||
I_Controller controller = new ControllerThread(
|
||||
model,
|
||||
viewEventManager_to_controller_queue,
|
||||
controller_to_presenter_queue,
|
||||
presenter_to_controller_queue);
|
||||
|
||||
I_ViewEventManager viewEventManager = new ViewEventManagerThread(
|
||||
viewEventManager_to_controller_queue,
|
||||
viewEventManager_to_presenter_queue,
|
||||
view_to_viewEventManager_queue);
|
||||
|
||||
I_View view = new ViewThread(
|
||||
viewModel,
|
||||
presenter_to_view_queue,
|
||||
view_to_viewEventManager_queue);
|
||||
|
||||
viewEventManager.start();
|
||||
controller.start();
|
||||
presenter.start();
|
||||
view.start();
|
||||
}
|
||||
}
|
||||
14
src/main/java/model/src/I_Model.java
Normal file
14
src/main/java/model/src/I_Model.java
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
*/
|
||||
package model.src;
|
||||
|
||||
import model.src.NFTable.NFTablesModel;
|
||||
|
||||
public interface I_Model {
|
||||
public int getFetchID();
|
||||
public NetworkModel getNetworkModel();
|
||||
public NFTablesModel getNFTablesModel();
|
||||
public ConnectionModel getConnectionModel();
|
||||
}
|
||||
@@ -1,11 +1,42 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
* @lastChange 04.01.2024
|
||||
*/
|
||||
package model.src;
|
||||
|
||||
public interface Model {
|
||||
public NetworkModel getNetworkModel();
|
||||
public NFTablesModel getNFTablesModel();
|
||||
public ConnectionModel getConnectionModel();
|
||||
import model.src.NFTable.NFTablesModel;
|
||||
|
||||
public class Model implements I_Model {
|
||||
|
||||
private int actualFetchID = 0;
|
||||
private NetworkModel networkModel;
|
||||
private NFTablesModel nfTablesModel;
|
||||
private ConnectionModel connectionModel;
|
||||
|
||||
public Model() {
|
||||
this.networkModel = new NetworkModel();
|
||||
this.nfTablesModel = NFTablesModel.getInstance();
|
||||
this.connectionModel = new ConnectionModel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized NetworkModel getNetworkModel() {
|
||||
return this.networkModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized NFTablesModel getNFTablesModel() {
|
||||
return this.nfTablesModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized ConnectionModel getConnectionModel() {
|
||||
return this.connectionModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFetchID() {
|
||||
return this.actualFetchID;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ public class ModelConstants {
|
||||
public enum AccessModifier {
|
||||
ReadAllEntries,
|
||||
WriteEntry,
|
||||
WriteEntries,
|
||||
DeleteEntry,
|
||||
DeleteAllEntries
|
||||
}
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
*/
|
||||
package model.src;
|
||||
|
||||
public class ModelRepresentation implements Model {
|
||||
private NetworkModel networkModel;
|
||||
private NFTablesModel nfTablesModel;
|
||||
private ConnectionModel connectionModel;
|
||||
|
||||
public ModelRepresentation() {
|
||||
this.networkModel = new NetworkModel();
|
||||
this.nfTablesModel = new NFTablesModel();
|
||||
this.connectionModel = new ConnectionModel();
|
||||
}
|
||||
|
||||
public synchronized NetworkModel getNetworkModel() {
|
||||
return this.networkModel;
|
||||
}
|
||||
|
||||
public synchronized NFTablesModel getNFTablesModel() {
|
||||
return this.nfTablesModel;
|
||||
}
|
||||
|
||||
public synchronized ConnectionModel getConnectionModel() {
|
||||
return this.connectionModel;
|
||||
}
|
||||
}
|
||||
10
src/main/java/model/src/NFTable/NFTChain.java
Normal file
10
src/main/java/model/src/NFTable/NFTChain.java
Normal file
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
*/
|
||||
package model.src.NFTable;
|
||||
|
||||
public record NFTChain(String family, String name, String tableName, int handle, NFTExpression expr) {
|
||||
|
||||
}
|
||||
10
src/main/java/model/src/NFTable/NFTExpression.java
Normal file
10
src/main/java/model/src/NFTable/NFTExpression.java
Normal file
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
*/
|
||||
package model.src.NFTable;
|
||||
|
||||
public record NFTExpression(String action, String target) {
|
||||
|
||||
}
|
||||
5
src/main/java/model/src/NFTable/NFTRule.java
Normal file
5
src/main/java/model/src/NFTable/NFTRule.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package model.src.NFTable;
|
||||
|
||||
public record NFTRule(String family, String tableName, String chainName, int handle, NFTExpression expr) {
|
||||
|
||||
}
|
||||
10
src/main/java/model/src/NFTable/NFTable.java
Normal file
10
src/main/java/model/src/NFTable/NFTable.java
Normal file
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
*/
|
||||
package model.src.NFTable;
|
||||
|
||||
public record NFTable(String family, String name, int handle) {
|
||||
|
||||
}
|
||||
99
src/main/java/model/src/NFTable/NFTablesModel.java
Normal file
99
src/main/java/model/src/NFTable/NFTablesModel.java
Normal file
@@ -0,0 +1,99 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
* @lastChange 05.01.2024
|
||||
*/
|
||||
package model.src.NFTable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
|
||||
import model.src.ModelConstants.AccessModifier;
|
||||
|
||||
public final class NFTablesModel {
|
||||
private static NFTablesModel instance = null;
|
||||
|
||||
private LinkedList<NFTable> tables = null;
|
||||
private HashMap<String, LinkedList<NFTChain>> chains = null;
|
||||
private HashMap<String, LinkedList<NFTRule>> rules = null;
|
||||
|
||||
private NFTablesModel() {
|
||||
this.tables = new LinkedList<NFTable>();
|
||||
this.chains = new HashMap<String, LinkedList<NFTChain>>();
|
||||
this.rules = new HashMap<String, LinkedList<NFTRule>>();
|
||||
}
|
||||
|
||||
public static synchronized NFTablesModel getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new NFTablesModel();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
public synchronized LinkedList<NFTable> accessTables(AccessModifier am, LinkedList<NFTable> newTables) {
|
||||
switch (am) {
|
||||
case AccessModifier.ReadAllEntries: {
|
||||
return getTables();
|
||||
}
|
||||
case AccessModifier.WriteEntries: {
|
||||
this.tables = new LinkedList<NFTable>(newTables);
|
||||
}break;
|
||||
default: {
|
||||
// Do nothing in other cases.
|
||||
}break;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private LinkedList<NFTable> getTables() {
|
||||
return new LinkedList<NFTable>(this.tables);
|
||||
}
|
||||
|
||||
public synchronized LinkedList<NFTChain> accessChains(AccessModifier am, LinkedList<NFTChain> newChains, String tableName) {
|
||||
switch (am) {
|
||||
case AccessModifier.ReadAllEntries: {
|
||||
return getChains(tableName);
|
||||
}
|
||||
case AccessModifier.WriteEntries: {
|
||||
this.chains.put(tableName, new LinkedList<NFTChain>(newChains));
|
||||
}break;
|
||||
default: {
|
||||
// Do nothing in other cases.
|
||||
}break;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private LinkedList<NFTChain> getChains(String table) {
|
||||
LinkedList<NFTChain> maybeChains = this.chains.get(table);
|
||||
if (maybeChains != null) {
|
||||
return new LinkedList<NFTChain>(maybeChains);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized LinkedList<NFTRule> accessRules(AccessModifier am, LinkedList<NFTRule> newRules, String chainName) {
|
||||
switch (am) {
|
||||
case AccessModifier.ReadAllEntries: {
|
||||
return getRules(chainName);
|
||||
}
|
||||
case AccessModifier.WriteEntries: {
|
||||
this.rules.put(chainName, new LinkedList<NFTRule>(newRules));
|
||||
}break;
|
||||
default: {
|
||||
// Do nothing in other cases.
|
||||
}break;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private LinkedList<NFTRule> getRules(String chain) {
|
||||
LinkedList<NFTRule> maybeRules = this.rules.get(chain);
|
||||
if (maybeRules != null) {
|
||||
return new LinkedList<NFTRule>(maybeRules);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.12.2023
|
||||
*/
|
||||
package model.src;
|
||||
|
||||
import controller.src.DataProcessing.nftablesProcessing.NFTableInformation;
|
||||
import model.src.ModelConstants.AccessModifier;
|
||||
|
||||
public final class NFTablesModel {
|
||||
private NFTableInformation nfTableInformation = null;
|
||||
|
||||
public NFTablesModel() {}
|
||||
|
||||
public synchronized NFTableInformation accessNFTConfiguration(AccessModifier accessModifier, NFTableInformation nftInf) {
|
||||
switch (accessModifier) {
|
||||
case ReadAllEntries: {
|
||||
return new NFTableInformation(nfTableInformation);
|
||||
}//break;
|
||||
case WriteEntry: {
|
||||
this.nfTableInformation = new NFTableInformation(nftInf);
|
||||
}break;
|
||||
case DeleteAllEntries: {
|
||||
this.nfTableInformation = new NFTableInformation();
|
||||
}break;
|
||||
case DeleteEntry: // Intended fall through
|
||||
default: {
|
||||
}break;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
106
src/main/java/presenter/src/PresenterThread.java
Normal file
106
src/main/java/presenter/src/PresenterThread.java
Normal file
@@ -0,0 +1,106 @@
|
||||
package presenter.src;
|
||||
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import controller.src.events.UpdateViewModel;
|
||||
import controller.src.interfaces.I_ControllerEvent;
|
||||
import model.src.I_Model;
|
||||
import presenter.src.interfaces.I_Presenter;
|
||||
import queues.src.Controller_To_Presenter_Queue;
|
||||
import queues.src.Presenter_To_Controller_Queue;
|
||||
import queues.src.Presenter_To_View_Queue;
|
||||
import queues.src.ViewEventManager_To_Presenter_Queue;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
import viewEventManager.src.events.ZZ_General.ZZ_EmptyViewEvent;
|
||||
import viewEventManager.src.events.ZZ_General.ZZ_FetchCompleted;
|
||||
import viewModel.src.interfaces.I_ViewModel;
|
||||
|
||||
public class PresenterThread extends Thread implements I_Presenter {
|
||||
private I_Model model = null;
|
||||
private I_ViewModel viewModel = null;
|
||||
|
||||
private ViewEventManager_To_Presenter_Queue viewEventManager_To_Presenter_Queue = null;
|
||||
private Presenter_To_Controller_Queue presenter_To_Controller_Queue = null;
|
||||
private Controller_To_Presenter_Queue controller_To_Presenter_Queue = null;
|
||||
private Presenter_To_View_Queue presenter_To_View_Queue = null;
|
||||
|
||||
private Queue<Integer> fetchQueue = new ConcurrentLinkedQueue<Integer>();
|
||||
|
||||
public PresenterThread(
|
||||
I_Model model,
|
||||
I_ViewModel viewModel,
|
||||
ViewEventManager_To_Presenter_Queue viewEventManager_To_Presenter_Queue,
|
||||
Presenter_To_Controller_Queue presenter_To_Controller_Queue,
|
||||
Controller_To_Presenter_Queue controller_To_Presenter_Queue,
|
||||
Presenter_To_View_Queue presenter_To_View_Queue) {
|
||||
|
||||
this.model = model;
|
||||
this.viewModel = viewModel;
|
||||
|
||||
this.viewEventManager_To_Presenter_Queue = viewEventManager_To_Presenter_Queue;
|
||||
this.presenter_To_Controller_Queue = presenter_To_Controller_Queue;
|
||||
this.controller_To_Presenter_Queue = controller_To_Presenter_Queue;
|
||||
this.presenter_To_View_Queue = presenter_To_View_Queue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
I_ViewEvent viewEvent = new ZZ_EmptyViewEvent();
|
||||
|
||||
while (viewEvent.getEventType() != E_ViewEvent.ZZ_ExitApplication) {
|
||||
|
||||
I_ControllerEvent controllerEvent = controller_To_Presenter_Queue.poll();
|
||||
|
||||
handleControllerEvent(controllerEvent);
|
||||
|
||||
viewEvent = viewEventManager_To_Presenter_Queue.poll();
|
||||
|
||||
handleViewEvent(viewEvent);
|
||||
|
||||
if (viewEvent == null) {
|
||||
viewEvent = new ZZ_EmptyViewEvent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleControllerEvent(I_ControllerEvent controllerEvent) {
|
||||
if (controllerEvent != null) {
|
||||
switch (controllerEvent.getEventType()) {
|
||||
case ConnectToServerSuccessful: {
|
||||
|
||||
}break;
|
||||
case UpdateViewModel: {
|
||||
UpdateViewModel event = (UpdateViewModel)controllerEvent;
|
||||
fetchQueue.add(event.fetchID());
|
||||
// TODO update viewModel with data from model
|
||||
}break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleViewEvent(I_ViewEvent viewEvent) {
|
||||
if (viewEvent != null) {
|
||||
switch (viewEvent.getEventType()) {
|
||||
case AA_ConnectToServerButtonGotPressed: {
|
||||
|
||||
}break;
|
||||
case ZZ_FetchCompleted: {
|
||||
ZZ_FetchCompleted event = (ZZ_FetchCompleted)viewEvent;
|
||||
if (event.fetchID() == fetchQueue.peek()) {
|
||||
fetchQueue.poll();
|
||||
} else {
|
||||
// TODO error
|
||||
}
|
||||
}break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10
src/main/java/presenter/src/enums/E_PresenterEvent.java
Normal file
10
src/main/java/presenter/src/enums/E_PresenterEvent.java
Normal file
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 07.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package presenter.src.enums;
|
||||
|
||||
public enum E_PresenterEvent {
|
||||
FetchData
|
||||
}
|
||||
18
src/main/java/presenter/src/events/FetchData.java
Normal file
18
src/main/java/presenter/src/events/FetchData.java
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 07.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package presenter.src.events;
|
||||
|
||||
import presenter.src.enums.E_PresenterEvent;
|
||||
import presenter.src.interfaces.I_PresenterEvent;
|
||||
|
||||
public final record FetchData(int id) implements I_PresenterEvent {
|
||||
|
||||
@Override
|
||||
public E_PresenterEvent getType() {
|
||||
return E_PresenterEvent.FetchData;
|
||||
}
|
||||
|
||||
}
|
||||
7
src/main/java/presenter/src/interfaces/I_Presenter.java
Normal file
7
src/main/java/presenter/src/interfaces/I_Presenter.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package presenter.src.interfaces;
|
||||
|
||||
import gui.src.I_View;
|
||||
|
||||
public interface I_Presenter {
|
||||
public void start();
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package presenter.src.interfaces;
|
||||
|
||||
import presenter.src.enums.E_PresenterEvent;
|
||||
|
||||
public interface I_PresenterEvent {
|
||||
public E_PresenterEvent getType();
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 04.12.2023
|
||||
*/
|
||||
package queues.src;
|
||||
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import data.src.ControllerToView.ControllerToViewData;
|
||||
|
||||
public class ControllerToViewQueue extends ConcurrentLinkedQueue<ControllerToViewData> {
|
||||
private static ControllerToViewQueue controllerToViewQueueInstance;
|
||||
|
||||
public static ControllerToViewQueue getInstance() {
|
||||
if (null == controllerToViewQueueInstance) {
|
||||
controllerToViewQueueInstance = new ControllerToViewQueue();
|
||||
}
|
||||
return controllerToViewQueueInstance;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package queues.src;
|
||||
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import controller.src.interfaces.I_ControllerEvent;
|
||||
|
||||
public class Controller_To_Presenter_Queue extends ConcurrentLinkedQueue<I_ControllerEvent> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package queues.src;
|
||||
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import data.src.Presenter_To_Controller.Presenter_To_Controller_Data;
|
||||
|
||||
public class Presenter_To_Controller_Queue extends ConcurrentLinkedQueue<Presenter_To_Controller_Data>{
|
||||
|
||||
}
|
||||
9
src/main/java/queues/src/Presenter_To_View_Queue.java
Normal file
9
src/main/java/queues/src/Presenter_To_View_Queue.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package queues.src;
|
||||
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
|
||||
import data.src.Presenter_To_View.Presenter_To_View_Data;
|
||||
|
||||
public class Presenter_To_View_Queue extends LinkedBlockingQueue<Presenter_To_View_Data> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package queues.src;
|
||||
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public class ViewEventManager_To_Controller_Queue extends ConcurrentLinkedQueue<I_ViewEvent> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package queues.src;
|
||||
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public class ViewEventManager_To_Presenter_Queue extends ConcurrentLinkedQueue<I_ViewEvent> {
|
||||
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 04.12.2023
|
||||
*/
|
||||
package queues.src;
|
||||
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import data.src.ViewToController.ViewToControllerData;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class ViewToControllerQueue extends ConcurrentLinkedQueue<ViewToControllerData> {
|
||||
private static ViewToControllerQueue viewToControllerQueueInstance;
|
||||
|
||||
public static ViewToControllerQueue getInstance() {
|
||||
if (null == viewToControllerQueueInstance) {
|
||||
viewToControllerQueueInstance = new ViewToControllerQueue();
|
||||
}
|
||||
return viewToControllerQueueInstance;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package queues.src;
|
||||
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public class View_To_ViewEventManager_Queue extends LinkedBlockingQueue<I_ViewEvent>{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package viewEventManager.src;
|
||||
|
||||
import queues.src.ViewEventManager_To_Controller_Queue;
|
||||
import queues.src.ViewEventManager_To_Presenter_Queue;
|
||||
import queues.src.View_To_ViewEventManager_Queue;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
import viewEventManager.src.events.ZZ_General.ZZ_EmptyViewEvent;
|
||||
import viewEventManager.src.interfaces.I_ViewEventManager;
|
||||
|
||||
public final class ViewEventManagerThread extends Thread implements I_ViewEventManager {
|
||||
|
||||
ViewEventManager_To_Controller_Queue viewEventManager_To_Controller_Queue = null;
|
||||
ViewEventManager_To_Presenter_Queue viewEventManager_To_Presenter_Queue = null;
|
||||
View_To_ViewEventManager_Queue view_To_ViewEventManager_Queue = null;
|
||||
|
||||
public ViewEventManagerThread(
|
||||
ViewEventManager_To_Controller_Queue viewEventManager_To_Controller_Queue,
|
||||
ViewEventManager_To_Presenter_Queue viewEventManager_To_Presenter_Queue,
|
||||
View_To_ViewEventManager_Queue view_To_ViewEventManager_Queue) {
|
||||
|
||||
this.viewEventManager_To_Controller_Queue = viewEventManager_To_Controller_Queue;
|
||||
this.viewEventManager_To_Presenter_Queue = viewEventManager_To_Presenter_Queue;
|
||||
this.view_To_ViewEventManager_Queue = view_To_ViewEventManager_Queue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
I_ViewEvent event = new ZZ_EmptyViewEvent();
|
||||
|
||||
while (event.getEventType() != E_ViewEvent.ZZ_ExitApplication) {
|
||||
try {
|
||||
I_ViewEvent newEvent = this.view_To_ViewEventManager_Queue.take();
|
||||
viewEventManager_To_Controller_Queue.add(newEvent);
|
||||
viewEventManager_To_Presenter_Queue.add(newEvent);
|
||||
event = newEvent;
|
||||
} catch (InterruptedException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
*/
|
||||
package viewEventManager.src.data.AH_RuleData;
|
||||
|
||||
public final record AH_RuleData(int id) {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AA_ConnectToServerPanelEvents;
|
||||
|
||||
import viewEventManager.src.data.AA_ConnectToServerData.AA_ConnectToServerData;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AA_ConnectToServerButtonGotPressed(AA_ConnectToServerData connectToServerData) implements I_ViewEvent {
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AA_ConnectToServerButtonGotPressed;
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,17 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AB_StatusPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AB_GoToControllingPanelButtonGotPressed() implements ViewEvent {
|
||||
public final record AB_GoToControllingPanelButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AB_GoToControllingPanelButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AB_GoToControllingPanelButtonGotPressed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AB_StatusPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AB_GoToMonitoringPanelButtonGotPressed() implements ViewEvent {
|
||||
public final record AB_GoToMonitoringPanelButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AB_GoToMonitoringPanelButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AB_GoToMonitoringPanelButtonGotPressed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AB_StatusPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AB_GoToNextPanelButtonGotPressed() implements ViewEvent {
|
||||
public final record AB_GoToNextPanelButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AB_GoToNextPanelButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AB_GoToNextPanelButtonGotPressed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AB_StatusPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AB_GoToPreviousPanelButtonGotPressed() implements ViewEvent {
|
||||
public final record AB_GoToPreviousPanelButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AB_GoToPreviousPanelButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AB_GoToPreviousPanelButtonGotPressed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AC_MonitoringPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AC_ActiveConnectionsPanelWasClicked() implements ViewEvent {
|
||||
public final record AC_ActiveConnectionsPanelWasClicked() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AC_ActiveConnectionsPanelWasClicked;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AC_ActiveConnectionsPanelWasClicked;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AC_MonitoringPanelEvents;
|
||||
|
||||
import viewEventManager.src.data.AC_AlarmData.AC_AlarmData;
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AC_AlarmIDxGotPressed(AC_AlarmData alarmData) implements ViewEvent {
|
||||
public final record AC_AlarmIDxGotPressed(AC_AlarmData alarmData) implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AC_AlarmIDxGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AC_AlarmIDxGotPressed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AC_MonitoringPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AC_LogsButtonGotPressed() implements ViewEvent {
|
||||
public final record AC_LogsButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AC_LogsButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AC_LogsButtonGotPressed;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AC_MonitoringPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AC_RequestsPanelWasClicked() implements ViewEvent {
|
||||
public final record AC_RequestsPanelWasClicked() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AC_RequestsPanelWasClicked;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AC_RequestsPanelWasClicked;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AC_MonitoringPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AC_SystemInformationPanelWasClicked() implements ViewEvent {
|
||||
public final record AC_SystemInformationPanelWasClicked() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AC_SystemInformationPanelWasClicked;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AC_SystemInformationPanelWasClicked;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AC_MonitoringPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AC_TopProtocolsCakePanelWasClicked() implements ViewEvent {
|
||||
public final record AC_TopProtocolsCakePanelWasClicked() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AC_TopProtocolsCakePanelWasClicked;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AC_TopProtocolsCakePanelWasClicked;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AD_ControllingPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AD_AddNewPortButoonGotPressed() implements ViewEvent {
|
||||
public final record AD_AddNewPortButoonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AD_AddNewPortButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AD_AddNewPortButtonGotPressed;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AD_ControllingPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AD_NFTablesButtonGotPressed() implements ViewEvent {
|
||||
public final record AD_NFTablesButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AD_NFTablesButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AD_NFTablesButtonGotPressed;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AE_NFTablesFamilyPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AE_DownloadConfigurationButtonGotPressed() implements ViewEvent {
|
||||
public final record AE_DownloadConfigurationButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AE_DownloadConfigurationButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AE_DownloadConfigurationButtonGotPressed;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AE_NFTablesFamilyPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AE_IPv4FamilyButtonGotPressed() implements ViewEvent {
|
||||
public final record AE_IPv4FamilyButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AE_IPv4FamilyButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AE_IPv4FamilyButtonGotPressed;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AE_NFTablesFamilyPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AE_IPv6FamilyButtonGotPressed() implements ViewEvent {
|
||||
public final record AE_IPv6FamilyButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AE_IPv6FamilyButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AE_IPv6FamilyButtonGotPressed;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AE_NFTablesFamilyPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AE_InetFamilyButtonGotPressed() implements ViewEvent {
|
||||
public final record AE_InetFamilyButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AE_InetFamilyButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AE_InetFamilyButtonGotPressed;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AF_NFTablesTablesPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AF_DownloadTablesButtonGotPressed() implements ViewEvent {
|
||||
public final record AF_DownloadTablesButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AF_DownloadTablesButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AF_DownloadTablesButtonGotPressed;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AF_NFTablesTablesPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AF_IPv4FamilyButtonGotPressed() implements ViewEvent {
|
||||
public final record AF_IPv4FamilyButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AF_IPv4FamilyButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AF_IPv4FamilyButtonGotPressed;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 05.01.2024
|
||||
* @lastChange 05.01.2024
|
||||
* @lastChange 07.01.2024
|
||||
*/
|
||||
package viewEventManager.src.events.AF_NFTablesTablesPanelEvents;
|
||||
|
||||
import viewEventManager.src.events.EViewEvent;
|
||||
import viewEventManager.src.events.ViewEvent;
|
||||
import viewEventManager.src.events.E_ViewEvent;
|
||||
import viewEventManager.src.events.I_ViewEvent;
|
||||
|
||||
public final record AF_IPv6FamilyButtonGotPressed() implements ViewEvent {
|
||||
public final record AF_IPv6FamilyButtonGotPressed() implements I_ViewEvent {
|
||||
|
||||
@Override
|
||||
public EViewEvent getEventType() {
|
||||
return EViewEvent.AF_IPv6FamilyButtonGotPressed;
|
||||
public E_ViewEvent getEventType() {
|
||||
return E_ViewEvent.AF_IPv6FamilyButtonGotPressed;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user