Added blocking functionality to send event to controller if connect button was pressed.

This commit is contained in:
WickedJack99
2023-12-05 15:41:48 +01:00
parent 75d6308438
commit ad88647298
6 changed files with 115 additions and 15 deletions

View File

@@ -5,13 +5,17 @@
package controller.src;
import connect.src.ClientThread;
import data.src.ViewToControllerData;
import data.src.ViewToControllerData.ViewEvent;
import controller.src.Validate.Validate;
import data.src.ViewToController.ConnectToServerData;
import data.src.ViewToController.EmptyViewToControllerData;
import data.src.ViewToController.ViewToControllerData;
import data.src.ViewToController.ViewToControllerData.ViewEvent;
import gui.src.View;
import logger.src.MessageLogger;
import model.src.ModelRepresentation;
import queues.src.ControllerToViewQueue;
import queues.src.ViewToControllerQueue;
public class ControllerThread extends Thread implements Controller {
@@ -26,7 +30,7 @@ public class ControllerThread extends Thread implements Controller {
}
public void run() {
ViewToControllerData viewToControllerData = new ViewToControllerData();
ViewToControllerData viewToControllerData = new EmptyViewToControllerData();
// Run until view sends event quit application
while (viewToControllerData.getViewEvent() != ViewEvent.QuitApplication) {
// Wait for a message from view.
@@ -34,9 +38,15 @@ public class ControllerThread extends Thread implements Controller {
switch (viewToControllerData.getViewEvent()) {
case ViewEvent.ConnectToServerButtonWasPressed: {
ClientThread clientThread = new ClientThread();
MessageLogger.printMessage(className, "Client thread was started.");
clientThread.start();
String ipAddress = ((ConnectToServerData)viewToControllerData).getIPAddress();
String port = ((ConnectToServerData)viewToControllerData).getPort();
System.out.println(ipAddress);
System.out.println(port);
//ControllerToViewQueue.getInstance().add(new );
//if (Validate.)
//ClientThread clientThread = new ClientThread();
//MessageLogger.printMessage(className, "Client thread was started.");
//clientThread.start();
}break;
default: {

View File

@@ -0,0 +1,34 @@
/**
* @author Aaron Moser
* @date 05.12.2023
*/
package data.src.ViewToController;
public class ConnectToServerData implements ViewToControllerData {
private String ipAddress;
private String port;
public ConnectToServerData(String ipAddress, String port) {
this.ipAddress = ipAddress;
this.port = port;
}
@Override
public void setViewEvent(ViewEvent viewEvent) {
return;
}
@Override
public ViewEvent getViewEvent() {
return ViewEvent.ConnectToServerButtonWasPressed;
}
public String getIPAddress() {
return this.ipAddress;
}
public String getPort() {
return this.port;
}
}

View File

@@ -0,0 +1,19 @@
/**
* @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;
}
}

View File

@@ -7,17 +7,54 @@ package gui.src.panels.ConnectToServerPanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import data.src.ViewToControllerData;
import data.src.ViewToControllerData.ViewEvent;
import javax.swing.JTextField;
import data.src.ControllerToView.ControllerToViewData;
import data.src.ControllerToView.ControllerToViewData.ControllerEvent;
import data.src.ViewToController.ConnectToServerData;
import data.src.ViewToController.ViewToControllerData;
import data.src.ViewToController.ViewToControllerData.ViewEvent;
import gui.src.constants.GUIConstants.Panel;
import gui.src.frames.MainFrame;
import queues.src.ControllerToViewQueue;
import queues.src.ViewToControllerQueue;
public class ConnectToServerButtonListener implements ActionListener {
private JTextField ipAddressTextField;
private JTextField portTextField;
public ConnectToServerButtonListener(JTextField ipAddressTextField, JTextField portTextField) {
this.ipAddressTextField = ipAddressTextField;
this.portTextField = portTextField;
}
public void actionPerformed(ActionEvent e) {
System.out.println("Connect to server button was pressed.");
ViewToControllerData viewToControllerData = new ViewToControllerData();
viewToControllerData.setViewEvent(ViewEvent.ConnectToServerButtonWasPressed);
ViewToControllerQueue.getInstance().add(viewToControllerData);
// Denies user to change fields while reading
this.ipAddressTextField.setEditable(false);
this.portTextField.setEditable(false);
// Reads in fields text
String ipAddress = this.ipAddressTextField.getText();
String port = this.portTextField.getText();
// Sends data to queue
ViewToControllerQueue.getInstance().add(new ConnectToServerData(ipAddress, port));
System.out.println("Waiting for controller to respond.");
ControllerToViewData controllerToViewData;
//while ((controllerToViewData = ControllerToViewQueue.getInstance().peek()) == null) {}
//if (controllerToViewData.getControllerEvent() == ControllerEvent.ConnectToServerWasSuccessful) {
// ControllerToViewQueue.getInstance().poll();
// MainFrame.getInstance().setPanel(Panel.MonitoringPanel);
//} else {
// Allows user to change fields if connection
// this.ipAddressTextField.setEditable(true);
// this.portTextField.setEditable(true);
//}
}
}

View File

@@ -15,8 +15,8 @@ import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import data.src.ControllerToViewData;
import data.src.ViewToControllerData;
import data.src.ControllerToView.ControllerToViewData;
import data.src.ViewToController.ViewToControllerData;
import javax.swing.JLabel;
@@ -202,7 +202,7 @@ public final class ConnectToServerPanel extends JPanel implements Themeable, Tra
private void createConnectButton() {
this.connectButton = new JButton();
this.connectButton.addActionListener(new ConnectToServerButtonListener());
this.connectButton.addActionListener(new ConnectToServerButtonListener(this.ipAddressTextField, this.portTextField));
}
private void addConnectButton() {

View File

@@ -6,7 +6,7 @@ package queues.src;
import java.util.concurrent.ConcurrentLinkedQueue;
import data.src.ViewToControllerData;
import data.src.ViewToController.ViewToControllerData;
/**
*