/** Clase SalaInfo @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; import java.awt.image.BufferedImage; import java.net.*; import javax.imageio.ImageIO; /** Implementa la clase SalaInfo */ public class SalaInfo { /** Constructor de la clase SalaInfo @param info, string de informacion correspondiente a la sala @param dib, objeto dibujo SalaInfo(String info, int i, Dibujo dib) */ SalaInfo(String info, int i, Dibujo dib) { zonainfo = new Rectangle2D.Double(MARCOHORIZONTAL, MARCOVERTICAL, 0, 0); int aux = i; i = info.indexOf(":", i + 1); infolink = info.substring(aux+1, i); aux = i; i = info.indexOf(":", i + 1); imagensala = null; if((aux+1)!=i) imagensala = info.substring(aux + 1, i); aux = i; dibujo = dib; colorinfo = new Color(215, 215, 255, 255); colortitle = new Color(255, 255, 255, 255); colorlegend = new Color(0, 0, 128, 128); int fin = lastIndexInfo(info); infosala = new ArrayList(); legendasala = new ArrayList(); while(i < fin) { i = info.indexOf(":", i + 1); infosala.add(info.substring(aux + 1, i)); aux = i; } logoimage = loadImage((String)infosala.get(0)+".png"); //System.out.println(((String)infosala.get(0)+".png")); i = fin; aux=i; fin = info.lastIndexOf(":"); while(i < fin) { i = info.indexOf(":", i + 1); legendasala.add(info.substring(aux + 1, i)); aux = i; } } /** 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(colorinfo); g2d.fill(zonainfo); infoimage = loadImage("infosala.png"); g2d.drawImage(infoimage,INFOHORIZONTAL,INFOVERTICAL,dibujo); if (imagensala!=null) { infoimage = loadImage(imagensala); g2d.drawImage(infoimage, 148, 253, dibujo); } g2d.drawImage(logoimage,LOGOHORIZONTAL,LOGOVERTICAL,dibujo); //g2d.draw(zonainfo); g2d.setStroke(new BasicStroke(2.0f)); g2d.setFont(new Font("Berlin Sans FB",Font.PLAIN,12)); g2d.setPaint(colortitle); for (int j = 0; j < infosala.size(); j++) { if(j==1) g2d.drawString((String)infosala.get(j), INFOHORIZONTAL+30, INFOVERTICAL + 15*j + 15); else g2d.drawString((String)infosala.get(j), INFOHORIZONTAL+10, INFOVERTICAL + 15*j + 15); } g2d.setPaint(colorlegend); g2d.setFont(new Font("Californian FB",Font.BOLD,11)); for (int j = 0; j < legendasala.size(); j++) { g2d.drawString((String)legendasala.get(j), MARCOHORIZONTAL+8, MARCOVERTICAL + 15*j + 60); } } public void set(int INFOHORIZONTAL, int INFOVERTICAL, int INFOANCHO, int INFOALTO) { zonainfo.setRect(MARCOHORIZONTAL, MARCOVERTICAL, INFOANCHO, INFOALTO); } /** Permite cargar la imagen asociada a la sala @param nombre, string con el nombre correspondiente a la sala */ public BufferedImage loadImage(String nombre) { URL url=null; try { url = getClass().getClassLoader().getResource(nombre); return ImageIO.read(url); } catch (Exception e) { System.out.println("No se pudo cargar la imagen " + nombre +" de "+url); System.out.println("El error fue : "+e.getClass().getName()+" "+e.getMessage()); System.exit(0); return null; } } /** return entrega el la direccion URL asociada al sector del piso */ public String getLink(){ return infolink; } /** return entrega el nombre de la sala seleccionada */ public String getName(){ return (String)infosala.get(1); } /** return entrega la posicion del ultimo ":" del string de informacion correspondiente a la sala @param info, string de informacion correspondiente a la sala */ private int lastIndexInfo(String info){ int index = info.indexOf(":"); int dospuntos = 1; while(dospuntos<12){ index = info.indexOf(":", index + 1); dospuntos++; } return index; } private Rectangle2D zonainfo; private Color colorinfo, colortitle, colorlegend; private ArrayList infosala; private ArrayList legendasala; private BufferedImage infoimage; private BufferedImage logoimage; private BufferedImage fotoprofe; private Dibujo dibujo; private String infolink; private String imagensala; public static final int INFOVERTICAL = 140; public static final int INFOHORIZONTAL = 730; public static final int MARCOVERTICAL = 230; public static final int MARCOHORIZONTAL = 730; public static final int LOGOHORIZONTAL = 860; public static final int LOGOVERTICAL = 200; }