home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 November / Chip_1998-11_cd.bin / tema / Cafe / VCSAMPL.BIN / Client.java < prev    next >
Text File  |  1997-06-02  |  6KB  |  208 lines

  1. /*
  2.  * Title: Conversing Applets
  3.  * Type: Applet
  4.  * Source: Client.java
  5.  * Application Description:
  6.  * The Conversing Applets project provides a simple and effective way
  7.  * to allow applets to communicate within the same "environment", i.e.
  8.  * within the same browser page.
  9.  *
  10.  * This is done using a Mediator class as the background manager and
  11.  * other visible classes which display results. The Mediator class uses
  12.  * static variables to keep track of all the events taking place in
  13.  * these visible applets.
  14.  *
  15.  * In this example, two visible applets are used along with the one
  16.  * Mediator class. The Developer and Client class generate text strings which
  17.  * represent conversation.  The Mediator object(s) take those text
  18.  * strings and distribute them to the other applet (Developer to Client and
  19.  * Client to Developer).
  20.  *
  21.  * The result is two distinct applet objects transmitting data back and
  22.  * forth. This sort of project can be very useful in developing more
  23.  * interesting Web pages as well as Web page applets which gather
  24.  * information about usage, etc.  The Mediator class concept can be
  25.  * built upon to meet the needs of more specific Java-based Web
  26.  * applications.
  27.  *
  28.  * Symantec Corporation.
  29.  */
  30.  
  31.  
  32. import java.applet.Applet;
  33. import java.awt.*;
  34.  
  35. /**
  36.  * The Client applet class
  37.  */
  38.  
  39. public class Client extends Applet implements Runnable
  40. {
  41.         Mediator myMediator;            //Local copy of the Mediator object
  42.         String label, response;         //Various applet text variables
  43.         int theNumber;                  //Used to track a random number
  44.         Thread clientThread;             //The main applet thread
  45.  
  46.  
  47.         /**
  48.          * Set up the applet layout and initialize variables
  49.          */
  50.  
  51.         public void init()
  52.         {
  53.            myMediator = new Mediator();
  54.  
  55.            //{{INIT_CONTROLS
  56.         setLayout(null);
  57.         addNotify();
  58.         resize(448,110);
  59.         clientTalk = new java.awt.TextField(18);
  60.         clientTalk.setEditable(false);
  61.         clientTalk.reshape(170,38,268,24);
  62.         add(clientTalk);
  63.         client = new java.awt.Label("Client says:");
  64.         client.reshape(0,35,80,24);
  65.         add(client);
  66.         top = new java.awt.Label("I'm a Client");
  67.         top.reshape(0,0,89,24);
  68.         add(top);
  69.         developer = new java.awt.Label("The Developer just said:");
  70.         developer.reshape(0,70,153,24);
  71.         add(developer);
  72.         developerTalk = new java.awt.TextField(17);
  73.         developerTalk.setEditable(false);
  74.         developerTalk.reshape(170,68,268,24);
  75.         add(developerTalk);
  76.         //}}
  77.  
  78.         }
  79.  
  80.  
  81.         /**
  82.          * Start the main thread
  83.          */
  84.  
  85.         public void start()
  86.         {
  87.            clientThread = new Thread(this);
  88.            clientThread.start();
  89.         }
  90.  
  91.  
  92.  
  93.  
  94.          /**
  95.           * The applet action takes place here. The applet waits, gets a
  96.           * random number from the Mediator, uses that to id a piece of
  97.           * conversation and then updates the UI elements.
  98.           */
  99.  
  100.          public void run()
  101.          {
  102.             Thread clientThread = Thread.currentThread();
  103.             while(true)
  104.             {
  105.                 try
  106.                 {
  107.                     clientThread.sleep(2000);
  108.                 } catch(Exception e)
  109.                 {
  110.                     System.out.println(e);
  111.                 }
  112.  
  113.                 //Keep a copy of the last random number
  114.                 myMediator.oldNumber = myMediator.theNumber;
  115.                 myMediator.theNumber = myMediator.genRandom();
  116.  
  117.                 checkWithMediator();
  118.  
  119.                 takeAction();
  120.  
  121.             }
  122.          }
  123.  
  124.  
  125.          /**
  126.           * A helper function which uses the new Mediator random number
  127.           * to set the conversation text
  128.           */
  129.  
  130.          public synchronized void checkWithMediator()
  131.          {
  132.  
  133.             int index = myMediator.theNumber;
  134.  
  135.  
  136.             if(index < 10)
  137.             {
  138.                 label = "Isn't Visual CafΘ great?";
  139.             } else if((index <= 20) && (index >= 10))
  140.             {
  141.                 label = "The Visual CafΘ compiler is sooo FAST!";
  142.             } else if((index <= 30) && (index > 20))
  143.             {
  144.                 label = "Check out the snazzy class editor.";
  145.             } else if((index <= 40) && (index > 30))
  146.             {
  147.                 label = "Debugging in Visual CafΘ is easy.";
  148.             } else if((index <= 50) && (index > 40))
  149.             {
  150.                 label = "Visual CafΘ is Great!";
  151.             } else if((index <= 60) && (index > 50))
  152.             {
  153.                 label = "What do you mean by that?";
  154.             } else if((index <= 70) && (index > 60))
  155.             {
  156.                 label = "I want to make sure you use Visual CafΘ.";
  157.             } else if((index <= 80) && (index > 70))
  158.             {
  159.                 label = "Isn't that the truth";
  160.             } else if((index <= 90) && (index > 80))
  161.             {
  162.                 label = "Wow, really!!!";
  163.             } else if((index <= 100) && (index >90))
  164.             {
  165.                 label = "That's very cool";
  166.             }
  167.  
  168.             //Let the Mediator know what the client said
  169.             myMediator.setClientTalk(label);
  170.  
  171.             //Find out what the developer said
  172.             response = myMediator.getDeveloperTalk();
  173.          }
  174.  
  175.  
  176.  
  177.          /**
  178.           * A helper method which updates the UI elements
  179.           */
  180.  
  181.          public void takeAction()
  182.          {
  183.             clientTalk.setText(label);
  184.             developerTalk.setText(response);
  185.          }
  186.  
  187.         //{{DECLARE_CONTROLS
  188.     java.awt.TextField clientTalk;
  189.     java.awt.Label client;
  190.     java.awt.Label top;
  191.     java.awt.Label developer;
  192.     java.awt.TextField developerTalk;
  193.     //}}
  194. }
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.