package chatprogramm.controller; import chatprogramm.model.Transmitter; import chatprogramm.logger.OhmLogger; import chatprogramm.view.ChatView; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.logging.Logger; import javax.swing.JOptionPane; /** * * @author Marian */ public class ConnectController implements ActionListener { private Transmitter model; private ChatView view; private static Logger logger = OhmLogger.getLogger(); public ConnectController(Transmitter model, ChatView view) { this.model = model; this.view = view; } public void registerEvents() { this.view.getBtConnect().addActionListener(this); this.view.getRbClient().addActionListener(this); this.view.getRbServer().addActionListener(this); } @Override public void actionPerformed(ActionEvent ae) { Object object = ae.getSource(); if (object == view.getBtConnect()) { int port = -1; try { port = Integer.parseInt(view.getTfPort().getText()); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(view, "Port ungültig! Muss eine Zahl sein"); logger.severe(e.toString()); return; } if (view.getRbClient().isSelected() && (validIP(view.getTfIP().getText()) == false)) { JOptionPane.showMessageDialog(view, "Ungültige IP-Adresse!"); logger.severe("IP-Adresse ungültig"); return; } model.connectToPeer(view.getRbServer().isSelected(), view.getTfIP().getText(), port); view.getRbClient().setEnabled(false); view.getRbServer().setEnabled(false); view.getTfIP().setEnabled(false); view.getTfPort().setEnabled(false); } } private boolean validIP (String ip) { try { if (ip == null || ip.isEmpty()) { return false; } String[] parts = ip.split("\\."); if ( parts.length != 4 ) { return false; } for (String s : parts) { int i = Integer.parseInt(s); if ((i < 0) || (i > 255)) { return false; } } if (ip.endsWith(".")) { return false; } return true; } catch (NumberFormatException e) { logger.severe(e.toString()); return false; } } }