import hush.dv.api.*;
  import hush.dv.widgets.Frame;
  import hush.dv.widgets.Canvas;
  
  public class DrawTool extends Canvas implements Application {
  
  Widget root;
  Tablet tablet;
  
  public DrawTool() { System.out.println("meta handler created"); } 
  
  public DrawTool(String p, String options) {
          super(p,"*");                 // create empty button
  	init(options);
  	debug("DrawTool created");
  	}
  
  public int operator() {
  	System.out.println("Calling DrawTool:" + _event.args(0) );
  	String[] argv = _event.argv();
  	if ("self".equals(argv[1])) tk.result(self().path());
  	else if ("drawtool".equals(argv[0]))
  		create(argv[1],_event.args(2)); // replaces quote
  	else if ("path".equals(argv[1])) tk.result(path()); 
  	else if ("pack".equals(argv[1])) pack(_event.args(2));
  	else self().eval( _event.args(1) );  // send through
  	return OK;
  	}
  
  void create(String name, String options) {
  	DrawTool m = new DrawTool(name,options);
  	}
  
  void init(String options) {
  	root = new Frame(path(),"-class Meta");
  
  	Frame frame = new Frame(root,"frame");
  
  	tablet = new Tablet(frame,"tablet",options);
  
  	ToolBox toolbox = new ToolBox(frame,tablet);
  	MenuBar menubar = new MenuBar(root,tablet,toolbox);
  
          toolbox.pack("-side left -fill y -expand 0");
  	tablet.pack("-side left -fill both -expand 1");
  
  	menubar.pack();
  	frame.pack("-expand 1 -fill both");
  
  
  	redirect( tablet );  // the widget of interest
  
  	alias( this );  // to install the widget command
  	}
  
  

slide: The drawing tool