import javax.swing.*;


import us.monoid.web.JSONResource;
import us.monoid.web.Resty;

import java.awt.*;
import java.awt.event.*;
import java.io.IOException;

@SuppressWarnings("serial")

/**
 * Clase que genera el Panel para agregar un nuevo Curso
 * @author Gonzalo Sanchez, Anibal Catalan, Carlos Polanco, Daniel Veas.
 * @since 30/07/2014
 */
public class Curso extends JDialog {
	private JButton guardarButton, cancelarButton;
	private JLabel cursoLabel, codigoLabel, profesorLabel;
	private JTextField cursoText, codigoText;
	private JComboBox<String> profesores;

 /**
  * Constructor de la Clase
  */
 public Curso() {

  initForm();
  initComponents();
  setVisible(true);
 }
 
 /**
  * Funcion que genera la forma general del panel
  */
 private void initForm() {
  setTitle("Crear Curso");
  setSize(480, 400);
  setLocationRelativeTo(null);
  setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  setResizable(false);
  setModal(true);
 }
 
 private void initComponents() {
	 
  guardarButton = new JButton("Guardar");
  guardarButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) { onGuardarButtonActionPerformed(e); }
  });
  
  cancelarButton = new JButton("Cancelar");
  cancelarButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) { onCancelarButtonActionPerformed(e); }
  });

  cursoLabel = new JLabel("Nombre Curso:");
  codigoLabel = new JLabel("Codigo Curso:");
  profesorLabel = new JLabel("Profesor:");

  cursoText = new JTextField();
  codigoText = new JTextField();
  profesores = new JComboBox<String>();
  
  lista_profesor();

  JPanel botonesPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
  botonesPanel.add(guardarButton);
  botonesPanel.add(cancelarButton);

  JPanel datosPanel = new JPanel(new GridBagLayout());
  datosPanel.add(cursoLabel, new GridBagConstraints(0, 0, 1, 1, 0.25, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));
  datosPanel.add(cursoText, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));
  datosPanel.add(codigoLabel, new GridBagConstraints(0, 1, 1, 1, 0.25, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));
  datosPanel.add(codigoText, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));
  datosPanel.add(profesorLabel, new GridBagConstraints(0, 2, 1, 1, 0.25, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));
  datosPanel.add(profesores, new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));

  getContentPane().setLayout(new BorderLayout());
  getContentPane().add(datosPanel, BorderLayout.NORTH);
  getContentPane().add(botonesPanel, BorderLayout.SOUTH);
 }
 
 /**
  * Funcion que actua como evento cuando se hace click en el boton "guardar".
  * @param e Evento Capturado
  */
 protected void onGuardarButtonActionPerformed(ActionEvent e) {
	  String id_string,name_curso,codigo_curso;
      int id;
  	  APICreator a =new APICreator();
  	  name_curso= cursoText.getText();
	  codigo_curso= codigoText.getText();
	  id= 1+profesores.getSelectedIndex();
	  id_string= Integer.toString(id);
	  a.createCourse(name_curso,  codigo_curso,id_string);
	  ComponentesFormII.curso.setText(null);   
	  ComponentesFormII.texto_area_curso();
	  dispose();
 }
 
 /**
  * Funcion que actua como evento cuando se hace click en el boton "Cancelar".
  * @param e Evento Capturado
  */
 protected void onCancelarButtonActionPerformed(ActionEvent e) {
	  dispose();
	 }
 
 /**
  * Funcion que agrega la lista de profesores para agregarla al ComboBox.
  */
 public void lista_profesor(){
	 
	 Resty r = new Resty();
	  JSONResource test;
	  int total;
	  try{
	      test = r.json("http://dev.tuix.cl/proyecto/api/teacher");
	      total = Integer.parseInt(test.get("data.total").toString());
	      for(int i = 0; i < total; i++) {
	    	  profesores.addItem((String) test.get("data.teachers["+i+"].name"));
	      }
	  } catch (IOException e) {
	      e.printStackTrace();
	  } catch (Exception e) {
	      e.printStackTrace();
	  }	 
 }
}