import java.awt.*; public class HotelMap extends Canvas { private Room[] myRooms; private final int WIDTH = 500; private final int HEIGHT = 150; private Room mySelected; private Image myOffScreen; Graphics buffer; boolean bufferSet; public HotelMap() { bufferSet = false; myRooms = new Room[41]; for (int k=1;k<41;k++) { myRooms[k] = new Room(100+k); } } private void initBuffer() { bufferSet = true; myOffScreen = createImage(WIDTH,HEIGHT); buffer = myOffScreen.getGraphics(); } public Dimension minimumSize() { return new Dimension(WIDTH, HEIGHT); } public Dimension preferredSize() { return new Dimension(WIDTH,HEIGHT); } public void paint(Graphics g) { if (bufferSet == false) initBuffer(); Font f1 = new Font("Helvetica",Font.BOLD,16); buffer.setFont(f1); FontMetrics fm1 = buffer.getFontMetrics(); String head = "Motel 1 Registration Desk"; buffer.drawString(head,WIDTH/2-fm1.stringWidth(head),2+fm1.getHeight()); int roomCount = 0; for (int k=0;k<2;k++) { for (int j=0;j<10;j++) { roomCount++; myRooms[roomCount].draw(buffer,j*Room.ROOM_SIZE+20,k*Room.ROOM_SIZE+40); } } for (int k=0;k<5;k++) { for (int j=0;j<2;j++) { roomCount++; myRooms[roomCount].draw(buffer,j*Room.ROOM_SIZE+40+Room.ROOM_SIZE*10,k*Room.ROOM_SIZE+40); } } for (int k=0;k<5;k++) { for (int j=0;j<2;j++) { roomCount++; myRooms[roomCount].draw(buffer,j*Room.ROOM_SIZE+100+Room.ROOM_SIZE*10,k*Room.ROOM_SIZE+40); } } buffer.drawRect(90,100,70,40); String p = "POOL"; int width = buffer.getFontMetrics().stringWidth(p); buffer.drawString(p,125-width/2,120+buffer.getFontMetrics().getHeight()/2); g.drawImage(myOffScreen,0,0,this); } public void occupy(String roomnum) { myRooms[Integer.parseInt(roomnum)-100].occupied = true; } public void unoccupy(String roomnum) { myRooms[Integer.parseInt(roomnum)-100].occupied = false; } public boolean mouseDown(Event e, int x, int y) { Room temp; if (mySelected != null) { mySelected.deselect(); mySelected = null; } for (int i = 1; i < myRooms.length; i++) { temp = myRooms[i]; if (temp.contains(x,y)) { mySelected = temp; mySelected.select(); repaint(); e.target = this; getParent().action(e,"wingwang"); return true; } } return super.mouseDown(e,x,y); } public int getSelectedNumber() { return mySelected.getNumber(); } }