//
// $Source: /nfs/elm/d3/home/cur/djb1/java/javat/RCS/ButtonTest.java,v $
//
// $Id: ButtonTest.java,v 1.1 1997/06/23 17:04:34 djb1 Exp $
//
// Channel AWT Button test Applet/Application
//
// (C) Copyright 1997 Dave Beckett <D.J.Beckett@ukc.ac.uk>
// University of Kent at Canterbury
//

import java.awt.*;
import java.applet.Applet;

import Object_Channel;

import ButtonCh;

public class ButtonTest extends Applet implements Runnable {
  private Thread my_thread;
  private Label label;
  private ButtonCh button_ch;
  private Object_Channel toButtonCh, fromButtonCh, eventButtonCh;
  private int click_count=0;
  
  public void init() 
  {
    setLayout(new BorderLayout());
    toButtonCh=new Object_Channel();
    fromButtonCh=new Object_Channel();
    eventButtonCh=new Object_Channel();
    button_ch=new ButtonCh(toButtonCh, fromButtonCh, eventButtonCh, "Test");
    add("Center", button_ch);
    label=new Label();
    add("South", label);
    
    my_thread=new Thread(this, "ButtonTest");
    
  }  
  
  public void message(String s)
  {
    label.setText(s);
  }
  
  public Dimension size() 
  {
    return new Dimension(500,200);
  }
  
  // Called on applet continuing
  public void start() 
  {
    System.out.println ("ButtonTest.start: Thread starting");
    my_thread.start();
  }
  
  // Called on applet continuing
  public void stop() 
  {
    System.out.println ("ButtonTest.stop: Thread stopping");
    my_thread.stop();
  }
  
  public void run() 
  {
    while (my_thread != null) {
      try 
	{
	  System.out.println ("ButtonTest.run: Thread active");
	  for(;;) {
	    AWTProtocol message=(AWTProtocol) eventButtonCh.read(); // BLOCKs
	    System.out.print("ButtonTest.run: Got message ");
	    switch (message.get_type()) {
	      case AWTProtocol.MOUSE_DOWN:
		message("MOUSE_DOWN");
		AWTProtocol reply=new AWTProtocol(AWTProtocol.SET_TEXT, new String("Clicked "+click_count+" times"));
		click_count++;
		
		toButtonCh.write(reply);
		break;
	      default:
		message("Unknown / unsupported message "+message.get_type());
	    } // switch
	  }
	}
      catch (InterruptedException e)
	{
	  System.out.println ("ButtonTest.run: Thread ending");
	  return; // end this thread
	}
    }
  }
  
  
  public String getAppletInfo() {
    return "ButtonTest by Dave Beckett <D.J.Beckett@ukc.ac.uk>";
  }

  
  public static void main (String args[]) {
    AppletFrame.startApplet("ButtonTest", "Channel Button Test", args);      
  }
}
