--- projects/cms/source/conient/uk/org/iscream/cms/conient/Conient.java 2001/01/15 03:26:26 1.7 +++ projects/cms/source/conient/uk/org/iscream/cms/conient/Conient.java 2001/01/20 16:06:53 1.8 @@ -4,6 +4,7 @@ import javax.swing.*; import javax.swing.border.*; import java.awt.Color; +import uk.ac.ukc.iscream.util.*; import java.awt.*; import java.awt.event.*; @@ -13,12 +14,13 @@ import java.util.Date; import java.text.DateFormat; import java.util.Locale; import java.util.HashMap; +import javax.swing.border.*; /** * NASTY AND BASIC, PLEASE DON'T COMPLAIN * * @author $Author: ajm $ - * @version $Id: Conient.java,v 1.7 2001/01/15 03:26:26 ajm Exp $ + * @version $Id: Conient.java,v 1.8 2001/01/20 16:06:53 ajm Exp $ */ public class SwingClient extends JFrame implements Runnable { @@ -27,7 +29,7 @@ public class SwingClient extends JFrame implements Run /** * The current CVS revision of this class */ - public final String REVISION = "$Revision: 1.7 $"; + public final String REVISION = "$Revision: 1.8 $"; private final int width = 400; private final int height = 700; @@ -51,11 +53,16 @@ public class SwingClient extends JFrame implements Run Socket socket = new Socket(host, port); BufferedReader inBound = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter outBound = new PrintWriter(socket.getOutputStream()); - DataReader data = new DataReader(inBound); + + Queue dataQueue = new Queue(); + DataReader data = new DataReader(inBound, dataQueue); - SwingClient client = new SwingClient(data); + SwingClient client = new SwingClient(dataQueue); Thread clientThread = new Thread(client); + clientThread.start(); + data.start(); + } catch (Exception e) { System.err.println("ERROR START: " + e); System.exit(1); @@ -67,11 +74,13 @@ public class SwingClient extends JFrame implements Run /** * Creates a new Swing Client. */ - public SwingClient(DataReader data) { - _data = data; + public SwingClient(Queue dataQueue) { + + _dataQueue = dataQueue; + _myQueue = _dataQueue.getQueue(); // set up the Frame setTitle("I-Scream Client"); - setSize(width, height); + //setSize(width, height); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); Box box = Box.createVerticalBox(); @@ -83,18 +92,32 @@ public class SwingClient extends JFrame implements Run header.add(_serverCountLabel); header.add(Box.createHorizontalGlue()); header.add(iscream); + Box main = Box.createHorizontalBox(); + JButton button = new JButton("Connect"); + // set up the text area + _status.setEditable(false); + JScrollPane statusPane = new JScrollPane(_status); + statusPane.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 102)), " Messages ")); + + Box controlPane = Box.createVerticalBox(); + controlPane.add(button); + //controlPane.add(Box.createVerticalGlue()); + controlPane.add(statusPane); + main.add(controlPane); + main.add(_tabbedPane); + //_tabbedPane.setSelectedIndex(0); // build the frame box.add(header); - box.add(_tabbedPane); - box.add(_status); + box.add(main); + getContentPane().add(box); // show the window show(); - _status.setText("Running..."); + _status.insert("Running...\n",0); } //---PUBLIC METHODS--- @@ -102,17 +125,14 @@ public class SwingClient extends JFrame implements Run public void run() { HashMap hostList = new HashMap(); try { - _data.start(); while(true) { - synchronized (_data) { - _data.wait(); - } - String xml = _data.getXML(); + + String xml = (String) _dataQueue.get(_myQueue); if (xml == null) { // shouldn't really happen...but not sure - _status.setText("No XML to update..."); + _status.insert("No XML to update...",0); } else { - _status.setText("Got inbound data...handling"); + // Get a string without any null characters in it. // -- maybe String.trim() would be better ? if (xml.indexOf(0) != -1) { @@ -132,7 +152,7 @@ public class SwingClient extends JFrame implements Run host = new HostDisplayPanel(); _tabbedPane.addTab(hostName, _serverIcon, host, "Monitor " + hostName); hostList.put(hostName, host); - _status.setText("New Host added: " + hostName); + _status.insert("New Host added: " + hostName + "\n", 0); } ((HostDisplayPanel) hostList.get(hostName)).updateHost(packet); } @@ -144,7 +164,7 @@ public class SwingClient extends JFrame implements Run //---PRIVATE METHODS--- - protected JPanel makeTextPanel(String text, Component item) { + protected JPanel makeTextPanel(String text, java.awt.Component item) { JPanel panel = new JPanel(false); JLabel label = new JLabel(text); label.setHorizontalAlignment(JLabel.RIGHT); @@ -162,12 +182,14 @@ public class SwingClient extends JFrame implements Run HostDisplayPanel host; JTabbedPane _tabbedPane = new JTabbedPane(); - DataReader _data; - JLabel _status = new JLabel(); + Queue _dataQueue; + int _myQueue; + JTextArea _status = new JTextArea(); ImageIcon _serverIcon = new ImageIcon("server.gif"); JLabel _serverCountLabel; int _serverCount = 0; + //---STATIC ATTRIBUTES--- -} \ No newline at end of file +}