Thu, 26 Dec 2024 17:19:15 +0100
update status in contact list and conversations
|
0
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | package de.unixwork.im; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | import javax.swing.*; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
4 | import java.awt.*; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
5 | import java.awt.event.ActionEvent; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
6 | import java.awt.event.ActionListener; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
7 | import java.util.logging.Level; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
8 | import java.util.logging.Logger; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
9 | import org.jivesoftware.smack.ConnectionConfiguration; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
10 | import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
11 | import org.jxmpp.stringprep.XmppStringprepException; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
12 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
13 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | public class Main { |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
15 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
16 | public static void main(String[] args) { |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
17 | // Create the dialog |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
18 | JDialog loginDialog = new JDialog((Frame) null, "Login", true); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
19 | loginDialog.setSize(300, 200); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
20 | loginDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
21 | loginDialog.setLayout(new BorderLayout(5, 5)); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
22 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
23 | // Create components |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
24 | JPanel inputPanel = new JPanel(new GridBagLayout()); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
25 | GridBagConstraints gbc = new GridBagConstraints(); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | gbc.fill = GridBagConstraints.HORIZONTAL; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
27 | gbc.insets = new Insets(5, 5, 5, 5); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
29 | JLabel usernameLabel = new JLabel("Username:"); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
30 | JTextField usernameField = new JTextField(15); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
31 | JLabel domainLabel = new JLabel("Domain:"); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
32 | JTextField domainField = new JTextField(15); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
33 | JLabel passwordLabel = new JLabel("Password:"); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
34 | JPasswordField passwordField = new JPasswordField(15); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
35 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
36 | gbc.gridx = 0; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
37 | gbc.gridy = 0; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
38 | gbc.weightx = 0; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
39 | inputPanel.add(usernameLabel, gbc); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
40 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
41 | gbc.gridx = 1; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
42 | gbc.gridy = 0; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
43 | gbc.weightx = 1; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
44 | inputPanel.add(usernameField, gbc); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
45 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
46 | gbc.gridx = 0; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
47 | gbc.gridy = 1; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
48 | gbc.weightx = 0; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
49 | inputPanel.add(domainLabel, gbc); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
50 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
51 | gbc.gridx = 1; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
52 | gbc.gridy = 1; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
53 | gbc.weightx = 1; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
54 | inputPanel.add(domainField, gbc); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
55 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
56 | gbc.gridx = 0; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
57 | gbc.gridy = 2; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
58 | gbc.weightx = 0; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
59 | inputPanel.add(passwordLabel, gbc); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
60 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
61 | gbc.gridx = 1; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
62 | gbc.gridy = 2; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
63 | gbc.weightx = 1; |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
64 | inputPanel.add(passwordField, gbc); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
65 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
66 | JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
67 | JButton loginButton = new JButton("Login"); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
68 | JButton cancelButton = new JButton("Cancel"); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
69 | buttonPanel.add(loginButton); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
70 | buttonPanel.add(cancelButton); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
71 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
72 | // Add panels to the dialog |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
73 | loginDialog.add(inputPanel, BorderLayout.CENTER); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
74 | loginDialog.add(buttonPanel, BorderLayout.SOUTH); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
75 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
76 | // Action listeners |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
77 | loginButton.addActionListener(new ActionListener() { |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
78 | @Override |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
79 | public void actionPerformed(ActionEvent e) { |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
80 | String username = usernameField.getText(); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
81 | String domain = domainField.getText(); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
82 | String password = new String(passwordField.getPassword()); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
83 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
84 | loginDialog.dispose(); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
85 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
86 | try { |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
87 | XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
88 | .setUsernameAndPassword(username, password) |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
89 | .setXmppDomain(domain) |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
90 | .setResource("IM5") |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
91 | .setHost(domain) |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
92 | .setPort(5222) |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
93 | //.addEnabledSaslMechanism("PLAIN") |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
94 | //.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
95 | .build(); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
96 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
97 | Xmpp xmpp = new Xmpp(config); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
98 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
99 | App app = new App(xmpp); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
100 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
101 | xmpp.start(); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
102 | } catch (XmppStringprepException ex) { |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
103 | ex.printStackTrace(); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
104 | System.exit(-1); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
105 | } catch (Exception ex) { |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
106 | ex.printStackTrace(); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
107 | System.exit(-1); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
108 | } |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
109 | } |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
110 | }); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
111 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
112 | cancelButton.addActionListener(new ActionListener() { |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
113 | @Override |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
114 | public void actionPerformed(ActionEvent e) { |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
115 | loginDialog.dispose(); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
116 | } |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
117 | }); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
118 | |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
119 | // Center the dialog and make it visible |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
120 | loginDialog.setLocationRelativeTo(null); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
121 | loginDialog.setVisible(true); |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
122 | } |
|
f3095cda599e
add initial code with minimal working contact list and conversations
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
123 | } |