home *** CD-ROM | disk | FTP | other *** search
/ Java Developer's Companion / Java Developer's Companion.iso / Javacup / IN231VFD.TAR / internet / IN231VFD / HouseView.java < prev    next >
Encoding:
Java Source  |  1996-05-21  |  2.4 KB  |  88 lines

  1. //    HouseView.java - Shows floor plan and allows selecting cameras
  2. //
  3. //    Copyright (C) 1996 by Dale Gass
  4. //    Non-exclusive license granted to MKS, Inc.
  5. //
  6.  
  7. import java.lang.*;
  8. import java.util.*;
  9. import java.awt.*;
  10. import java.net.*;
  11. import java.applet.*;
  12. import java.awt.image.*;
  13.  
  14.  
  15. // HouseView - pop up view within a house
  16.  
  17. public class HouseView extends Canvas {
  18.     MediaTracker mt;    // Tracks image loading
  19.     Image view;        // The image itself
  20.     Applet app;        // Parent applet
  21.     House house;    // Our house
  22.     Camera cams[];    // Camera views
  23.     int selcamera = -1;    // Currently selected camera
  24.     int floor;        // Which floor
  25.  
  26.     // Constructor - load the image
  27.  
  28.     public HouseView(Applet a, House h, int n) {
  29.         app = a;
  30.     house = h;
  31.     floor = n;
  32.  
  33.     mt = new MediaTracker(app);
  34.  
  35.     mt.addImage(view = app.getImage(app.getCodeBase(), 
  36.         h.getCode() + floor + ".gif"), 0);
  37.     try { mt.waitForAll(); } catch(Exception e) { }
  38.     }
  39.  
  40.     // Tell layout manager what size we want
  41.  
  42.     public Dimension minimumSize()   { return new Dimension(600, 350); }
  43.     public Dimension preferredSize() { return new Dimension(600, 350); }
  44.  
  45.     // Draw the cameras over the floor plan
  46.  
  47.     public void drawCameras(Graphics g) {
  48.     cams = HouseServer.getCameras(house, floor);
  49.     for (int i=0; i<cams.length; i++)
  50.         cams[i].draw(g, selcamera == i ? Color.white : Color.blue);
  51.     }
  52.  
  53.     // paint the object; draw floorplan, then cameras
  54.  
  55.     public void paint(Graphics g) {
  56.         g.drawImage(view, 0, 0, app);
  57.         drawCameras(g);
  58.     }
  59.  
  60.     // Watch the mouse, highlight the closest camera; upon a click, launch
  61.     // a view...  Wait for mouse up, since mouse down events get doubled up 
  62.     // upon application focus change.  Arrrgh.
  63.  
  64.     public boolean handleEvent(Event evt) {
  65.         if (evt.id == Event.MOUSE_MOVE) {
  66.         int mindist = 9999;
  67.         int newselected = -1;
  68.         if (cams != null) for (int i=0; i<cams.length; i++) {
  69.         int dist = ((evt.x - cams[i].x) * (evt.x - cams[i].x) +
  70.                 (evt.y - cams[i].y) * (evt.y - cams[i].y));
  71.         if (dist < mindist) {
  72.             newselected = i;
  73.             mindist = dist;
  74.         }
  75.         }
  76.         if (newselected != selcamera) {
  77.         selcamera = newselected;
  78.         drawCameras(getGraphics());
  79.         }
  80.     } else if (evt.id == Event.MOUSE_UP && selcamera != -1) {
  81.         CameraView cv = new CameraView(app, house, floor, selcamera, 
  82.                 cams[selcamera]);
  83.     } else
  84.         return (false);
  85.     return (true);
  86.     }
  87. }
  88.