src/main/java/de/unixwork/im/Main.java

changeset 0
f3095cda599e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/unixwork/im/Main.java	Wed Dec 25 21:49:48 2024 +0100
@@ -0,0 +1,123 @@
+package de.unixwork.im;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.jivesoftware.smack.ConnectionConfiguration;
+import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
+import org.jxmpp.stringprep.XmppStringprepException;
+
+
+public class Main {
+
+    public static void main(String[] args) {
+        // Create the dialog
+        JDialog loginDialog = new JDialog((Frame) null, "Login", true);
+        loginDialog.setSize(300, 200);
+        loginDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+        loginDialog.setLayout(new BorderLayout(5, 5));
+
+        // Create components
+        JPanel inputPanel = new JPanel(new GridBagLayout());
+        GridBagConstraints gbc = new GridBagConstraints();
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        gbc.insets = new Insets(5, 5, 5, 5);
+
+        JLabel usernameLabel = new JLabel("Username:");
+        JTextField usernameField = new JTextField(15);
+        JLabel domainLabel = new JLabel("Domain:");
+        JTextField domainField = new JTextField(15);
+        JLabel passwordLabel = new JLabel("Password:");
+        JPasswordField passwordField = new JPasswordField(15);
+
+        gbc.gridx = 0;
+        gbc.gridy = 0;
+        gbc.weightx = 0;
+        inputPanel.add(usernameLabel, gbc);
+
+        gbc.gridx = 1;
+        gbc.gridy = 0;
+        gbc.weightx = 1;
+        inputPanel.add(usernameField, gbc);
+
+        gbc.gridx = 0;
+        gbc.gridy = 1;
+        gbc.weightx = 0;
+        inputPanel.add(domainLabel, gbc);
+
+        gbc.gridx = 1;
+        gbc.gridy = 1;
+        gbc.weightx = 1;
+        inputPanel.add(domainField, gbc);
+
+        gbc.gridx = 0;
+        gbc.gridy = 2;
+        gbc.weightx = 0;
+        inputPanel.add(passwordLabel, gbc);
+
+        gbc.gridx = 1;
+        gbc.gridy = 2;
+        gbc.weightx = 1;
+        inputPanel.add(passwordField, gbc);
+
+        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+        JButton loginButton = new JButton("Login");
+        JButton cancelButton = new JButton("Cancel");
+        buttonPanel.add(loginButton);
+        buttonPanel.add(cancelButton);
+
+        // Add panels to the dialog
+        loginDialog.add(inputPanel, BorderLayout.CENTER);
+        loginDialog.add(buttonPanel, BorderLayout.SOUTH);
+
+        // Action listeners
+        loginButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                String username = usernameField.getText();
+                String domain = domainField.getText();
+                String password = new String(passwordField.getPassword());
+                
+                loginDialog.dispose();
+                
+                try {
+                    XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
+                            .setUsernameAndPassword(username, password)
+                            .setXmppDomain(domain)
+                            .setResource("IM5")
+                            .setHost(domain)
+                            .setPort(5222) 
+                            //.addEnabledSaslMechanism("PLAIN")
+                            //.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
+                            .build();
+                    
+                    Xmpp xmpp = new Xmpp(config);
+                    
+                    App app = new App(xmpp);
+                    
+                    xmpp.start();
+                } catch (XmppStringprepException ex) {
+                    ex.printStackTrace();
+                    System.exit(-1);
+                } catch (Exception ex) {
+                    ex.printStackTrace();
+                    System.exit(-1);
+                }
+            }
+        });
+
+        cancelButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                loginDialog.dispose();
+            }
+        });
+
+        // Center the dialog and make it visible
+        loginDialog.setLocationRelativeTo(null);
+        loginDialog.setVisible(true);
+    }
+}

mercurial