PantallaDatosCurso.java

package presentacion;

import javax.swing.JFrame;

import negocio.controllers.GestorPropuestasCursos;
import negocio.entities.CursoPropio;
import negocio.entities.EstadoCurso;
import negocio.entities.Materia;
import negocio.entities.ProfesorUCLM;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.util.Collection;
import java.awt.Color;
import java.awt.event.ActionEvent;
import javax.swing.JTextArea;
import javax.swing.JRadioButton;
import java.util.Iterator;

@Generated
public class PantallaDatosCurso extends JFrame {
	private DefaultTableModel materiasCurso = new DefaultTableModel(); 

	JTextArea descripcion;
	JRadioButton aceptarPropuesta;
	JRadioButton rechazarPropuesta;


	public PantallaDatosCurso (int type, ProfesorUCLM director, CursoPropio curso) {
		initLayout();
		basicLayout(type, director, curso);
		tablaMaterias(curso);

		if (type == 2)	evaluarCurso();

		botonesLayout(type, director, curso);
	}

	private void initLayout() {
		setBounds(10, 10, 800,600);
		setTitle("Gestion de cursos propuestos");
		setResizable(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setVisible(true);
	}

	private void basicLayout(final int type, final ProfesorUCLM director, final CursoPropio curso) {
		// Propiedades basicas
		getContentPane().setLayout(null);

		JLabel tasaMatricula = new JLabel("Centro: " + curso.centro.getNombre());
		tasaMatricula.setBounds(43, 75, 200, 14);
		getContentPane().add(tasaMatricula);

		JLabel tituloCurso = new JLabel("Titulo: " + curso.getNombre());
		tituloCurso.setBounds(43, 27, 250, 14);
		getContentPane().add(tituloCurso);

		JLabel precio = new JLabel("Precio: " + curso.getTasaMatricula());
		precio.setBounds(43, 175, 200, 14);
		getContentPane().add(precio);

		JLabel creditos = new JLabel("Creditos: " + curso.getECTS());
		creditos.setBounds(43, 125, 200, 14);
		getContentPane().add(creditos);

		JLabel directorLabel = new JLabel("Profesor Director: " + curso.director.getNombre());
		directorLabel.setBounds(43, 100, 200, 14);
		getContentPane().add(directorLabel);

		JLabel fechaInicio = new JLabel("Fecha Inicio: " + curso.getFechaInicio());
		fechaInicio.setBounds(43, 200, 200, 14);
		getContentPane().add(fechaInicio);

		JLabel edicion = new JLabel("Edicion: " + curso.getEdicion());
		edicion.setBounds(43, 52, 200, 14);
		getContentPane().add(edicion);

		JLabel categoria = new JLabel("Categoria: " + curso.tipo);
		categoria.setBounds(43, 150, 200, 14);
		getContentPane().add(categoria);

		JLabel fechaFin = new JLabel("Fecha Fin: " + curso.getFechaFin());
		fechaFin.setBounds(43, 225, 200, 14);
		getContentPane().add(fechaFin);

		JLabel materiasLabel = new JLabel("Materias");
		materiasLabel.setBounds(473, 27, 53, 14);
		getContentPane().add(materiasLabel);
	}

	private void evaluarCurso(){
		descripcion = new JTextArea();
		descripcion.setBounds(306, 300, 400, 163);
		getContentPane().add(descripcion);

		aceptarPropuesta = new JRadioButton("Aceptar propuesta");
		aceptarPropuesta.setBounds(125, 301, 157, 23);
		getContentPane().add(aceptarPropuesta);

		rechazarPropuesta = new JRadioButton("Rechazar Propuesta");
		rechazarPropuesta.setBounds(125, 334, 157, 23);
		getContentPane().add(rechazarPropuesta);

		ButtonGroup group = new ButtonGroup();
		group.add(aceptarPropuesta);
		group.add(rechazarPropuesta);

		aceptarPropuesta.addActionListener(new ActionListener() {
			@Generated @Override
			public void actionPerformed(ActionEvent e) {
				descripcion.setEnabled(false);
				descripcion.setText("");
				descripcion.setBackground(Color.lightGray);
			}
		});

		rechazarPropuesta.addActionListener(new ActionListener() {
			@Generated @Override
			public void actionPerformed(ActionEvent e) {
				descripcion.setEnabled(true);
				descripcion.setBackground(Color.white);
			}
		});
	}

	private void tablaMaterias(CursoPropio curso) {
		materiasCurso.addColumn("Nombre");
		materiasCurso.addColumn("Responsable");
		materiasCurso.addColumn("Horas");
		materiasCurso.addColumn("Fecha Inicio");
		materiasCurso.addColumn("Fecha Fin");
		
		Collection<Materia> materias = curso.materias;
		if (materias!=null) {
			Iterator<Materia> ite = materias.iterator();
			while(ite.hasNext()){
				Materia temp = ite.next();
				materiasCurso.addRow(new Object[] { temp.getNombre(), temp.responsable, temp.getHoras(), temp.getFechaInicio() ,temp.getFechaFin() });
			}
		}


		JTable materiasTable = new JTable(materiasCurso){
			@Generated @Override
			public boolean isCellEditable(int rowIndex, int colIndex) {
				return false; //Disallow the editing of any cell
			}
		};

		materiasTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

		JScrollPane scrollLista = new JScrollPane(materiasTable);
		scrollLista.setBounds(306, 51, 400, 188);
		getContentPane().add(scrollLista);
	}

	private void botonesLayout(final int type, final ProfesorUCLM director, final CursoPropio curso) {
		JButton btnNewButton = new JButton("Atras");
		btnNewButton.addActionListener(new ActionListener() {
			@Generated @Override
			public void actionPerformed(ActionEvent e) {
				if (type == 0 || type == 1) new PantallaCursosAprobados(type, director);
				else new PantallaEmpleadosVicerrectorado();
				setVisible(false);
			}
		});
		btnNewButton.setBounds(10, 513, 200,30);
		getContentPane().add(btnNewButton);

		JButton btnMatricularEvaluar = new JButton("Matricular");
		btnMatricularEvaluar.addActionListener(new ActionListener() {
			@Generated @Override
			public void actionPerformed(ActionEvent e) {
				
				int confirm = 1;

				if (type == 0) { 
					confirm = JOptionPane.showConfirmDialog(null,"¿Matricular?","Matricular en curso",JOptionPane.YES_NO_OPTION, 1);
				} else { 
					confirm = JOptionPane.showConfirmDialog(null,"¿Evaluar propuesta?","Evaluar propuesta",JOptionPane.YES_NO_OPTION, 1);
				}
				
				if(confirm == 0)  {
					if (type == 0) {
						new PantallaMatriculacion(director, curso); //aqui hay que meter alumno
		                setVisible(false);
					}	
					else {  // Evaluar
						
						if (!evaluarPropuestaCorrecto(type)) return;
						
						GestorPropuestasCursos gestor = new GestorPropuestasCursos();
						if (aceptarPropuesta.isSelected()) curso.estado = EstadoCurso.VALIDADO;
						else curso.estado = EstadoCurso.PROPUESTA_RECHAZADA;
						
						try {
							gestor.editarPropuestaCurso(curso);
						} catch (Exception e1) {
							e1.printStackTrace();
							
						}
						
						new PantallaEmpleadosVicerrectorado();
						setVisible(false);
					}
					
				}
			}
		});
		btnMatricularEvaluar.setBounds(574, 513, 200,30);
		getContentPane().add(btnMatricularEvaluar);

		// CAMBIOS DE BOTONES
		if (type == 1) btnMatricularEvaluar.setVisible(false);
		else if (type == 2) btnMatricularEvaluar.setText("Evaluar");		
	}
	
	public boolean evaluarPropuestaCorrecto(final int type) {
		boolean result = true;
		if (!aceptarPropuesta.isSelected() && !rechazarPropuesta.isSelected()) {
			aceptarPropuesta.setBackground(new Color(222, 129, 122));
			rechazarPropuesta.setBackground(new Color(222, 129, 122));
			result = false;
		}else {
			aceptarPropuesta.setBackground(getBackground());
			rechazarPropuesta.setBackground(getBackground());
		}
		
		if (type == 2 && rechazarPropuesta.isSelected()) {
			if (descripcion.getText().equals("")) {
				descripcion.setBackground(new Color(222, 129, 122));
				result = false;
			} else {
				descripcion.setBackground(new Color(255, 255, 255));
			}
		}
		
		return result;
	}
}