You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ConnectController.java 2.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package chatprogramm.controller;
  2. import chatprogramm.model.Transmitter;
  3. import chatprogramm.logger.OhmLogger;
  4. import chatprogramm.view.ChatView;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.util.logging.Logger;
  8. import javax.swing.JOptionPane;
  9. /**
  10. *
  11. * @author Marian
  12. */
  13. public class ConnectController implements ActionListener
  14. {
  15. private Transmitter model;
  16. private ChatView view;
  17. private static Logger logger = OhmLogger.getLogger();
  18. public ConnectController(Transmitter m, ChatView v)
  19. {
  20. this.model = m;
  21. this.view = v;
  22. }
  23. public void registerEvents()
  24. {
  25. this.view.getBtConnect().addActionListener(this);
  26. this.view.getRbClient().addActionListener(this);
  27. this.view.getRbServer().addActionListener(this);
  28. }
  29. @Override
  30. public void actionPerformed(ActionEvent ae)
  31. {
  32. Object o = ae.getSource();
  33. if (o == view.getBtConnect()) {
  34. int port = -1;
  35. try {
  36. port = Integer.parseInt(view.getTfPort().getText());
  37. } catch (NumberFormatException e) {
  38. JOptionPane.showMessageDialog(view, "Port ungültig! Muss eine Zahl sein");
  39. logger.severe(e.toString());
  40. return;
  41. }
  42. if (view.getRbClient().isSelected() && (validIP(view.getTfIP().getText()) == false)) {
  43. JOptionPane.showMessageDialog(view, "Ungültige IP-Adresse!");
  44. logger.severe("IP-Adresse ungültig");
  45. return;
  46. }
  47. model.connectToPeer(view.getRbServer().isSelected(), view.getTfIP().getText(), port);
  48. view.getRbClient().setEnabled(false);
  49. view.getRbServer().setEnabled(false);
  50. view.getTfIP().setEnabled(false);
  51. view.getTfPort().setEnabled(false);
  52. } else {
  53. view.getTfIP().setEnabled(view.getRbClient().isSelected());
  54. }
  55. }
  56. private boolean validIP (String ip) {
  57. try {
  58. if ( ip == null || ip.isEmpty() ) {
  59. return false;
  60. }
  61. String[] parts = ip.split( "\\." );
  62. if ( parts.length != 4 ) {
  63. return false;
  64. }
  65. for ( String s : parts ) {
  66. int i = Integer.parseInt( s );
  67. if ( (i < 0) || (i > 255) ) {
  68. return false;
  69. }
  70. }
  71. if ( ip.endsWith(".") ) {
  72. return false;
  73. }
  74. return true;
  75. } catch (NumberFormatException e) {
  76. logger.severe(e.toString());
  77. return false;
  78. }
  79. }
  80. }