home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / inprise / JRUNTIME.Z / NewEventBean.snippet < prev    next >
Text File  |  1998-05-08  |  3KB  |  81 lines

  1. // This snippet takes advantage of JBuilder's ability to define
  2. // multiple public classes in a single source file.  This is not
  3. // recommended and is only used here as an example.
  4. // Each class should be pasted into its own .java file.
  5. // You will see warnings to remind you when you compile.
  6.  
  7.  
  8. // Snippet Note: Use the parameter button to change the name of the event class.
  9. //<Target text="Name for new event class" pattern=%CustomEvent% default="CustomEvent">
  10.  
  11. //<Package>
  12.  
  13. import java.util.*;
  14.  
  15. // This defines a new event, with minimum state.
  16. public class %CustomEvent% extends EventObject {
  17.   static final int EVENT1=1;
  18.   static final int EVENT2=2;
  19.   static final int EVENT3=3;
  20.   private int id=0;
  21.  
  22.   public int getID() {return id;};
  23.  
  24.   %CustomEvent%(Object source,int i) {
  25.     super(source);
  26.     id=i;
  27.     }
  28. }
  29.  
  30. // This defines a listener interface for the set of events that
  31. // are generated by %CustomEvent%
  32. public interface %CustomEvent%Listener extends EventListener {
  33.   public void event1(%CustomEvent% e);
  34.   public void event2(%CustomEvent% e);
  35.   public void event3(%CustomEvent% e);
  36. }
  37.  
  38. // This is an example of a non-visual Bean that fires the new events
  39. public class %CustomEvent%ExampleBean {
  40.   public %CustomEvent%ExampleBean() {
  41.   }
  42.  
  43.   // The add/remove methods provide the signature for the IDE to recognize
  44.   // these events and show them in the event list
  45.   public synchronized void add%CustomEvent%Listener(%CustomEvent%Listener l) {
  46.     listenerList.addElement(l);
  47.   }
  48.   public synchronized void remove%CustomEvent%Listener(%CustomEvent%Listener l){
  49.     listenerList.removeElement(l);
  50.   }
  51.  
  52.   // A single process method keeps all event dispatching in one place.
  53.   // Separate processEVENT1, processEVENT2, etc methods could also be used.
  54.   protected void process%CustomEvent%(%CustomEvent% e) {
  55.     switch (e.getID()) {
  56.       case %CustomEvent%.EVENT1:
  57.         for (int i=0; i<listenerList.size(); i++)
  58.           //Send event to all registered listeners
  59.           ((%CustomEvent%Listener)listenerList.elementAt(i)).event1(e);
  60.         break;
  61.       case %CustomEvent%.EVENT2:
  62.         for (int i=0; i<listenerList.size(); i++)
  63.           ((%CustomEvent%Listener)listenerList.elementAt(i)).event2(e);
  64.         break;
  65.       case %CustomEvent%.EVENT3:
  66.         for (int i=0; i<listenerList.size(); i++)
  67.           ((%CustomEvent%Listener)listenerList.elementAt(i)).event3(e);
  68.         break;
  69.     }
  70.   }
  71.  
  72.   // A test method to fire all 3 example events
  73.   public void test%CustomEvent% () {
  74.     process%CustomEvent% (new %CustomEvent% (this, %CustomEvent%.EVENT1));
  75.     process%CustomEvent% (new %CustomEvent% (this, %CustomEvent%.EVENT2));
  76.     process%CustomEvent% (new %CustomEvent% (this, %CustomEvent%.EVENT3));
  77.   }
  78.  
  79.   private Vector listenerList = new Vector();
  80. }
  81.