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 (); 
  } 
}