www.pudn.com > jnp-src.rar > CollabTool.java
/*
* Java Network Programming, Second Edition
* Merlin Hughes, Michael Shoffner, Derek Hamner
* Manning Publications Company; ISBN 188477749X
*
* http://nitric.com/jnp/
*
* Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner;
* all rights reserved; see license.txt for details.
*/
import java.io.*;
import java.awt.*;
public class CollabTool {
private static int id = 0;
protected Frame frame;
protected Demultiplexer demultiplexer;
public CollabTool (InputStream in, OutputStream out) {
frame = new Frame ("Collaborative Tool " + (id ++));
frame.setLayout (new GridLayout (2, 1));
Whiteboard wb = new Whiteboard ();
frame.add (wb);
Chatboard cb = new Chatboard ();
frame.add (cb);
frame.pack ();
MessageOutputStream messageOut = new MessageOutputStream (out);
MessageInputStream messageIn = new MessageInputStream (in);
cb.setMessageOutput (new MultiplexOutputStream (messageOut, "chat"));
wb.setMessageOutput (new MultiplexOutputStream (messageOut, "wb"));
demultiplexer = new Demultiplexer (messageIn);
demultiplexer.register ("chat", cb.getMessageOutput ());
demultiplexer.register ("wb", wb.getMessageOutput ());
}
public void start () {
demultiplexer.start ();
frame.setVisible (true);
}
public static void main (String[] args) throws IOException {
PipedOutputStream out0 = new PipedOutputStream ();
PipedInputStream in1 = new PipedInputStream (out0);
PipedOutputStream out1 = new PipedOutputStream ();
PipedInputStream in0 = new PipedInputStream (out1);
CollabTool collabTool0 = new CollabTool (in0, out0);
CollabTool collabTool1 = new CollabTool (in1, out1);
collabTool0.start ();
collabTool1.start ();
}
}