/** Clase Sala @author Diego Gonzalez @author José Ignacio Guerra @author Patricio Valle */ import java.awt.*; import java.awt.geom.*; import java.lang.Math; import java.util.ArrayList; /** Implementa la clase Sala */ public class Sala { /** Constructor de la clase Sala @param info, string de informacion correspondiente a la sala @param dib, objeto dibujo */ Sala(String info, Dibujo dib){ int x, y, w, h, r, g, b, link, piso; x = info.indexOf(":", 0); y = info.indexOf(":", x + 1); w = info.indexOf(":", y + 1); h = info.indexOf(":", w + 1); sala = new Rectangle2D.Double(Integer.parseInt(info.substring(0, x)), Integer.parseInt(info.substring(x + 1, y)), Double.parseDouble(info.substring(y + 1, w)), Double.parseDouble(info.substring(w + 1 , h))); r = info.indexOf(":", h + 1); g = info.indexOf(":", r + 1); b = info.indexOf(":", g + 1); color = new Color(Integer.parseInt(info.substring(h + 1, r)), Integer.parseInt(info.substring(r + 1, g)), Integer.parseInt(info.substring(g + 1, b))); colortransp = new Color(245, 250, 19, 100); piso = info.indexOf(":", b + 1); this.piso = Integer.parseInt(info.substring(b + 1, piso)); salainfo = new SalaInfo(info, piso, dib); } /** Metodo que retorna valor de atributo fill return retorna tru o false dependiendo del contenido de fill */ public boolean getFill() { return fill; } /** Metodo que nos permite que la sala sea dibujable @param g2d Objeto graphics2d que permite dibujar la sala */ public void paintComponent(Graphics2D g2d) { g2d.setPaint(color); g2d.fill(sala); g2d.draw(sala); if(fill) { g2d.setPaint(colortransp); g2d.fill(sala); g2d.draw(sala); salainfo.paintComponent(g2d); } } /** Metodo que hace invisible rectangulos luego de generada la accion sobre la sala */ public void desmarcar() { fill = false; } /** Metodo que permite determinar si mouse presionado se encuentra sobre la sala @param p Punto que identifica posicion del mouse sobre el panel return Retorna true si el punto se encuentra sobre una sala */ public boolean find(Point2D p) { if (sala.contains(p)) { fill = true; salainfo.set(INFOHORIZONTAL, INFOVERTICAL, INFOANCHO, INFOALTO); return true; } else fill = false; return false; } /** Metodo que encuentra el link asociado a cada sala o lugar del mapa @param p, punto en el cual se encuentra posicionado el mouse */ public boolean findLink(Point2D p) { if(find(p)) return true; else return false; } /** return entrega el identificador del piso actual (2, 3 o 4) */ public int getPiso() { return piso; } /** Metodo que determina si la sala se encuentra dentro de zona @param x coordenada de esquina superior de izquierda zona @param y coordenada de esquina superior izquierda de zona @param ancho ancho de zona @param alto alto de zona */ public void findZona(double x, double y, double ancho, double alto) { int i = 0; if(sala.contains(x, y, ancho, alto)) { fill = true; } else fill = false; } /** return entrega el la direccion URL asociada al sector del piso */ public String getLink(){ return salainfo.getLink(); } /** return entrega el nombre de la sala seleccionada */ public String getName(){ return salainfo.getName(); } public static final double CERO = 0.0; public static final int TRES = 3; public static final int CUATRO = 4; public static final double TAMANO = 8.0; public static final int INFOVERTICAL = 140; public static final int INFOHORIZONTAL = 730; public static final int INFOALTO = 350; public static final int INFOANCHO = 167; private Rectangle2D sala; private boolean fill = false; private String link; private int piso; private Color color, colortransp; private SalaInfo salainfo; }