/* * Copyright (c) 2010-2012, 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") // //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(); }// //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() { handleEvent(event); } }); } }; client_ = new CoreClient(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() { public void call(Message p1) { thisObject.handleMessageReceived(p1); } }); client_.onDisconnected.connect(new Slot1() { public void call(ClientError p1) { thisObject.handleClientError(p1); } }); client_.onDataRead.connect(new Slot1() { public void call(String p1) { xmlText_.append(">>> " + p1 + "\n"); } }); client_.onDataWritten.connect(new Slot1() { 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"); } }