|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package grafikchat.controller;
-
- import grafikchat.model.ChatModel;
- import grafikchat.ohmlogger.OhmLogger;
- import grafikchat.view.ChatView;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.logging.Logger;
- import javax.swing.JOptionPane;
-
- /**
- * Handle events emitted from connect button
- *
- * @author marian
- */
- public class ConnectController implements ActionListener
- {
- private ChatModel model;
- private ChatView view;
- private static Logger logger = OhmLogger.getLogger();
-
- /**
- * Constructor, initialize variables
- * @param model ChatModel
- * @param view ChatView
- */
- public ConnectController(ChatModel model, ChatView view)
- {
- this.model = model;
- this.view = view;
- }
-
- /**
- * Register events for connect button and radio button to select between server and client mode.
- */
- public void registerEvents()
- {
- this.view.getBtConnect().addActionListener(this);
- this.view.getRbClient().addActionListener(this);
- this.view.getRbServer().addActionListener(this);
- }
-
- /**
- * Event handler to take care of registered events
- * @param ae occurred event
- */
- @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 entspricht keiner Zahl!");
- 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());
- }
- }
-
- /**
- * Primitive check if the ip is valid (only IPv4)
- * @param ip IP to check
- * @return true if valid, false otherwise
- */
- 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;
- }
- }
-
- }
|