From 43d4ccf1799bbd5236cebc404d4a433469ba005c Mon Sep 17 00:00:00 2001 From: WickedJack99 Date: Sat, 13 Jan 2024 01:05:35 +0100 Subject: [PATCH] Changes --- diagrams/.$Architecture.drawio.bkp | 427 +++++++++++++++++ diagrams/Architecture.drawio | 430 ++++++++++++++++++ src/main/java/connect/src/Client.java | 4 +- src/main/java/connect/src/TLSClient.java | 16 +- .../java/controller/src/ControllerThread.java | 107 +++-- .../DataProcessing/DataProcessorThread.java | 12 +- .../src/enums/E_ControllerEvent.java | 6 + .../src/events/ConnectToServerSuccessful.java | 13 + .../src/events/UpdateViewModel.java | 13 + .../src/interfaces/I_Controller.java | 10 + .../src/interfaces/I_ControllerEvent.java | 7 + .../ConnectToServer.java | 50 -- .../ConnectToServerSuccessful.java | 15 - .../ControllerToViewData.java | 13 - .../ConnectToServer.java | 14 + .../Controller_To_Connection_ClientData.java} | 5 +- .../Controller_To_Presenter_Data.java | 5 + .../Presenter_To_Controller_Data.java | 5 + .../Presenter_To_View_Data.java | 7 + .../ViewToController/ConnectToServerData.java | 55 --- .../EmptyViewToControllerData.java | 19 - .../ViewToControllerData.java | 15 - .../Controller.java => gui/src/I_View.java} | 4 +- src/main/java/gui/src/View.java | 12 - src/main/java/gui/src/ViewThread.java | 57 ++- .../java/gui/src/constants/GUIConstants.java | 18 +- src/main/java/gui/src/frames/MainFrame.java | 94 ++-- .../src/interfaces/I_FetchesViewModel.java | 8 + .../gui/src/interfaces/I_PanelChangeable.java | 7 + .../{Themeable.java => I_Themeable.java} | 2 +- ...ranslateable.java => I_Translateable.java} | 3 +- src/main/java/gui/src/menubar/Menu.java | 5 +- src/main/java/gui/src/menubar/MenuBar.java | 5 +- src/main/java/gui/src/menubar/MenuItem.java | 5 +- .../ConnectToServerButton.java | 51 --- .../ConnectToServerPanel.java | 359 ++++----------- .../TrustStoreButton.java | 32 -- .../ConnectionsTablePanel.java | 15 +- .../BasePanel/ControllingBasePanel.java | 29 ++ .../BasePanel/NFTConfigurationButton.java | 28 ++ .../ControllingPanel/ControllingPanel.java | 110 ++++- .../NFTFamilyPanel/IPv4FamilyButton.java | 35 ++ .../NFTFamilyPanel/IPv6FamilyButton.java | 35 ++ .../NFTFamilyPanel/InetFamilyButton.java | 35 ++ .../NFTFamilyPanel/NFTFamilyPanel.java | 71 +++ .../NFTablesChainPanel.java | 20 +- .../NFTablesRulePanel/NFTablesRulePanel.java | 26 ++ .../NFTablesTablePanel.java | 30 +- .../ConnectionsLineChartPanel.java | 2 +- .../panels/StatusPanel/ControllingButton.java | 16 +- .../panels/StatusPanel/MonitoringButton.java | 14 +- .../src/panels/StatusPanel/NextButton.java | 30 ++ .../panels/StatusPanel/PreviousButton.java | 29 ++ .../src/panels/StatusPanel/StatusPanel.java | 57 ++- src/main/java/main/src/Main.java | 81 +++- src/main/java/model/src/I_Model.java | 14 + src/main/java/model/src/Model.java | 39 +- src/main/java/model/src/ModelConstants.java | 1 + .../java/model/src/ModelRepresentation.java | 29 -- src/main/java/model/src/NFTable/NFTChain.java | 10 + .../java/model/src/NFTable/NFTExpression.java | 10 + src/main/java/model/src/NFTable/NFTRule.java | 5 + src/main/java/model/src/NFTable/NFTable.java | 10 + .../java/model/src/NFTable/NFTablesModel.java | 99 ++++ src/main/java/model/src/NFTablesModel.java | 32 -- .../java/presenter/src/PresenterThread.java | 106 +++++ .../presenter/src/enums/E_PresenterEvent.java | 10 + .../java/presenter/src/events/FetchData.java | 18 + .../presenter/src/interfaces/I_Presenter.java | 7 + .../src/interfaces/I_PresenterEvent.java | 7 + .../queues/src/ControllerToViewQueue.java | 20 - .../src/Controller_To_Presenter_Queue.java | 9 + .../src/Presenter_To_Controller_Queue.java | 9 + .../queues/src/Presenter_To_View_Queue.java | 9 + .../ViewEventManager_To_Controller_Queue.java | 9 + .../ViewEventManager_To_Presenter_Queue.java | 9 + .../queues/src/ViewToControllerQueue.java | 23 - .../src/View_To_ViewEventManager_Queue.java | 9 + .../src/ViewEventManagerThread.java | 44 ++ .../src/data/AH_RuleData/AH_RuleData.java | 10 + .../AA_ConnectToServerButtonGotPressed.java | 16 + ..._GoToControllingPanelButtonGotPressed.java | 12 +- ...B_GoToMonitoringPanelButtonGotPressed.java | 12 +- .../AB_GoToNextPanelButtonGotPressed.java | 12 +- .../AB_GoToPreviousPanelButtonGotPressed.java | 12 +- .../AC_ActiveConnectionsPanelWasClicked.java | 12 +- .../AC_AlarmIDxGotPressed.java | 12 +- .../AC_LogsButtonGotPressed.java | 12 +- .../AC_RequestsPanelWasClicked.java | 12 +- .../AC_SystemInformationPanelWasClicked.java | 12 +- .../AC_TopProtocolsCakePanelWasClicked.java | 12 +- .../AD_AddNewPortButoonGotPressed.java | 12 +- .../AD_NFTablesButtonGotPressed.java | 12 +- ...DownloadConfigurationButtonGotPressed.java | 12 +- .../AE_IPv4FamilyButtonGotPressed.java | 12 +- .../AE_IPv6FamilyButtonGotPressed.java | 12 +- .../AE_InetFamilyButtonGotPressed.java | 12 +- .../AF_DownloadTablesButtonGotPressed.java | 12 +- .../AF_IPv4FamilyButtonGotPressed.java | 12 +- .../AF_IPv6FamilyButtonGotPressed.java | 12 +- .../AF_InetFamilyButtonGotPressed.java | 12 +- .../AF_NewTableButtonGotPressed.java | 12 +- .../AF_TableIDxGotPressed.java | 12 +- .../AG_ApplyChangesButtonGotPressed.java | 12 +- .../AG_ChainIDxGotPressed.java | 12 +- .../AG_DeleteTableButtonGotPressed.java | 12 +- .../AG_DownloadTableButtonGotPressed.java | 12 +- .../AG_NewChainButtonGotPressed.java | 12 +- .../AG_RejectChangesButtonGotPressed.java | 12 +- .../AH_ApplyChangesButtonGotPressed.java | 12 +- .../AH_DeleteChainButtonGotPressed.java | 12 +- .../AH_DownloadChainButtonGotPressed.java | 12 +- .../AH_NewRuleButtonGotPressed.java | 12 +- .../AH_RejectChangesButtonGotPressed.java | 12 +- .../AH_RuleIDxGotPressed.java | 12 +- .../AI_ApplyChangesButtonGotPressed.java | 12 +- .../AI_DeleteRuleButtonGotPressed.java | 12 +- .../AI_DownloadRuleButtonGotPressed.java | 12 +- .../AI_RejectChangesButtonGotPressed.java | 12 +- .../src/events/E_ViewEvent.java | 72 +++ .../src/events/I_ViewEvent.java | 10 + .../events/ZZ_General/ZZ_EmptyViewEvent.java | 13 + .../events/ZZ_General/ZZ_FetchCompleted.java | 13 + .../src/interfaces/I_ViewEventManager.java | 5 + .../src/models/StatusPanel_ViewModel.java | 49 ++ .../java/viewModel/src/models/ViewModel.java | 25 +- 126 files changed, 2719 insertions(+), 1061 deletions(-) create mode 100644 diagrams/.$Architecture.drawio.bkp create mode 100644 diagrams/Architecture.drawio create mode 100644 src/main/java/controller/src/enums/E_ControllerEvent.java create mode 100644 src/main/java/controller/src/events/ConnectToServerSuccessful.java create mode 100644 src/main/java/controller/src/events/UpdateViewModel.java create mode 100644 src/main/java/controller/src/interfaces/I_Controller.java create mode 100644 src/main/java/controller/src/interfaces/I_ControllerEvent.java delete mode 100644 src/main/java/data/src/ControllerToConnectionClient/ConnectToServer.java delete mode 100644 src/main/java/data/src/ControllerToView/ConnectToServerSuccessful.java delete mode 100644 src/main/java/data/src/ControllerToView/ControllerToViewData.java create mode 100644 src/main/java/data/src/Controller_To_ConnectionClient/ConnectToServer.java rename src/main/java/data/src/{ControllerToConnectionClient/ControllerToConnectionClientData.java => Controller_To_ConnectionClient/Controller_To_Connection_ClientData.java} (60%) create mode 100644 src/main/java/data/src/Controller_To_Presenter/Controller_To_Presenter_Data.java create mode 100644 src/main/java/data/src/Presenter_To_Controller/Presenter_To_Controller_Data.java create mode 100644 src/main/java/data/src/Presenter_To_View/Presenter_To_View_Data.java delete mode 100644 src/main/java/data/src/ViewToController/ConnectToServerData.java delete mode 100644 src/main/java/data/src/ViewToController/EmptyViewToControllerData.java delete mode 100644 src/main/java/data/src/ViewToController/ViewToControllerData.java rename src/main/java/{controller/src/Controller.java => gui/src/I_View.java} (59%) delete mode 100644 src/main/java/gui/src/View.java create mode 100644 src/main/java/gui/src/interfaces/I_FetchesViewModel.java create mode 100644 src/main/java/gui/src/interfaces/I_PanelChangeable.java rename src/main/java/gui/src/interfaces/{Themeable.java => I_Themeable.java} (85%) rename src/main/java/gui/src/interfaces/{Translateable.java => I_Translateable.java} (75%) delete mode 100644 src/main/java/gui/src/panels/ConnectToServerPanel/ConnectToServerButton.java delete mode 100644 src/main/java/gui/src/panels/ConnectToServerPanel/TrustStoreButton.java create mode 100644 src/main/java/gui/src/panels/ControllingPanel/BasePanel/ControllingBasePanel.java create mode 100644 src/main/java/gui/src/panels/ControllingPanel/BasePanel/NFTConfigurationButton.java create mode 100644 src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/IPv4FamilyButton.java create mode 100644 src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/IPv6FamilyButton.java create mode 100644 src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/InetFamilyButton.java create mode 100644 src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/NFTFamilyPanel.java create mode 100644 src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesRulePanel/NFTablesRulePanel.java create mode 100644 src/main/java/gui/src/panels/StatusPanel/NextButton.java create mode 100644 src/main/java/gui/src/panels/StatusPanel/PreviousButton.java create mode 100644 src/main/java/model/src/I_Model.java delete mode 100644 src/main/java/model/src/ModelRepresentation.java create mode 100644 src/main/java/model/src/NFTable/NFTChain.java create mode 100644 src/main/java/model/src/NFTable/NFTExpression.java create mode 100644 src/main/java/model/src/NFTable/NFTRule.java create mode 100644 src/main/java/model/src/NFTable/NFTable.java create mode 100644 src/main/java/model/src/NFTable/NFTablesModel.java delete mode 100644 src/main/java/model/src/NFTablesModel.java create mode 100644 src/main/java/presenter/src/PresenterThread.java create mode 100644 src/main/java/presenter/src/enums/E_PresenterEvent.java create mode 100644 src/main/java/presenter/src/events/FetchData.java create mode 100644 src/main/java/presenter/src/interfaces/I_Presenter.java create mode 100644 src/main/java/presenter/src/interfaces/I_PresenterEvent.java delete mode 100644 src/main/java/queues/src/ControllerToViewQueue.java create mode 100644 src/main/java/queues/src/Controller_To_Presenter_Queue.java create mode 100644 src/main/java/queues/src/Presenter_To_Controller_Queue.java create mode 100644 src/main/java/queues/src/Presenter_To_View_Queue.java create mode 100644 src/main/java/queues/src/ViewEventManager_To_Controller_Queue.java create mode 100644 src/main/java/queues/src/ViewEventManager_To_Presenter_Queue.java delete mode 100644 src/main/java/queues/src/ViewToControllerQueue.java create mode 100644 src/main/java/queues/src/View_To_ViewEventManager_Queue.java create mode 100644 src/main/java/viewEventManager/src/ViewEventManagerThread.java create mode 100644 src/main/java/viewEventManager/src/data/AH_RuleData/AH_RuleData.java create mode 100644 src/main/java/viewEventManager/src/events/AA_ConnectToServerPanelEvents/AA_ConnectToServerButtonGotPressed.java create mode 100644 src/main/java/viewEventManager/src/events/E_ViewEvent.java create mode 100644 src/main/java/viewEventManager/src/events/I_ViewEvent.java create mode 100644 src/main/java/viewEventManager/src/events/ZZ_General/ZZ_EmptyViewEvent.java create mode 100644 src/main/java/viewEventManager/src/events/ZZ_General/ZZ_FetchCompleted.java create mode 100644 src/main/java/viewEventManager/src/interfaces/I_ViewEventManager.java create mode 100644 src/main/java/viewModel/src/models/StatusPanel_ViewModel.java diff --git a/diagrams/.$Architecture.drawio.bkp b/diagrams/.$Architecture.drawio.bkp new file mode 100644 index 0000000..51e454e --- /dev/null +++ b/diagrams/.$Architecture.drawio.bkp @@ -0,0 +1,427 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/diagrams/Architecture.drawio b/diagrams/Architecture.drawio new file mode 100644 index 0000000..c380b37 --- /dev/null +++ b/diagrams/Architecture.drawio @@ -0,0 +1,430 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/connect/src/Client.java b/src/main/java/connect/src/Client.java index 0a4d701..edeeba5 100644 --- a/src/main/java/connect/src/Client.java +++ b/src/main/java/connect/src/Client.java @@ -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(); diff --git a/src/main/java/connect/src/TLSClient.java b/src/main/java/connect/src/TLSClient.java index a5e4d6e..991a139 100644 --- a/src/main/java/connect/src/TLSClient.java +++ b/src/main/java/connect/src/TLSClient.java @@ -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()); diff --git a/src/main/java/controller/src/ControllerThread.java b/src/main/java/controller/src/ControllerThread.java index 5ccbc13..281644d 100644 --- a/src/main/java/controller/src/ControllerThread.java +++ b/src/main/java/controller/src/ControllerThread.java @@ -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(); diff --git a/src/main/java/controller/src/DataProcessing/DataProcessorThread.java b/src/main/java/controller/src/DataProcessing/DataProcessorThread.java index 6ff93b0..199a771 100644 --- a/src/main/java/controller/src/DataProcessing/DataProcessorThread.java +++ b/src/main/java/controller/src/DataProcessing/DataProcessorThread.java @@ -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: { diff --git a/src/main/java/controller/src/enums/E_ControllerEvent.java b/src/main/java/controller/src/enums/E_ControllerEvent.java new file mode 100644 index 0000000..656b9c2 --- /dev/null +++ b/src/main/java/controller/src/enums/E_ControllerEvent.java @@ -0,0 +1,6 @@ +package controller.src.enums; + +public enum E_ControllerEvent { + ConnectToServerSuccessful, + UpdateViewModel, +} diff --git a/src/main/java/controller/src/events/ConnectToServerSuccessful.java b/src/main/java/controller/src/events/ConnectToServerSuccessful.java new file mode 100644 index 0000000..7edb9d2 --- /dev/null +++ b/src/main/java/controller/src/events/ConnectToServerSuccessful.java @@ -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; + } + +} diff --git a/src/main/java/controller/src/events/UpdateViewModel.java b/src/main/java/controller/src/events/UpdateViewModel.java new file mode 100644 index 0000000..7070431 --- /dev/null +++ b/src/main/java/controller/src/events/UpdateViewModel.java @@ -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; + } + +} diff --git a/src/main/java/controller/src/interfaces/I_Controller.java b/src/main/java/controller/src/interfaces/I_Controller.java new file mode 100644 index 0000000..0aa567e --- /dev/null +++ b/src/main/java/controller/src/interfaces/I_Controller.java @@ -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(); +} diff --git a/src/main/java/controller/src/interfaces/I_ControllerEvent.java b/src/main/java/controller/src/interfaces/I_ControllerEvent.java new file mode 100644 index 0000000..4ea4c8d --- /dev/null +++ b/src/main/java/controller/src/interfaces/I_ControllerEvent.java @@ -0,0 +1,7 @@ +package controller.src.interfaces; + +import controller.src.enums.E_ControllerEvent; + +public interface I_ControllerEvent { + public E_ControllerEvent getEventType(); +} diff --git a/src/main/java/data/src/ControllerToConnectionClient/ConnectToServer.java b/src/main/java/data/src/ControllerToConnectionClient/ConnectToServer.java deleted file mode 100644 index 8b06b47..0000000 --- a/src/main/java/data/src/ControllerToConnectionClient/ConnectToServer.java +++ /dev/null @@ -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; - } -} diff --git a/src/main/java/data/src/ControllerToView/ConnectToServerSuccessful.java b/src/main/java/data/src/ControllerToView/ConnectToServerSuccessful.java deleted file mode 100644 index b439726..0000000 --- a/src/main/java/data/src/ControllerToView/ConnectToServerSuccessful.java +++ /dev/null @@ -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; - } - -} diff --git a/src/main/java/data/src/ControllerToView/ControllerToViewData.java b/src/main/java/data/src/ControllerToView/ControllerToViewData.java deleted file mode 100644 index 8dcddda..0000000 --- a/src/main/java/data/src/ControllerToView/ControllerToViewData.java +++ /dev/null @@ -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(); -} diff --git a/src/main/java/data/src/Controller_To_ConnectionClient/ConnectToServer.java b/src/main/java/data/src/Controller_To_ConnectionClient/ConnectToServer.java new file mode 100644 index 0000000..f46146e --- /dev/null +++ b/src/main/java/data/src/Controller_To_ConnectionClient/ConnectToServer.java @@ -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; + } +} diff --git a/src/main/java/data/src/ControllerToConnectionClient/ControllerToConnectionClientData.java b/src/main/java/data/src/Controller_To_ConnectionClient/Controller_To_Connection_ClientData.java similarity index 60% rename from src/main/java/data/src/ControllerToConnectionClient/ControllerToConnectionClientData.java rename to src/main/java/data/src/Controller_To_ConnectionClient/Controller_To_Connection_ClientData.java index 77d29a6..6720de4 100644 --- a/src/main/java/data/src/ControllerToConnectionClient/ControllerToConnectionClientData.java +++ b/src/main/java/data/src/Controller_To_ConnectionClient/Controller_To_Connection_ClientData.java @@ -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, }; diff --git a/src/main/java/data/src/Controller_To_Presenter/Controller_To_Presenter_Data.java b/src/main/java/data/src/Controller_To_Presenter/Controller_To_Presenter_Data.java new file mode 100644 index 0000000..b29d164 --- /dev/null +++ b/src/main/java/data/src/Controller_To_Presenter/Controller_To_Presenter_Data.java @@ -0,0 +1,5 @@ +package data.src.Controller_To_Presenter; + +public final record Controller_To_Presenter_Data() { + +} diff --git a/src/main/java/data/src/Presenter_To_Controller/Presenter_To_Controller_Data.java b/src/main/java/data/src/Presenter_To_Controller/Presenter_To_Controller_Data.java new file mode 100644 index 0000000..e408043 --- /dev/null +++ b/src/main/java/data/src/Presenter_To_Controller/Presenter_To_Controller_Data.java @@ -0,0 +1,5 @@ +package data.src.Presenter_To_Controller; + +public final record Presenter_To_Controller_Data() { + +} diff --git a/src/main/java/data/src/Presenter_To_View/Presenter_To_View_Data.java b/src/main/java/data/src/Presenter_To_View/Presenter_To_View_Data.java new file mode 100644 index 0000000..b3e431f --- /dev/null +++ b/src/main/java/data/src/Presenter_To_View/Presenter_To_View_Data.java @@ -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) { + +} diff --git a/src/main/java/data/src/ViewToController/ConnectToServerData.java b/src/main/java/data/src/ViewToController/ConnectToServerData.java deleted file mode 100644 index b299458..0000000 --- a/src/main/java/data/src/ViewToController/ConnectToServerData.java +++ /dev/null @@ -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; - } -} diff --git a/src/main/java/data/src/ViewToController/EmptyViewToControllerData.java b/src/main/java/data/src/ViewToController/EmptyViewToControllerData.java deleted file mode 100644 index 0ad8004..0000000 --- a/src/main/java/data/src/ViewToController/EmptyViewToControllerData.java +++ /dev/null @@ -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; - } - -} diff --git a/src/main/java/data/src/ViewToController/ViewToControllerData.java b/src/main/java/data/src/ViewToController/ViewToControllerData.java deleted file mode 100644 index 47bdca2..0000000 --- a/src/main/java/data/src/ViewToController/ViewToControllerData.java +++ /dev/null @@ -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(); -} diff --git a/src/main/java/controller/src/Controller.java b/src/main/java/gui/src/I_View.java similarity index 59% rename from src/main/java/controller/src/Controller.java rename to src/main/java/gui/src/I_View.java index 2843d42..52cca68 100644 --- a/src/main/java/controller/src/Controller.java +++ b/src/main/java/gui/src/I_View.java @@ -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(); } diff --git a/src/main/java/gui/src/View.java b/src/main/java/gui/src/View.java deleted file mode 100644 index 30a82d3..0000000 --- a/src/main/java/gui/src/View.java +++ /dev/null @@ -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); -} diff --git a/src/main/java/gui/src/ViewThread.java b/src/main/java/gui/src/ViewThread.java index fca385d..03ea240 100644 --- a/src/main/java/gui/src/ViewThread.java +++ b/src/main/java/gui/src/ViewThread.java @@ -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); - } } diff --git a/src/main/java/gui/src/constants/GUIConstants.java b/src/main/java/gui/src/constants/GUIConstants.java index f755877..b953e3a 100644 --- a/src/main/java/gui/src/constants/GUIConstants.java +++ b/src/main/java/gui/src/constants/GUIConstants.java @@ -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, diff --git a/src/main/java/gui/src/frames/MainFrame.java b/src/main/java/gui/src/frames/MainFrame.java index 6dd6f90..58b0249 100644 --- a/src/main/java/gui/src/frames/MainFrame.java +++ b/src/main/java/gui/src/frames/MainFrame.java @@ -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; } } } diff --git a/src/main/java/gui/src/interfaces/I_FetchesViewModel.java b/src/main/java/gui/src/interfaces/I_FetchesViewModel.java new file mode 100644 index 0000000..edec605 --- /dev/null +++ b/src/main/java/gui/src/interfaces/I_FetchesViewModel.java @@ -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(); +} diff --git a/src/main/java/gui/src/interfaces/I_PanelChangeable.java b/src/main/java/gui/src/interfaces/I_PanelChangeable.java new file mode 100644 index 0000000..048c670 --- /dev/null +++ b/src/main/java/gui/src/interfaces/I_PanelChangeable.java @@ -0,0 +1,7 @@ +package gui.src.interfaces; + +import gui.src.constants.GUIConstants.Panel; + +public interface I_PanelChangeable { + public void setPanel(Panel kindOfPanel); +} diff --git a/src/main/java/gui/src/interfaces/Themeable.java b/src/main/java/gui/src/interfaces/I_Themeable.java similarity index 85% rename from src/main/java/gui/src/interfaces/Themeable.java rename to src/main/java/gui/src/interfaces/I_Themeable.java index 8f5882e..c931b26 100644 --- a/src/main/java/gui/src/interfaces/Themeable.java +++ b/src/main/java/gui/src/interfaces/I_Themeable.java @@ -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); } diff --git a/src/main/java/gui/src/interfaces/Translateable.java b/src/main/java/gui/src/interfaces/I_Translateable.java similarity index 75% rename from src/main/java/gui/src/interfaces/Translateable.java rename to src/main/java/gui/src/interfaces/I_Translateable.java index 2ea9ca0..1a14fa9 100644 --- a/src/main/java/gui/src/interfaces/Translateable.java +++ b/src/main/java/gui/src/interfaces/I_Translateable.java @@ -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); } diff --git a/src/main/java/gui/src/menubar/Menu.java b/src/main/java/gui/src/menubar/Menu.java index 0edcc75..9c0a121 100644 --- a/src/main/java/gui/src/menubar/Menu.java +++ b/src/main/java/gui/src/menubar/Menu.java @@ -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; /** diff --git a/src/main/java/gui/src/menubar/MenuBar.java b/src/main/java/gui/src/menubar/MenuBar.java index 42ea59b..58d53a9 100644 --- a/src/main/java/gui/src/menubar/MenuBar.java +++ b/src/main/java/gui/src/menubar/MenuBar.java @@ -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; diff --git a/src/main/java/gui/src/menubar/MenuItem.java b/src/main/java/gui/src/menubar/MenuItem.java index c36ae22..b30dccd 100644 --- a/src/main/java/gui/src/menubar/MenuItem.java +++ b/src/main/java/gui/src/menubar/MenuItem.java @@ -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; /** diff --git a/src/main/java/gui/src/panels/ConnectToServerPanel/ConnectToServerButton.java b/src/main/java/gui/src/panels/ConnectToServerPanel/ConnectToServerButton.java deleted file mode 100644 index be6c64a..0000000 --- a/src/main/java/gui/src/panels/ConnectToServerPanel/ConnectToServerButton.java +++ /dev/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 - )); - } -} diff --git a/src/main/java/gui/src/panels/ConnectToServerPanel/ConnectToServerPanel.java b/src/main/java/gui/src/panels/ConnectToServerPanel/ConnectToServerPanel.java index 5113dfa..c2bc222 100644 --- a/src/main/java/gui/src/panels/ConnectToServerPanel/ConnectToServerPanel.java +++ b/src/main/java/gui/src/panels/ConnectToServerPanel/ConnectToServerPanel.java @@ -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()); } } diff --git a/src/main/java/gui/src/panels/ConnectToServerPanel/TrustStoreButton.java b/src/main/java/gui/src/panels/ConnectToServerPanel/TrustStoreButton.java deleted file mode 100644 index d75548b..0000000 --- a/src/main/java/gui/src/panels/ConnectToServerPanel/TrustStoreButton.java +++ /dev/null @@ -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()); - } - } -} diff --git a/src/main/java/gui/src/panels/ConnectionsTablePanel/ConnectionsTablePanel.java b/src/main/java/gui/src/panels/ConnectionsTablePanel/ConnectionsTablePanel.java index 2ceab18..11527dc 100644 --- a/src/main/java/gui/src/panels/ConnectionsTablePanel/ConnectionsTablePanel.java +++ b/src/main/java/gui/src/panels/ConnectionsTablePanel/ConnectionsTablePanel.java @@ -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'"); + } } diff --git a/src/main/java/gui/src/panels/ControllingPanel/BasePanel/ControllingBasePanel.java b/src/main/java/gui/src/panels/ControllingPanel/BasePanel/ControllingBasePanel.java new file mode 100644 index 0000000..a37dcc8 --- /dev/null +++ b/src/main/java/gui/src/panels/ControllingPanel/BasePanel/ControllingBasePanel.java @@ -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; + } +} diff --git a/src/main/java/gui/src/panels/ControllingPanel/BasePanel/NFTConfigurationButton.java b/src/main/java/gui/src/panels/ControllingPanel/BasePanel/NFTConfigurationButton.java new file mode 100644 index 0000000..589df3c --- /dev/null +++ b/src/main/java/gui/src/panels/ControllingPanel/BasePanel/NFTConfigurationButton.java @@ -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); + } + +} diff --git a/src/main/java/gui/src/panels/ControllingPanel/ControllingPanel.java b/src/main/java/gui/src/panels/ControllingPanel/ControllingPanel.java index 594a221..e08b397 100644 --- a/src/main/java/gui/src/panels/ControllingPanel/ControllingPanel.java +++ b/src/main/java/gui/src/panels/ControllingPanel/ControllingPanel.java @@ -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 previousPanelStack = new ArrayDeque(); + private Deque nextPanelStack = new ArrayDeque(); + 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>> nftInformation = nftConfig.getNFTableInformation().getTables(); + + LinkedList tables = new LinkedList(); + + HashMap chains = new HashMap(); + + HashMap rules = new HashMap(); + + 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); + } */ } diff --git a/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/IPv4FamilyButton.java b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/IPv4FamilyButton.java new file mode 100644 index 0000000..266b6dd --- /dev/null +++ b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/IPv4FamilyButton.java @@ -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'"); + } +} diff --git a/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/IPv6FamilyButton.java b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/IPv6FamilyButton.java new file mode 100644 index 0000000..66efa13 --- /dev/null +++ b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/IPv6FamilyButton.java @@ -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'"); + } +} diff --git a/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/InetFamilyButton.java b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/InetFamilyButton.java new file mode 100644 index 0000000..f1178f7 --- /dev/null +++ b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/InetFamilyButton.java @@ -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'"); + } +} diff --git a/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/NFTFamilyPanel.java b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/NFTFamilyPanel.java new file mode 100644 index 0000000..7341a39 --- /dev/null +++ b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTFamilyPanel/NFTFamilyPanel.java @@ -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; + } +} diff --git a/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesChainPanel/NFTablesChainPanel.java b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesChainPanel/NFTablesChainPanel.java index 879a989..b5e3fa4 100644 --- a/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesChainPanel/NFTablesChainPanel.java +++ b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesChainPanel/NFTablesChainPanel.java @@ -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; + } } diff --git a/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesRulePanel/NFTablesRulePanel.java b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesRulePanel/NFTablesRulePanel.java new file mode 100644 index 0000000..56bf857 --- /dev/null +++ b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesRulePanel/NFTablesRulePanel.java @@ -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; + } +} diff --git a/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesTablePanel/NFTablesTablePanel.java b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesTablePanel/NFTablesTablePanel.java index 1be0caf..b1bcfc5 100644 --- a/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesTablePanel/NFTablesTablePanel.java +++ b/src/main/java/gui/src/panels/ControllingPanel/NFTable/NFTablesTablePanel/NFTablesTablePanel.java @@ -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 tables) { + tableListPanel = new JPanel(); + tableListPanel.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + + if (tables != null) { + + for (String table : tables) { + //tableListPanel.add(); + } + } else { + //tableListPanel.add(); + } + + } } diff --git a/src/main/java/gui/src/panels/MonitoringPanel/ConnectionsLineChart/ConnectionsLineChartPanel.java b/src/main/java/gui/src/panels/MonitoringPanel/ConnectionsLineChart/ConnectionsLineChartPanel.java index c1a9e7d..ead3b8a 100644 --- a/src/main/java/gui/src/panels/MonitoringPanel/ConnectionsLineChart/ConnectionsLineChartPanel.java +++ b/src/main/java/gui/src/panels/MonitoringPanel/ConnectionsLineChart/ConnectionsLineChartPanel.java @@ -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); } }); } diff --git a/src/main/java/gui/src/panels/StatusPanel/ControllingButton.java b/src/main/java/gui/src/panels/StatusPanel/ControllingButton.java index 30f7af9..631babd 100644 --- a/src/main/java/gui/src/panels/StatusPanel/ControllingButton.java +++ b/src/main/java/gui/src/panels/StatusPanel/ControllingButton.java @@ -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); } } diff --git a/src/main/java/gui/src/panels/StatusPanel/MonitoringButton.java b/src/main/java/gui/src/panels/StatusPanel/MonitoringButton.java index ca6b62e..eb02f51 100644 --- a/src/main/java/gui/src/panels/StatusPanel/MonitoringButton.java +++ b/src/main/java/gui/src/panels/StatusPanel/MonitoringButton.java @@ -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); } } diff --git a/src/main/java/gui/src/panels/StatusPanel/NextButton.java b/src/main/java/gui/src/panels/StatusPanel/NextButton.java new file mode 100644 index 0000000..957dfd8 --- /dev/null +++ b/src/main/java/gui/src/panels/StatusPanel/NextButton.java @@ -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(); + } + +} diff --git a/src/main/java/gui/src/panels/StatusPanel/PreviousButton.java b/src/main/java/gui/src/panels/StatusPanel/PreviousButton.java new file mode 100644 index 0000000..6c90fa7 --- /dev/null +++ b/src/main/java/gui/src/panels/StatusPanel/PreviousButton.java @@ -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(); + } +} diff --git a/src/main/java/gui/src/panels/StatusPanel/StatusPanel.java b/src/main/java/gui/src/panels/StatusPanel/StatusPanel.java index 3f054bd..4fbb7d6 100644 --- a/src/main/java/gui/src/panels/StatusPanel/StatusPanel.java +++ b/src/main/java/gui/src/panels/StatusPanel/StatusPanel.java @@ -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); + } } diff --git a/src/main/java/main/src/Main.java b/src/main/java/main/src/Main.java index ec0ea87..f910141 100644 --- a/src/main/java/main/src/Main.java +++ b/src/main/java/main/src/Main.java @@ -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(); } } \ No newline at end of file diff --git a/src/main/java/model/src/I_Model.java b/src/main/java/model/src/I_Model.java new file mode 100644 index 0000000..c3114d2 --- /dev/null +++ b/src/main/java/model/src/I_Model.java @@ -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(); +} diff --git a/src/main/java/model/src/Model.java b/src/main/java/model/src/Model.java index 463a9cd..033d152 100644 --- a/src/main/java/model/src/Model.java +++ b/src/main/java/model/src/Model.java @@ -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; + } } diff --git a/src/main/java/model/src/ModelConstants.java b/src/main/java/model/src/ModelConstants.java index 3157ba8..3cef736 100644 --- a/src/main/java/model/src/ModelConstants.java +++ b/src/main/java/model/src/ModelConstants.java @@ -4,6 +4,7 @@ public class ModelConstants { public enum AccessModifier { ReadAllEntries, WriteEntry, + WriteEntries, DeleteEntry, DeleteAllEntries } diff --git a/src/main/java/model/src/ModelRepresentation.java b/src/main/java/model/src/ModelRepresentation.java deleted file mode 100644 index 5d5de91..0000000 --- a/src/main/java/model/src/ModelRepresentation.java +++ /dev/null @@ -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; - } -} diff --git a/src/main/java/model/src/NFTable/NFTChain.java b/src/main/java/model/src/NFTable/NFTChain.java new file mode 100644 index 0000000..228c727 --- /dev/null +++ b/src/main/java/model/src/NFTable/NFTChain.java @@ -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) { + +} diff --git a/src/main/java/model/src/NFTable/NFTExpression.java b/src/main/java/model/src/NFTable/NFTExpression.java new file mode 100644 index 0000000..b1e89ab --- /dev/null +++ b/src/main/java/model/src/NFTable/NFTExpression.java @@ -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) { + +} diff --git a/src/main/java/model/src/NFTable/NFTRule.java b/src/main/java/model/src/NFTable/NFTRule.java new file mode 100644 index 0000000..04181ca --- /dev/null +++ b/src/main/java/model/src/NFTable/NFTRule.java @@ -0,0 +1,5 @@ +package model.src.NFTable; + +public record NFTRule(String family, String tableName, String chainName, int handle, NFTExpression expr) { + +} diff --git a/src/main/java/model/src/NFTable/NFTable.java b/src/main/java/model/src/NFTable/NFTable.java new file mode 100644 index 0000000..1fd859a --- /dev/null +++ b/src/main/java/model/src/NFTable/NFTable.java @@ -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) { + +} diff --git a/src/main/java/model/src/NFTable/NFTablesModel.java b/src/main/java/model/src/NFTable/NFTablesModel.java new file mode 100644 index 0000000..6ca3a1a --- /dev/null +++ b/src/main/java/model/src/NFTable/NFTablesModel.java @@ -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 tables = null; + private HashMap> chains = null; + private HashMap> rules = null; + + private NFTablesModel() { + this.tables = new LinkedList(); + this.chains = new HashMap>(); + this.rules = new HashMap>(); + } + + public static synchronized NFTablesModel getInstance() { + if (instance == null) { + instance = new NFTablesModel(); + } + return instance; + } + + public synchronized LinkedList accessTables(AccessModifier am, LinkedList newTables) { + switch (am) { + case AccessModifier.ReadAllEntries: { + return getTables(); + } + case AccessModifier.WriteEntries: { + this.tables = new LinkedList(newTables); + }break; + default: { + // Do nothing in other cases. + }break; + } + return null; + } + + private LinkedList getTables() { + return new LinkedList(this.tables); + } + + public synchronized LinkedList accessChains(AccessModifier am, LinkedList newChains, String tableName) { + switch (am) { + case AccessModifier.ReadAllEntries: { + return getChains(tableName); + } + case AccessModifier.WriteEntries: { + this.chains.put(tableName, new LinkedList(newChains)); + }break; + default: { + // Do nothing in other cases. + }break; + } + return null; + } + + private LinkedList getChains(String table) { + LinkedList maybeChains = this.chains.get(table); + if (maybeChains != null) { + return new LinkedList(maybeChains); + } else { + return null; + } + } + + public synchronized LinkedList accessRules(AccessModifier am, LinkedList newRules, String chainName) { + switch (am) { + case AccessModifier.ReadAllEntries: { + return getRules(chainName); + } + case AccessModifier.WriteEntries: { + this.rules.put(chainName, new LinkedList(newRules)); + }break; + default: { + // Do nothing in other cases. + }break; + } + return null; + } + + private LinkedList getRules(String chain) { + LinkedList maybeRules = this.rules.get(chain); + if (maybeRules != null) { + return new LinkedList(maybeRules); + } else { + return null; + } + } +} diff --git a/src/main/java/model/src/NFTablesModel.java b/src/main/java/model/src/NFTablesModel.java deleted file mode 100644 index e20dfc8..0000000 --- a/src/main/java/model/src/NFTablesModel.java +++ /dev/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; - } -} diff --git a/src/main/java/presenter/src/PresenterThread.java b/src/main/java/presenter/src/PresenterThread.java new file mode 100644 index 0000000..abda07d --- /dev/null +++ b/src/main/java/presenter/src/PresenterThread.java @@ -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 fetchQueue = new ConcurrentLinkedQueue(); + + 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; + } + } + } +} diff --git a/src/main/java/presenter/src/enums/E_PresenterEvent.java b/src/main/java/presenter/src/enums/E_PresenterEvent.java new file mode 100644 index 0000000..c08efb7 --- /dev/null +++ b/src/main/java/presenter/src/enums/E_PresenterEvent.java @@ -0,0 +1,10 @@ +/** + * @author Aaron Moser + * @date 07.01.2024 + * @lastChange 07.01.2024 + */ +package presenter.src.enums; + +public enum E_PresenterEvent { + FetchData +} diff --git a/src/main/java/presenter/src/events/FetchData.java b/src/main/java/presenter/src/events/FetchData.java new file mode 100644 index 0000000..3d11b38 --- /dev/null +++ b/src/main/java/presenter/src/events/FetchData.java @@ -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; + } + +} diff --git a/src/main/java/presenter/src/interfaces/I_Presenter.java b/src/main/java/presenter/src/interfaces/I_Presenter.java new file mode 100644 index 0000000..19ec2fc --- /dev/null +++ b/src/main/java/presenter/src/interfaces/I_Presenter.java @@ -0,0 +1,7 @@ +package presenter.src.interfaces; + +import gui.src.I_View; + +public interface I_Presenter { + public void start(); +} diff --git a/src/main/java/presenter/src/interfaces/I_PresenterEvent.java b/src/main/java/presenter/src/interfaces/I_PresenterEvent.java new file mode 100644 index 0000000..1faf9be --- /dev/null +++ b/src/main/java/presenter/src/interfaces/I_PresenterEvent.java @@ -0,0 +1,7 @@ +package presenter.src.interfaces; + +import presenter.src.enums.E_PresenterEvent; + +public interface I_PresenterEvent { + public E_PresenterEvent getType(); +} diff --git a/src/main/java/queues/src/ControllerToViewQueue.java b/src/main/java/queues/src/ControllerToViewQueue.java deleted file mode 100644 index aff54f5..0000000 --- a/src/main/java/queues/src/ControllerToViewQueue.java +++ /dev/null @@ -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 { - private static ControllerToViewQueue controllerToViewQueueInstance; - - public static ControllerToViewQueue getInstance() { - if (null == controllerToViewQueueInstance) { - controllerToViewQueueInstance = new ControllerToViewQueue(); - } - return controllerToViewQueueInstance; - } -} diff --git a/src/main/java/queues/src/Controller_To_Presenter_Queue.java b/src/main/java/queues/src/Controller_To_Presenter_Queue.java new file mode 100644 index 0000000..4105912 --- /dev/null +++ b/src/main/java/queues/src/Controller_To_Presenter_Queue.java @@ -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 { + +} diff --git a/src/main/java/queues/src/Presenter_To_Controller_Queue.java b/src/main/java/queues/src/Presenter_To_Controller_Queue.java new file mode 100644 index 0000000..36fbb23 --- /dev/null +++ b/src/main/java/queues/src/Presenter_To_Controller_Queue.java @@ -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{ + +} diff --git a/src/main/java/queues/src/Presenter_To_View_Queue.java b/src/main/java/queues/src/Presenter_To_View_Queue.java new file mode 100644 index 0000000..e88821d --- /dev/null +++ b/src/main/java/queues/src/Presenter_To_View_Queue.java @@ -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 { + +} diff --git a/src/main/java/queues/src/ViewEventManager_To_Controller_Queue.java b/src/main/java/queues/src/ViewEventManager_To_Controller_Queue.java new file mode 100644 index 0000000..3ab4206 --- /dev/null +++ b/src/main/java/queues/src/ViewEventManager_To_Controller_Queue.java @@ -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 { + +} diff --git a/src/main/java/queues/src/ViewEventManager_To_Presenter_Queue.java b/src/main/java/queues/src/ViewEventManager_To_Presenter_Queue.java new file mode 100644 index 0000000..b270b33 --- /dev/null +++ b/src/main/java/queues/src/ViewEventManager_To_Presenter_Queue.java @@ -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 { + +} diff --git a/src/main/java/queues/src/ViewToControllerQueue.java b/src/main/java/queues/src/ViewToControllerQueue.java deleted file mode 100644 index cece276..0000000 --- a/src/main/java/queues/src/ViewToControllerQueue.java +++ /dev/null @@ -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 { - private static ViewToControllerQueue viewToControllerQueueInstance; - - public static ViewToControllerQueue getInstance() { - if (null == viewToControllerQueueInstance) { - viewToControllerQueueInstance = new ViewToControllerQueue(); - } - return viewToControllerQueueInstance; - } -} diff --git a/src/main/java/queues/src/View_To_ViewEventManager_Queue.java b/src/main/java/queues/src/View_To_ViewEventManager_Queue.java new file mode 100644 index 0000000..37b5d93 --- /dev/null +++ b/src/main/java/queues/src/View_To_ViewEventManager_Queue.java @@ -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{ + +} diff --git a/src/main/java/viewEventManager/src/ViewEventManagerThread.java b/src/main/java/viewEventManager/src/ViewEventManagerThread.java new file mode 100644 index 0000000..6c10780 --- /dev/null +++ b/src/main/java/viewEventManager/src/ViewEventManagerThread.java @@ -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(); + } + + } + } +} diff --git a/src/main/java/viewEventManager/src/data/AH_RuleData/AH_RuleData.java b/src/main/java/viewEventManager/src/data/AH_RuleData/AH_RuleData.java new file mode 100644 index 0000000..9694bf3 --- /dev/null +++ b/src/main/java/viewEventManager/src/data/AH_RuleData/AH_RuleData.java @@ -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) { + +} diff --git a/src/main/java/viewEventManager/src/events/AA_ConnectToServerPanelEvents/AA_ConnectToServerButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AA_ConnectToServerPanelEvents/AA_ConnectToServerButtonGotPressed.java new file mode 100644 index 0000000..2f018bd --- /dev/null +++ b/src/main/java/viewEventManager/src/events/AA_ConnectToServerPanelEvents/AA_ConnectToServerButtonGotPressed.java @@ -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; + } +} diff --git a/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToControllingPanelButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToControllingPanelButtonGotPressed.java index f8146f2..96ada97 100644 --- a/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToControllingPanelButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToControllingPanelButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToMonitoringPanelButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToMonitoringPanelButtonGotPressed.java index 4829667..551decb 100644 --- a/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToMonitoringPanelButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToMonitoringPanelButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToNextPanelButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToNextPanelButtonGotPressed.java index 05ec6d2..ae58eac 100644 --- a/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToNextPanelButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToNextPanelButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToPreviousPanelButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToPreviousPanelButtonGotPressed.java index b5c719d..bb311fd 100644 --- a/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToPreviousPanelButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AB_StatusPanelEvents/AB_GoToPreviousPanelButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_ActiveConnectionsPanelWasClicked.java b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_ActiveConnectionsPanelWasClicked.java index e13a930..017ee53 100644 --- a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_ActiveConnectionsPanelWasClicked.java +++ b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_ActiveConnectionsPanelWasClicked.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_AlarmIDxGotPressed.java b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_AlarmIDxGotPressed.java index 39ceea5..d37e1ad 100644 --- a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_AlarmIDxGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_AlarmIDxGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_LogsButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_LogsButtonGotPressed.java index c29b2f3..1e197a1 100644 --- a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_LogsButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_LogsButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_RequestsPanelWasClicked.java b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_RequestsPanelWasClicked.java index c9f2506..03e4975 100644 --- a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_RequestsPanelWasClicked.java +++ b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_RequestsPanelWasClicked.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_SystemInformationPanelWasClicked.java b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_SystemInformationPanelWasClicked.java index 1983620..a810790 100644 --- a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_SystemInformationPanelWasClicked.java +++ b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_SystemInformationPanelWasClicked.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_TopProtocolsCakePanelWasClicked.java b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_TopProtocolsCakePanelWasClicked.java index cab9984..ab603ae 100644 --- a/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_TopProtocolsCakePanelWasClicked.java +++ b/src/main/java/viewEventManager/src/events/AC_MonitoringPanelEvents/AC_TopProtocolsCakePanelWasClicked.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AD_ControllingPanelEvents/AD_AddNewPortButoonGotPressed.java b/src/main/java/viewEventManager/src/events/AD_ControllingPanelEvents/AD_AddNewPortButoonGotPressed.java index ff61087..fb48c72 100644 --- a/src/main/java/viewEventManager/src/events/AD_ControllingPanelEvents/AD_AddNewPortButoonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AD_ControllingPanelEvents/AD_AddNewPortButoonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AD_ControllingPanelEvents/AD_NFTablesButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AD_ControllingPanelEvents/AD_NFTablesButtonGotPressed.java index d42399c..d775a6f 100644 --- a/src/main/java/viewEventManager/src/events/AD_ControllingPanelEvents/AD_NFTablesButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AD_ControllingPanelEvents/AD_NFTablesButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_DownloadConfigurationButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_DownloadConfigurationButtonGotPressed.java index 777cddf..e6e9d90 100644 --- a/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_DownloadConfigurationButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_DownloadConfigurationButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_IPv4FamilyButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_IPv4FamilyButtonGotPressed.java index 32a4d18..7947f0e 100644 --- a/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_IPv4FamilyButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_IPv4FamilyButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_IPv6FamilyButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_IPv6FamilyButtonGotPressed.java index 64fdadf..47a98c3 100644 --- a/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_IPv6FamilyButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_IPv6FamilyButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_InetFamilyButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_InetFamilyButtonGotPressed.java index afc6a0b..32264a6 100644 --- a/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_InetFamilyButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AE_NFTablesFamilyPanelEvents/AE_InetFamilyButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_DownloadTablesButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_DownloadTablesButtonGotPressed.java index 19dbaae..1b31817 100644 --- a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_DownloadTablesButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_DownloadTablesButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_IPv4FamilyButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_IPv4FamilyButtonGotPressed.java index 30feafa..bec01dd 100644 --- a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_IPv4FamilyButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_IPv4FamilyButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_IPv6FamilyButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_IPv6FamilyButtonGotPressed.java index 75db44e..934405c 100644 --- a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_IPv6FamilyButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_IPv6FamilyButtonGotPressed.java @@ -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; } } diff --git a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_InetFamilyButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_InetFamilyButtonGotPressed.java index e1e86a8..7088eca 100644 --- a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_InetFamilyButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_InetFamilyButtonGotPressed.java @@ -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_InetFamilyButtonGotPressed() implements ViewEvent { +public final record AF_InetFamilyButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AF_InetFamilyButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AF_InetFamilyButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_NewTableButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_NewTableButtonGotPressed.java index 2371bbc..a9a18f9 100644 --- a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_NewTableButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_NewTableButtonGotPressed.java @@ -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_NewTableButtonGotPressed() implements ViewEvent { +public final record AF_NewTableButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AF_NewTableButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AF_NewTableButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_TableIDxGotPressed.java b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_TableIDxGotPressed.java index 09c675f..b98753e 100644 --- a/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_TableIDxGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AF_NFTablesTablesPanelEvents/AF_TableIDxGotPressed.java @@ -1,19 +1,19 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AF_NFTablesTablesPanelEvents; import viewEventManager.src.data.AF_TableData.AF_TableData; -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_TableIDxGotPressed(AF_TableData tableData) implements ViewEvent { +public final record AF_TableIDxGotPressed(AF_TableData tableData) implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AF_TableIDxGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AF_TableIDxGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_ApplyChangesButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_ApplyChangesButtonGotPressed.java index e0ba92f..0dcbdcc 100644 --- a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_ApplyChangesButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_ApplyChangesButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AG_NFTablesTablePanelEvent; -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 AG_ApplyChangesButtonGotPressed() implements ViewEvent { +public final record AG_ApplyChangesButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AG_ApplyChangesButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AG_ApplyChangesButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_ChainIDxGotPressed.java b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_ChainIDxGotPressed.java index 030873e..ff7c9c3 100644 --- a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_ChainIDxGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_ChainIDxGotPressed.java @@ -1,19 +1,19 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AG_NFTablesTablePanelEvent; import viewEventManager.src.data.AG_ChainData.AG_ChainData; -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 AG_ChainIDxGotPressed(AG_ChainData chainData) implements ViewEvent { +public final record AG_ChainIDxGotPressed(AG_ChainData chainData) implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AG_ChainIDxGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AG_ChainIDxGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_DeleteTableButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_DeleteTableButtonGotPressed.java index 84afa6f..8d0da4e 100644 --- a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_DeleteTableButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_DeleteTableButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AG_NFTablesTablePanelEvent; -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 AG_DeleteTableButtonGotPressed() implements ViewEvent { +public final record AG_DeleteTableButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AG_DeleteTableButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AG_DeleteTableButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_DownloadTableButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_DownloadTableButtonGotPressed.java index b92cdac..6074e1b 100644 --- a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_DownloadTableButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_DownloadTableButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AG_NFTablesTablePanelEvent; -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 AG_DownloadTableButtonGotPressed() implements ViewEvent { +public final record AG_DownloadTableButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AG_DownloadTableButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AG_DownloadTableButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_NewChainButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_NewChainButtonGotPressed.java index 8903be4..4947753 100644 --- a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_NewChainButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_NewChainButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AG_NFTablesTablePanelEvent; -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 AG_NewChainButtonGotPressed() implements ViewEvent { +public final record AG_NewChainButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AG_NewChainButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AG_NewChainButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_RejectChangesButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_RejectChangesButtonGotPressed.java index 467e423..2312557 100644 --- a/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_RejectChangesButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AG_NFTablesTablePanelEvent/AG_RejectChangesButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AG_NFTablesTablePanelEvent; -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 AG_RejectChangesButtonGotPressed() implements ViewEvent { +public final record AG_RejectChangesButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AG_RejectChangesButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AG_RejectChangesButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_ApplyChangesButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_ApplyChangesButtonGotPressed.java index e86c678..6eccb29 100644 --- a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_ApplyChangesButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_ApplyChangesButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AH_NFTablesChainPanelEvent; -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 AH_ApplyChangesButtonGotPressed() implements ViewEvent { +public final record AH_ApplyChangesButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AH_ApplyChangesButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AH_ApplyChangesButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_DeleteChainButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_DeleteChainButtonGotPressed.java index 3f1929d..3b35171 100644 --- a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_DeleteChainButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_DeleteChainButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AH_NFTablesChainPanelEvent; -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 AH_DeleteChainButtonGotPressed() implements ViewEvent { +public final record AH_DeleteChainButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AH_DeleteChainButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AH_DeleteChainButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_DownloadChainButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_DownloadChainButtonGotPressed.java index effd176..ebf1a6b 100644 --- a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_DownloadChainButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_DownloadChainButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AH_NFTablesChainPanelEvent; -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 AH_DownloadChainButtonGotPressed() implements ViewEvent { +public final record AH_DownloadChainButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AH_DownloadChainButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AH_DownloadChainButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_NewRuleButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_NewRuleButtonGotPressed.java index 22b84a5..a161330 100644 --- a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_NewRuleButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_NewRuleButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AH_NFTablesChainPanelEvent; -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 AH_NewRuleButtonGotPressed() implements ViewEvent { +public final record AH_NewRuleButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AH_NewRuleButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AH_NewRuleButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_RejectChangesButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_RejectChangesButtonGotPressed.java index e5f1d86..2e65b46 100644 --- a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_RejectChangesButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_RejectChangesButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AH_NFTablesChainPanelEvent; -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 AH_RejectChangesButtonGotPressed() implements ViewEvent { +public final record AH_RejectChangesButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AH_RejectChangesButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AH_RejectChangesButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_RuleIDxGotPressed.java b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_RuleIDxGotPressed.java index 723b356..e5df3d8 100644 --- a/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_RuleIDxGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AH_NFTablesChainPanelEvent/AH_RuleIDxGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AH_NFTablesChainPanelEvent; -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 AH_RuleIDxGotPressed() implements ViewEvent { +public final record AH_RuleIDxGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AH_RuleIDxGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AH_RuleIDxGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_ApplyChangesButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_ApplyChangesButtonGotPressed.java index 0f6b104..87b1bf7 100644 --- a/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_ApplyChangesButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_ApplyChangesButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AI_NFTablesRulePanel; -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 AI_ApplyChangesButtonGotPressed() implements ViewEvent { +public final record AI_ApplyChangesButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AI_ApplyChangesButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AI_ApplyChangesButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_DeleteRuleButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_DeleteRuleButtonGotPressed.java index 09c30b8..9cc67ec 100644 --- a/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_DeleteRuleButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_DeleteRuleButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AI_NFTablesRulePanel; -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 AI_DeleteRuleButtonGotPressed() implements ViewEvent { +public final record AI_DeleteRuleButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AI_DeleteRuleButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AI_DeleteRuleButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_DownloadRuleButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_DownloadRuleButtonGotPressed.java index 37af1f6..9c74eaf 100644 --- a/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_DownloadRuleButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_DownloadRuleButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AI_NFTablesRulePanel; -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 AI_DownloadRuleButtonGotPressed() implements ViewEvent { +public final record AI_DownloadRuleButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AI_DownloadRuleButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AI_DownloadRuleButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_RejectChangesButtonGotPressed.java b/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_RejectChangesButtonGotPressed.java index 5c32f1d..fd7b354 100644 --- a/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_RejectChangesButtonGotPressed.java +++ b/src/main/java/viewEventManager/src/events/AI_NFTablesRulePanel/AI_RejectChangesButtonGotPressed.java @@ -1,18 +1,18 @@ /** * @author Aaron Moser * @date 05.01.2024 - * @lastChange 05.01.2024 + * @lastChange 07.01.2024 */ package viewEventManager.src.events.AI_NFTablesRulePanel; -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 AI_RejectChangesButtonGotPressed() implements ViewEvent { +public final record AI_RejectChangesButtonGotPressed() implements I_ViewEvent { @Override - public EViewEvent getEventType() { - return EViewEvent.AI_RejectChangesButtonGotPressed; + public E_ViewEvent getEventType() { + return E_ViewEvent.AI_RejectChangesButtonGotPressed; } } diff --git a/src/main/java/viewEventManager/src/events/E_ViewEvent.java b/src/main/java/viewEventManager/src/events/E_ViewEvent.java new file mode 100644 index 0000000..6ba3238 --- /dev/null +++ b/src/main/java/viewEventManager/src/events/E_ViewEvent.java @@ -0,0 +1,72 @@ +/** + * @author Aaron Moser + * @date 05.01.2024 + * @lastChange 07.01.2024 + */ +package viewEventManager.src.events; + +import viewEventManager.src.events.ZZ_General.ZZ_FetchCompleted; + +public enum E_ViewEvent { + // Connect To Server Panel + AA_ConnectToServerButtonGotPressed, + + // Status Panel + AB_GoToMonitoringPanelButtonGotPressed, + AB_GoToControllingPanelButtonGotPressed, + AB_GoToPreviousPanelButtonGotPressed, + AB_GoToNextPanelButtonGotPressed, + + // Monitoring Panel + AC_AlarmIDxGotPressed, + AC_ActiveConnectionsPanelWasClicked, + AC_SystemInformationPanelWasClicked, + AC_RequestsPanelWasClicked, + AC_TopProtocolsCakePanelWasClicked, + AC_LogsButtonGotPressed, + + // Controlling Panel + AD_NFTablesButtonGotPressed, + AD_AddNewPortButtonGotPressed, + + // NFTables Family Panel + AE_DownloadConfigurationButtonGotPressed, + AE_InetFamilyButtonGotPressed, + AE_IPv4FamilyButtonGotPressed, + AE_IPv6FamilyButtonGotPressed, + + // NFTables Tables Panel + AF_DownloadTablesButtonGotPressed, + AF_InetFamilyButtonGotPressed, + AF_IPv4FamilyButtonGotPressed, + AF_IPv6FamilyButtonGotPressed, + AF_NewTableButtonGotPressed, + AF_TableIDxGotPressed, + + // NFTables Table Panel + AG_DownloadTableButtonGotPressed, + AG_NewChainButtonGotPressed, + AG_ChainIDxGotPressed, + AG_ApplyChangesButtonGotPressed, + AG_DeleteTableButtonGotPressed, + AG_RejectChangesButtonGotPressed, + + // NFTables Chain Panel + AH_DownloadChainButtonGotPressed, + AH_NewRuleButtonGotPressed, + AH_RuleIDxGotPressed, + AH_ApplyChangesButtonGotPressed, + AH_DeleteChainButtonGotPressed, + AH_RejectChangesButtonGotPressed, + + // NFTables Rule Panel + AI_DownloadRuleButtonGotPressed, + AI_ApplyChangesButtonGotPressed, + AI_DeleteRuleButtonGotPressed, + AI_RejectChangesButtonGotPressed, + + // General + ZZ_FetchCompleted, + ZZ_ExitApplication, + ZZ_None +} \ No newline at end of file diff --git a/src/main/java/viewEventManager/src/events/I_ViewEvent.java b/src/main/java/viewEventManager/src/events/I_ViewEvent.java new file mode 100644 index 0000000..083f640 --- /dev/null +++ b/src/main/java/viewEventManager/src/events/I_ViewEvent.java @@ -0,0 +1,10 @@ +/** + * @author Aaron Moser + * @date 05.01.2024 + * @lastChange 07.01.2024 + */ +package viewEventManager.src.events; + +public interface I_ViewEvent { + public E_ViewEvent getEventType(); +} diff --git a/src/main/java/viewEventManager/src/events/ZZ_General/ZZ_EmptyViewEvent.java b/src/main/java/viewEventManager/src/events/ZZ_General/ZZ_EmptyViewEvent.java new file mode 100644 index 0000000..0736510 --- /dev/null +++ b/src/main/java/viewEventManager/src/events/ZZ_General/ZZ_EmptyViewEvent.java @@ -0,0 +1,13 @@ +package viewEventManager.src.events.ZZ_General; + +import viewEventManager.src.events.E_ViewEvent; +import viewEventManager.src.events.I_ViewEvent; + +public final record ZZ_EmptyViewEvent() implements I_ViewEvent { + + @Override + public E_ViewEvent getEventType() { + return E_ViewEvent.ZZ_None; + } + +} diff --git a/src/main/java/viewEventManager/src/events/ZZ_General/ZZ_FetchCompleted.java b/src/main/java/viewEventManager/src/events/ZZ_General/ZZ_FetchCompleted.java new file mode 100644 index 0000000..e694ff8 --- /dev/null +++ b/src/main/java/viewEventManager/src/events/ZZ_General/ZZ_FetchCompleted.java @@ -0,0 +1,13 @@ +package viewEventManager.src.events.ZZ_General; + +import viewEventManager.src.events.E_ViewEvent; +import viewEventManager.src.events.I_ViewEvent; + +public final record ZZ_FetchCompleted(int fetchID) implements I_ViewEvent { + + @Override + public E_ViewEvent getEventType() { + return E_ViewEvent.ZZ_FetchCompleted; + } + +} diff --git a/src/main/java/viewEventManager/src/interfaces/I_ViewEventManager.java b/src/main/java/viewEventManager/src/interfaces/I_ViewEventManager.java new file mode 100644 index 0000000..f596faa --- /dev/null +++ b/src/main/java/viewEventManager/src/interfaces/I_ViewEventManager.java @@ -0,0 +1,5 @@ +package viewEventManager.src.interfaces; + +public interface I_ViewEventManager { + public void start(); +} diff --git a/src/main/java/viewModel/src/models/StatusPanel_ViewModel.java b/src/main/java/viewModel/src/models/StatusPanel_ViewModel.java new file mode 100644 index 0000000..739d899 --- /dev/null +++ b/src/main/java/viewModel/src/models/StatusPanel_ViewModel.java @@ -0,0 +1,49 @@ +/** + * @author Aaron Moser + * @date 06.01.2024 + * @lastChange 06.01.2024 + */ +package viewModel.src.models; + +import viewModel.src.constants.StatusPanel_Constants; +import viewModel.src.enums.E_StatusPanel_TranslationField; +import viewModel.src.informations.StatusPanel_Information; +import viewModel.src.interfaces.I_StatusPanel_ViewModel; + +public final record StatusPanel_ViewModel(StatusPanel_Information information) implements I_StatusPanel_ViewModel { + + private String getTranslation(int field) { + return StatusPanel_Constants.getTranslation(information.language().ordinal(), field); + } + + @Override + public String get_StatusLabel_Text() { + return getTranslation(E_StatusPanel_TranslationField.Connection_status.ordinal()); + } + + @Override + public String get_ConnectionStatusLabel_Text() { + return getTranslation(information.status().ordinal() + E_StatusPanel_TranslationField.Connected.ordinal()); + } + + @Override + public String get_MonitoringPanelButton_Text() { + return getTranslation(E_StatusPanel_TranslationField.Monitoring.ordinal()); + } + + @Override + public String get_ControllingPanelButton_Text() { + return getTranslation(E_StatusPanel_TranslationField.Controlling.ordinal()); + } + + @Override + public String get_PreviousPanelButton_Text() { + return getTranslation(E_StatusPanel_TranslationField.Previous.ordinal()); + } + + @Override + public String get_NextPanelButton_Text() { + return getTranslation(E_StatusPanel_TranslationField.Next.ordinal()); + } + +} diff --git a/src/main/java/viewModel/src/models/ViewModel.java b/src/main/java/viewModel/src/models/ViewModel.java index 7714272..476de6b 100644 --- a/src/main/java/viewModel/src/models/ViewModel.java +++ b/src/main/java/viewModel/src/models/ViewModel.java @@ -13,12 +13,25 @@ import viewModel.src.interfaces.I_MonitoringPanel_ViewModel; import viewModel.src.interfaces.I_StatusPanel_ViewModel; import viewModel.src.interfaces.I_ViewModel; -public final record ViewModel( - E_Language language, - I_StatusPanel_ViewModel statusPanel_ViewModel, - I_ConnectToServerPanel_ViewModel connectToServerPanel_ViewModel, - I_MonitoringPanel_ViewModel monitoringPanel_ViewModel, - I_ControllingPanel_ViewModel controllingPanel_ViewModel) implements I_ViewModel { +public final class ViewModel implements I_ViewModel { + E_Language language = E_Language.German; + I_StatusPanel_ViewModel statusPanel_ViewModel = null; + I_ConnectToServerPanel_ViewModel connectToServerPanel_ViewModel = null; + I_MonitoringPanel_ViewModel monitoringPanel_ViewModel = null; + I_ControllingPanel_ViewModel controllingPanel_ViewModel = null; + + public ViewModel( + E_Language language, + I_StatusPanel_ViewModel statusPanel_ViewModel, + I_ConnectToServerPanel_ViewModel connectToServerPanel_ViewModel, + I_MonitoringPanel_ViewModel monitoringPanel_ViewModel, + I_ControllingPanel_ViewModel controllingPanel_ViewModel) { + this.language = language; + this.statusPanel_ViewModel = statusPanel_ViewModel; + this.connectToServerPanel_ViewModel = connectToServerPanel_ViewModel; + this.monitoringPanel_ViewModel = monitoringPanel_ViewModel; + this.controllingPanel_ViewModel = controllingPanel_ViewModel; + } @Override public String get_Language_Text() {