package core;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.io.UnsupportedEncodingException;
import java.util.ResourceBundle;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JToolBar.Separator;
import javax.swing.SwingConstants;
import javax.swing.UIManager;

import utils.Fuentes;
import utils.RutasIconos;
import business.Configuracion;

public class PanelInfo extends JPanel {

	private static final long serialVersionUID = 0x8dfce20875a30ee8L;
	private ResourceBundle mensajes;
	private Point p;

	private JLabel separador7;
	private JLabel ratonIcono;
	private JPanel panelRaton;
	private JLabel xText;
	private JLabel yText;

	private JPanel panelVertices;
	private JPanel panelAristas;
	private JLabel verticesIcono;
	private JLabel verticesNumero;
	private JLabel verticeSeleccionadoIcono;
	private JLabel verticesSeleccionadosNumero;
	private JLabel aristasIcono;
	private JLabel aristasNumero;
	private JLabel aristaSeleccionadaIcono;
	private JLabel aristaSeleccionadaNumero;

	private JPanel panelModos;
	private JLabel modoEscritura;
	private JLabel modoLectura;


	public PanelInfo() {
		try {
			UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
			com.birosoft.liquid.LiquidLookAndFeel.setLiquidDecorations(true);
		} catch(Exception e) {
			e.printStackTrace();
		}
		p = new Point(0, 0);
		separador7 = new JLabel();
		ratonIcono = new JLabel();
		panelVertices = new JPanel();
		panelAristas = new JPanel();
		panelRaton = new JPanel();
		xText = new JLabel();
		yText = new JLabel();
		panelModos = new JPanel();
		modoEscritura = new JLabel();
		modoLectura = new JLabel();
		verticesNumero = new JLabel("0");
		verticesSeleccionadosNumero = new JLabel();
		aristasNumero = new JLabel("0");
		aristaSeleccionadaNumero = new JLabel();
		verticesIcono = new JLabel();
		verticeSeleccionadoIcono = new JLabel();
		aristasIcono = new JLabel();
		aristaSeleccionadaIcono = new JLabel();


		setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
		setPreferredSize(new Dimension(100, 100));

		Separator s1 = new Separator();
		s1.setSeparatorSize(new Dimension(1, 20));
		add(s1);


		JPanel grupo7 = new JPanel();

		ratonIcono.setIcon(new ImageIcon(getClass().getClassLoader().getResource(RutasIconos.Raton)));
		panelRaton.add(ratonIcono);
		xText.setHorizontalAlignment(SwingConstants.CENTER);
		xText.setFont(Fuentes.Fuente3);
		xText.setPreferredSize(new Dimension(38,20));
		yText.setHorizontalAlignment(SwingConstants.CENTER);
		yText.setFont(Fuentes.Fuente3);
		yText.setPreferredSize(new Dimension(38,20));
		grupo7.setPreferredSize(new Dimension(100,100));
		grupo7.add(xText);
		grupo7.add(separador7);
		grupo7.add(yText);
		panelRaton.setPreferredSize(new Dimension(100, 100));
		panelRaton.add(grupo7);
		add(panelRaton);


		Separator s2 = new Separator();
		s2.setSeparatorSize(new Dimension(1, 50));
		add(s2);

		JLabel separador1 = new JLabel(" : ");
		JLabel separador2 = new JLabel(" : ");
		JLabel separador3 = new JLabel(" : ");
		JLabel separador4 = new JLabel(" : ");
		JPanel grupo1 = new JPanel();
		JPanel grupo2 = new JPanel();
		JPanel grupo3 = new JPanel();
		JPanel grupo4 = new JPanel();

		verticesIcono.setIcon(new ImageIcon(getClass().getClassLoader().getResource(RutasIconos.Transparente)));
		grupo1.add(verticesIcono);
		grupo1.add(separador1);
		verticesNumero.setFont(Fuentes.Fuente3);
		verticesNumero.setPreferredSize(new Dimension(55,28));
		grupo1.add(verticesNumero);
		panelVertices.add(grupo1);
		verticeSeleccionadoIcono.setIcon(new ImageIcon(getClass().getClassLoader().getResource(RutasIconos.Transparente)));
		grupo2.add(verticeSeleccionadoIcono);
		grupo2.add(separador2);
		verticesSeleccionadosNumero.setFont(Fuentes.Fuente3);
		verticesSeleccionadosNumero.setPreferredSize(new Dimension(55,28));
		grupo2.add(verticesSeleccionadosNumero);
		panelVertices.add(grupo2);
		panelVertices.setPreferredSize(new Dimension(100, 100));
		add(panelVertices);


		aristasIcono.setIcon(new ImageIcon(getClass().getClassLoader().getResource(RutasIconos.Transparente)));
		grupo3.add(aristasIcono);
		grupo3.add(separador3);
		aristasNumero.setFont(Fuentes.Fuente3);
		aristasNumero.setPreferredSize(new Dimension(55,28));
		grupo3.add(aristasNumero);
		panelAristas.add(grupo3);
		aristaSeleccionadaIcono.setIcon(new ImageIcon(getClass().getClassLoader().getResource(RutasIconos.Transparente)));
		grupo4.add(aristaSeleccionadaIcono);
		grupo4.add(separador4);
		aristaSeleccionadaNumero.setFont(Fuentes.Fuente3);
		aristaSeleccionadaNumero.setPreferredSize(new Dimension(55,28));
		grupo4.add(aristaSeleccionadaNumero);
		panelAristas.add(grupo4);
		panelAristas.setPreferredSize(new Dimension(100, 100));
		add(panelAristas);


		Separator s3 = new Separator();
		s3.setSeparatorSize(new Dimension(1, 100));
		add(s3);

		JPanel grupo6 = new JPanel();
		JLabel separador6 = new JLabel(" ");

		modoEscritura.setIcon(new ImageIcon(getClass().getClassLoader().getResource(RutasIconos.ModoEscritura)));
		modoEscritura.setEnabled(true);
		grupo6.add(modoEscritura);
		separador6.setPreferredSize(new Dimension(25,25));
		grupo6.add(separador6);
		modoLectura.setIcon(new ImageIcon(getClass().getClassLoader().getResource(RutasIconos.ModoLectura)));
		modoLectura.setEnabled(false);
		grupo6.add(modoLectura);
		panelModos.add(grupo6);
		panelModos.setPreferredSize(new Dimension(100, 100));
		add(panelModos);
		setBackground(new Color(172,213,215));
	}

	public void mostrarNumeroVertices(int s) {
		verticesNumero.setText((new StringBuilder()).append(s).toString());
	}

	public void mostrarNumeroVerticesSeleccionados(int s) {
		verticesSeleccionadosNumero.setText((new StringBuilder()).append(s).toString());
	}

	public void mostrarNumeroAristas(int s) {
		aristasNumero.setText((new StringBuilder()).append(s).toString());
	}

	public void mostrarNumeroAristasSeleccionadas(int s) {
		aristaSeleccionadaNumero.setText((new StringBuilder()).append(s).toString());
	}

	public void activarModoLectura(Boolean lectura) {
		modoLectura.setEnabled(lectura);
		modoEscritura.setEnabled(!lectura);
	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		xText.repaint();
		yText.repaint();
		verticesNumero.repaint();
		verticesSeleccionadosNumero.repaint();
		aristasNumero.repaint();
		aristaSeleccionadaNumero.repaint();

		Graphics2D g2D = (Graphics2D)g;
		g2D.setColor(Configuracion.getColorVertice());
		g2D.fillOval(3, 204, 20, 20);
		g2D.setColor(Configuracion.getColorVerticeSeleccionado());
		g2D.fillOval(3, 247, 20, 20);
		g2D.setStroke(new BasicStroke(4));
		g2D.setColor(Configuracion.getColorArista());
		g2D.drawLine(25, 307, 5, 327);
		g2D.setColor(Configuracion.getColorAristaSeleccionada());
		g2D.drawLine(25, 350, 5, 370);
	}

	public void setMensajes(ResourceBundle m) {
		mensajes = m;
		try {
			ratonIcono.setToolTipText(new String(mensajes.getString("posicionRaton").getBytes("ISO-8859-1"),"UTF-8"));
			if(verticesSeleccionadosNumero.getText() == "" || verticesSeleccionadosNumero.getText().equals("NoSeleccionado"))
				verticesSeleccionadosNumero.setText("0");
			if(aristaSeleccionadaNumero.getText() == "" || aristaSeleccionadaNumero.getText().equals("NoSeleccionado"))
				aristaSeleccionadaNumero.setText("0");
			verticesIcono.setToolTipText(new String(mensajes.getString("NumVertices").getBytes("ISO-8859-1"),"UTF-8"));
			aristasIcono.setToolTipText(new String(mensajes.getString("NumAris").getBytes("ISO-8859-1"),"UTF-8"));
			verticeSeleccionadoIcono.setToolTipText(new String(mensajes.getString("SelNodo").getBytes("ISO-8859-1"),"UTF-8"));
			aristaSeleccionadaIcono.setToolTipText(new String(mensajes.getString("SelAris").getBytes("ISO-8859-1"),"UTF-8"));
			modoEscritura.setToolTipText(new String(mensajes.getString("modoEscritura").getBytes("ISO-8859-1"),"UTF-8"));
			modoLectura.setToolTipText(new String(mensajes.getString("modoLectura").getBytes("ISO-8859-1"),"UTF-8"));
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}

	public JLabel getModoEscritura() {
		return modoEscritura;
	}

	public void setPoint(Point punto) {
		p = punto;
		separador7.setText(" , ");
		xText.setText(new StringBuilder().append(p.x).toString());
		yText.setText(new StringBuilder().append(p.y).toString());
	}

}