summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/isode/stroke/examples/gui/StrokeGUI.java')
-rw-r--r--src/com/isode/stroke/examples/gui/StrokeGUI.java247
1 files changed, 247 insertions, 0 deletions
diff --git a/src/com/isode/stroke/examples/gui/StrokeGUI.java b/src/com/isode/stroke/examples/gui/StrokeGUI.java
new file mode 100644
index 0000000..09f7936
--- /dev/null
+++ b/src/com/isode/stroke/examples/gui/StrokeGUI.java
@@ -0,0 +1,247 @@
+/*
+ * Copyright (c) 2010-2011, Isode Limited, London, England.
+ * All rights reserved.
+ */
+
+/*
+ * MainFrame.java
+ *
+ * Created on Jul 7, 2010, 10:03:01 AM
+ */
+
+package com.isode.stroke.examples.gui;
+
+import com.isode.stroke.client.ClientError;
+import com.isode.stroke.client.ClientOptions;
+import com.isode.stroke.client.CoreClient;
+import com.isode.stroke.elements.Message;
+import com.isode.stroke.eventloop.Event;
+import com.isode.stroke.eventloop.EventLoop;
+import com.isode.stroke.jid.JID;
+import com.isode.stroke.network.JavaNetworkFactories;
+import com.isode.stroke.signals.Slot1;
+import java.awt.EventQueue;
+
+public class StrokeGUI extends javax.swing.JFrame {
+
+ private CoreClient client_;
+
+ /** Creates new form MainFrame */
+ public StrokeGUI() {
+ initComponents();
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jPanel1 = new javax.swing.JPanel();
+ jLabel1 = new javax.swing.JLabel();
+ loginJID_ = new javax.swing.JTextField();
+ jLabel2 = new javax.swing.JLabel();
+ loginPassword_ = new javax.swing.JTextField();
+ loginButton_ = new javax.swing.JButton();
+ jPanel2 = new javax.swing.JPanel();
+ sendTo_ = new javax.swing.JTextField();
+ jLabel3 = new javax.swing.JLabel();
+ sendButton_ = new javax.swing.JButton();
+ jScrollPane1 = new javax.swing.JScrollPane();
+ sendText_ = new javax.swing.JTextArea();
+ jPanel3 = new javax.swing.JPanel();
+ jScrollPane2 = new javax.swing.JScrollPane();
+ receiveText_ = new javax.swing.JTextArea();
+ jPanel4 = new javax.swing.JPanel();
+ jScrollPane3 = new javax.swing.JScrollPane();
+ xmlText_ = new javax.swing.JTextArea();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+ getContentPane().setLayout(new java.awt.FlowLayout());
+
+ jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Login Stuff"));
+
+ jLabel1.setText("JID");
+ jPanel1.add(jLabel1);
+
+ loginJID_.setBounds(new java.awt.Rectangle(0, 0, 150, 0));
+ loginJID_.setMinimumSize(new java.awt.Dimension(150, 28));
+ loginJID_.setPreferredSize(new java.awt.Dimension(250, 28));
+ jPanel1.add(loginJID_);
+
+ jLabel2.setText("Password");
+ jPanel1.add(jLabel2);
+
+ loginPassword_.setMinimumSize(new java.awt.Dimension(100, 28));
+ loginPassword_.setPreferredSize(new java.awt.Dimension(150, 28));
+ jPanel1.add(loginPassword_);
+
+ loginButton_.setText("Login");
+ loginButton_.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ loginButton_ActionPerformed(evt);
+ }
+ });
+ jPanel1.add(loginButton_);
+
+ getContentPane().add(jPanel1);
+
+ jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Send Stuff"));
+
+ sendTo_.setMinimumSize(new java.awt.Dimension(150, 28));
+ sendTo_.setPreferredSize(new java.awt.Dimension(250, 28));
+ jPanel2.add(sendTo_);
+
+ jLabel3.setText("To");
+ jPanel2.add(jLabel3);
+
+ sendButton_.setText("Send");
+ sendButton_.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ sendButton_ActionPerformed(evt);
+ }
+ });
+ jPanel2.add(sendButton_);
+
+ sendText_.setColumns(20);
+ sendText_.setRows(5);
+ sendText_.setMinimumSize(new java.awt.Dimension(150, 16));
+ sendText_.setPreferredSize(new java.awt.Dimension(150, 150));
+ sendText_.setSize(new java.awt.Dimension(450, 150));
+ jScrollPane1.setViewportView(sendText_);
+
+ jPanel2.add(jScrollPane1);
+
+ getContentPane().add(jPanel2);
+
+ jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Receive Stuff"));
+
+ receiveText_.setColumns(20);
+ receiveText_.setEditable(false);
+ receiveText_.setRows(5);
+ jScrollPane2.setViewportView(receiveText_);
+
+ jPanel3.add(jScrollPane2);
+
+ getContentPane().add(jPanel3);
+
+ jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("XML"));
+
+ xmlText_.setColumns(20);
+ xmlText_.setEditable(false);
+ xmlText_.setRows(5);
+ xmlText_.setSize(new java.awt.Dimension(500, 300));
+ jScrollPane3.setViewportView(xmlText_);
+
+ jPanel4.add(jScrollPane3);
+
+ getContentPane().add(jPanel4);
+ jPanel4.getAccessibleContext().setAccessibleName("XML");
+
+ pack();
+ }// </editor-fold>//GEN-END:initComponents
+
+ private void loginButton_ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loginButton_ActionPerformed
+ System.out.println("Client created from JID " + loginJID_.getText());
+ EventLoop eventLoop = new EventLoop() {
+ @Override
+ protected void post(final Event event) {
+ EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ event.callback.run();
+ }
+ });
+ }
+
+ };
+ client_ = new CoreClient(eventLoop, JID.fromString(loginJID_.getText()), loginPassword_.getText(), new JavaNetworkFactories(eventLoop));
+ System.out.println("Connecting");
+ try {
+ client_.connect(new ClientOptions());
+ } catch (Exception e) {
+ //Something bad happened
+ System.out.println("Exception!");
+ }
+ System.out.println("Connected");
+ final StrokeGUI thisObject = this;
+ client_.onMessageReceived.connect(new Slot1<Message>() {
+
+ public void call(Message p1) {
+ thisObject.handleMessageReceived(p1);
+ }
+ });
+ client_.onError.connect(new Slot1<ClientError>() {
+
+ public void call(ClientError p1) {
+ thisObject.handleClientError(p1);
+ }
+ });
+ client_.onDataRead.connect(new Slot1<String>() {
+
+ public void call(String p1) {
+ xmlText_.append(">>> " + p1 + "\n");
+ }
+ });
+ client_.onDataWritten.connect(new Slot1<String>() {
+
+ public void call(String p1) {
+ xmlText_.append("<<< " + p1 + "\n");
+ }
+ });
+ }//GEN-LAST:event_loginButton_ActionPerformed
+
+ private void sendButton_ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sendButton_ActionPerformed
+ Message message = new Message();
+ message.setTo(JID.fromString(sendTo_.getText()));
+ message.setBody(sendText_.getText());
+ System.out.println("Message body is " + message.getBody());
+ client_.sendMessage(message);
+
+ }//GEN-LAST:event_sendButton_ActionPerformed
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String args[]) {
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ new StrokeGUI().setVisible(true);
+ }
+ });
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JLabel jLabel1;
+ private javax.swing.JLabel jLabel2;
+ private javax.swing.JLabel jLabel3;
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel2;
+ private javax.swing.JPanel jPanel3;
+ private javax.swing.JPanel jPanel4;
+ private javax.swing.JScrollPane jScrollPane1;
+ private javax.swing.JScrollPane jScrollPane2;
+ private javax.swing.JScrollPane jScrollPane3;
+ private javax.swing.JButton loginButton_;
+ private javax.swing.JTextField loginJID_;
+ private javax.swing.JTextField loginPassword_;
+ private javax.swing.JTextArea receiveText_;
+ private javax.swing.JButton sendButton_;
+ private javax.swing.JTextArea sendText_;
+ private javax.swing.JTextField sendTo_;
+ private javax.swing.JTextArea xmlText_;
+ // End of variables declaration//GEN-END:variables
+
+ private void handleMessageReceived(Message message) {
+ String from = message.getFrom().toString();
+ String body = message.getBody();
+ receiveText_.append("<" + from + "> " + body + "\n");
+ }
+
+ private void handleClientError(ClientError error) {
+ receiveText_.append("Error connecting to server\n");
+ }
+
+}