[Frames] NCSA Habanero
-------------------------------------------------------------------
 

Peppery Patterns
How to turn Java applets into Habanero hablets
by Ian Chai

 
-------------------------------------------------------------------

Why use Habanero?

Habanero is a framework for synchronous collaboration. You can use it to convert a single-user Java applet or application into a multi-user application called a "hablet" in much less time than writing the collaboration from scratch. You can also write hablets directly without first writing an applet.

Each user running a client connected to a session will be able to see changes made by other users in the same session. Hence, it is useful for applications you want real-time interaction with. Here are some example applications [Outside link] we have already written. (The [Outside link] icon means that this is a link that takes you outside this tutorial.)

This tutorial teaches you how to convert a Java applet into a Habanero hablet. It is based on the patterns approach to describing solutions to problems. 


This is the Index page. Use this page to find topics on things you want to know. You can easily come back here using the Index button at the top of each pattern page, use it in a separate window, or use the index in a frame.

0. Index (this page)
  0.1 Read me first (explains how to use these pages and what the symbols mean.)
  0.2 Quick start example 


Basic Topics

1. How to turn an applet into a hablet (Habanerizing a Java Applet)
  1.1. What to change first to habanerize an applet
           (Change superclass, imports, and initialization)
  1.2. How to specify the size, title, and other attributes of a hablet's window
  1.3. How to enable a hablet to join a session (Transfer State)
    1.3.1 How events work in Habanero (Event Model)
    1.3.2 How to decide which variables to send to other hablets
  1.4. How to pass events to peer hablets (Simple Event Handling)
  1.5. How to install a new hablet into a Habanero environment
2. Common mistakes or errors

Advanced Topics

x. How to decide on the fly whether to share an event (Shipping Decision Function)
x. How to convert an applet that uses the old event model (Not yet written)
x. How to control which events have permissions to execute  (Arbitrator)
  x.1 How to prevent events from clashing with each other (Limit Arbitrator)
  x.2 How to create new arbitrators  (Not yet written)
x. How to generate an event (Habanero.sendEvent)
x. How to change one kind of user event into another (Not yet written)
x. How to package up complicated extra data to send (Component Action) (Not yet written)
x. How to access the Arbitrator (Collobject)  (Not yet written)
x. How to define new toolsDir attributes (Not yet written)
x. How to share events from spawned windows (Identifiable interface)
x. How to find out who owns the session
x. How to find out who started the hablet (originator)
x. How to let the initiator of a tool do something special before
        the collaboration starts (Initializable interface)  (Not yet written)
x. How to make collaborative version of AWT components (eg. buttons) so that
        some components can be shared without sharing others (Not yet written)
x. How to do special cleanup after a hablet quits (Shutdownable interface) (Not yet written)
x. How to describe new Component Actions (Describable interface) (Not yet written)

Appendices

  A.0 TextDemo Example
  A.1 Glossary
  A.3 Habanero Methods Glossary [Outside link]
  A.4 Known bugs [Outside link]
 
ALERT


These pages are still under construction. We are releasing this along with Habanero 2.0 beta, but most of the advanced topics have not yet been written. Moreover, the basic topics pages are undergoing revision. 

-------------------------------------------------------------------
If you spot an error, please contact Ian Chai[Outside link] Also, please contact me if you find some aspects of Habanero that are not explained clearly so that I can improve this documentation.

Habanero® is a registered trademark owned by The Board of Trustees of the University of Illinois. Copyright 1996-1998. All rights reserved.   Java(TM) is a proprietary trademark owned by Sun Microsystems, Inc.
NCSA
The National Center for Supercomputing Applications
University of Illinois at Urbana-Champaign

Contacts page