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 m, ChatView v) { this.model = m; this.view = v; } 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 o = ae.getSource(); if (o == 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); } else { view.getTfIP().setEnabled(view.getRbClient().isSelected()); } } 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; } } }