//
// $Source: /nfs/elm/d3/home/cur/djb1/java/javat/RCS/ScrollbarTest.java,v $
//
// $Id: ScrollbarTest.java,v 1.1 1997/06/23 17:04:34 djb1 Exp $
//
// Object_Channel AWT Scrollbar 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 ScrollbarCh;

public class ScrollbarTest extends Applet implements Runnable {
  private Thread my_thread;
  private Label label;
  private ScrollbarCh scrollbar_ch;
  private Object_Channel toScrollbarCh, fromScrollbarCh, eventScrollbarCh;
  
  public void init() 
  {
    setLayout(new BorderLayout());
    toScrollbarCh=new Object_Channel();
    fromScrollbarCh=new Object_Channel();
    eventScrollbarCh=new Object_Channel();
    scrollbar_ch=new ScrollbarCh(toScrollbarCh, fromScrollbarCh, eventScrollbarCh, Scrollbar.HORIZONTAL);
    add("Center", scrollbar_ch);
    label=new Label();
    add("South", label);
    
    my_thread=new Thread(this, "ScrollbarTest");
    
  }  
  
  public void message(String s)
  {
    label.setText(s);
  }
  
  public Dimension size() 
  {
    return new Dimension(500,200);
  }
  
  // Called on applet continuing
  public void start() 
  {
    System.err.println ("ScrollbarTest.start: Thread starting");
    my_thread.start();
  }
  
  // Called on applet continuing
  public void stop() 
  {
    System.err.println ("ScrollbarTest.stop: Thread stopping");
    my_thread.stop();
  }
  
  // Called on applet continuing
  //public void destroy() 
  //{
  //}
  
  public void run() 
  {
    while (my_thread != null) {
      try 
	{
	  System.err.println ("ScrollbarTest.run: Thread active");
	  for(;;) {
	    AWTProtocol message=(AWTProtocol) eventScrollbarCh.read(); // BLOCKs
	    System.err.print("ScrollbarTest.run: Got message ");
	    switch (message.get_type()) {
	      case AWTProtocol.SCROLL_ABSOLUTE:
		message("SCROLL_ABSOLUTE to "+message.get_arg());
		break;
	      case AWTProtocol.SCROLL_LINE_DOWN:
		message("SCROLL_LINE_DOWN to "+message.get_arg());
		break;
	      case AWTProtocol.SCROLL_LINE_UP:
		message("SCROLL_LINE_UP to "+message.get_arg());
		break;
	      case AWTProtocol.SCROLL_PAGE_DOWN:
		message("SCROLL_PAGE_DOWN to "+message.get_arg());
		break;
	      case AWTProtocol.SCROLL_PAGE_UP:
		message("SCROLL_PAGE_UP to "+message.get_arg());
		break;
	      default:
		message("Unknown / unsupported message "+message.get_type());
	    } // switch
	  }
	}
      catch (InterruptedException e)
	{
	  System.err.println ("ScrollbarTest.run: Thread ending");
	  return; // end this thread
	}
    }
  }
  
  
  public String getAppletInfo() {
    return "ScrollbarTest by Dave Beckett <D.J.Beckett@ukc.ac.uk>";
  }

  
  public static void main (String args[]) {
    AppletFrame.startApplet("ScrollbarTest", "Scrollbar Test", args);      
  }
}
