package faaz_view;

import java.awt.*;
import java.awt.event.*;
//import javax.swing.*;
//import java.awt.geom.*;
//import java.awt.BasicStroke;
import java.lang.Math;
//import javax.swing.*;

public class Frame1_2 extends Frame {

    final static int NO_REGIONS = 100;
    final static int TAM_LINHA = 700;
    final static int ALTURA_JANELA = 600;
    final static int COMPRIMENTO_JANELA = 1000;
//    final static BasicStroke stroke = new BasicStroke(2.5f);
//    final static BasicStroke wideStroke = new BasicStroke(4.0f);

    BorderLayout borderLayout1 = new BorderLayout();
    ScrollPane scrReg = new ScrollPane();
    List lstReg = new List();
    int numRegioes, xMin, xMax,
        reg1Ini[] = new int[NO_REGIONS],
        reg1Fim[] = new int[NO_REGIONS],
        regIni[] = new int[2*NO_REGIONS],
        regFim[] = new int[2*NO_REGIONS];



  //Construct the frame
  public Frame1_2() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try  {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

  //Component initialization
  private void jbInit() throws Exception  {

    //this.getContentPane().setLayout(borderLayout1);
    this.setSize(new Dimension(COMPRIMENTO_JANELA, ALTURA_JANELA));
   // this.panel.setBounds(50,50,150,250);
   // this.getContentPane().add(panel);
    this.setTitle("FAAZ_VIEW");
    this.setLayout(null);
    //this.getContentPane().add(panel, BorderLayout.CENTER);
    scrReg.setBounds(new Rectangle(775, 50, 200, 300));
    this.scrReg.setBackground(Color.white);
    this.lstReg.setBackground(Color.white);
    lstReg.addMouseListener(new java.awt.event.MouseAdapter() {

      public void mouseClicked(MouseEvent e) {
        lstReg_mouseClicked(e);
      }
    }
    );
    this.add(scrReg, null);
//    this.add(scrollPane1, null);
    scrReg.add(lstReg, null);
  }

  //Overridden so we can exit on System Close
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if(e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

  public void paint(Graphics g) {
      int i, x[] = new int[4], y[] = new int[4], xOffset = 50, yOffset = 50;

//      g.setXORMode(Color.white);

      // Cor das linhas dos consensos
      g.setColor(Color.red);

      // Espessura das linhas dos consensos - para mudar, modifique o valor da
      // constante wideStroke
//      g.setStroke(wideStroke);

      // Desenhando as linhas
      g.drawLine(xOffset, yOffset, xOffset + TAM_LINHA, yOffset);
      g.drawLine(xOffset, yOffset + 500, xOffset + TAM_LINHA, yOffset + 500);

      // Desenhando as regioes
//      g.setStroke(stroke);
      for (i=0; i< numRegioes; i++) {
          // acrescentando regiao na lista
          this.lstReg.add("Reg_"+i+" ("+reg1Ini[i]+"    "+reg1Fim[i]+"): ");
          this.lstReg.add("        "+"("+regIni[2*i]+"    "+regFim[2*i]+")");
          this.lstReg.add("        "+"("+regIni[2*i+1]+"    "+regFim[2*i+1]+")");
          g.setFont(new Font("Arial",Font.BOLD,10));
          x[0] = xOffset + (int) (((reg1Ini[i] - xMin)*TAM_LINHA) / (xMax - xMin));  //12
          x[1] = xOffset + (int) (((reg1Fim[i] - xMin)*TAM_LINHA) / (xMax - xMin));  //
          x[2] = xOffset + (int) (((regIni[2*i] - xMin)*TAM_LINHA) / (xMax - xMin));
          x[3] = xOffset + (int) (((regFim[2*i] - xMin)*TAM_LINHA) / (xMax - xMin));
          y[0] = yOffset;
          y[1] = yOffset;
          y[2] = yOffset+500;
          y[3] = yOffset+500;
          // Escrevendo labels nas regions
          g.setColor(Color.black);
          g.drawString("Reg_" + i,x[0],y[0] - 7);
          g.setColor(Color.black);
          g.drawString("Reg_" + i,x[3],y[3] + 12);
          // Desenhando primeira regiao
          g.setColor(Color.blue);
          g.drawPolygon(x,y,4);

          // Segunda regiao
          x[0] = xOffset + (int) (((reg1Ini[i] - xMin)*TAM_LINHA) / (xMax - xMin)) - 2;
          x[1] = xOffset + (int) (((reg1Fim[i] - xMin)*TAM_LINHA) / (xMax - xMin)) - 2;
          x[2] = xOffset + (int) (((regIni[i*2 + 1] - xMin)*TAM_LINHA) / (xMax - xMin));
          x[3] = xOffset + (int) (((regFim[i*2 + 1] - xMin)*TAM_LINHA) / (xMax - xMin));

          g.setColor(Color.yellow);
          g.drawPolygon(x,y,4);
      }


  }

  void lstReg_mouseClicked(MouseEvent e) {
  int index = this.lstReg.getSelectedIndex();

      if (index % 3 != 0) {
         this.setTitle(this.regIni[index-1] + " - " + this.regFim[index - 1]);
      }
  }

}
