PantallaGestionarCursos.java

package presentacion;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;

import negocio.controllers.GestorConsultas;
import negocio.controllers.GestorPropuestasCursos;
import negocio.entities.CursoPropio;
import negocio.entities.EstadoCurso;
import negocio.entities.ProfesorUCLM;

@Generated
public class PantallaGestionarCursos extends JFrame{

	private List<CursoPropio> cursosDao = null;
	private DefaultTableModel cursosEnviados = new DefaultTableModel(); 
	private JTable cursosTable = new JTable();


	public PantallaGestionarCursos (ProfesorUCLM director) {
		initLayout();
		listLayout(director);
		botonesLayout(director);
	}

	private void initLayout() {
		// Propiedades basicas
		getContentPane().setLayout(null);
		setBounds(10, 10, 800,600);
		setTitle("Gestion de cursos propuestos");
		setResizable(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setVisible(true);

	}

	private void listLayout(ProfesorUCLM director) {
		GestorConsultas gestor = new GestorConsultas();

		try {
			cursosDao = gestor.listarCursosPorDirector(director);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		cursosEnviados.addColumn("Nombre");
		cursosEnviados.addColumn("Edicion");
		cursosEnviados.addColumn("Estado");

		if(cursosDao != null) {	
			for(int i = 0; i<cursosDao.size(); i++) {
				CursoPropio cursoTemp = cursosDao.get(i);
				cursosEnviados.insertRow(i, new Object[] { cursoTemp.getNombre(), cursoTemp.getEdicion(), cursoTemp.estado });
			}
		}

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

		cursosTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

		JScrollPane scrollLista = new JScrollPane(cursosTable);
		scrollLista.setBounds(199, 113, 400, 200);
		getContentPane().add(scrollLista);
	}

	private void botonesLayout(final ProfesorUCLM director) {
		// Boton para realizar propuesta de curso
		JButton button = new JButton("Realizar propuesta");
		button.setBounds(195,324,200,30);
		getContentPane().add(button);

		button.addActionListener(new ActionListener() {
			@Generated @Override
			public void actionPerformed(ActionEvent e) {
				CursoPropio curso = new CursoPropio(); 
				new PantallaPropuestaCurso(director, curso, 0);
				setVisible(false);
			}

		});

		// Boton para nueva edicion de curso
		button = new JButton("Nueva edición");
		button.setBounds(405,324,200,30);
		getContentPane().add(button);

		button.addActionListener(new ActionListener() {
			@Generated @Override
			public void actionPerformed(ActionEvent e) {
				if(cursosTable.getSelectionModel().isSelectionEmpty()) return;
				CursoPropio curso = cursosDao.get(cursosTable.getSelectedRow());
				if(curso.estado == EstadoCurso.TERMINADO) {
					new PantallaPropuestaCurso(director, curso, 2);
					setVisible(false);
				}
				
			}


		});

		// Boton para editar propuesta de curso
		button = new JButton("Editar");
		button.setBounds(195,365,200,30);
		getContentPane().add(button);

		button.addActionListener(new ActionListener() {
			@Generated @Override
			public void actionPerformed(ActionEvent e) {
				if(cursosTable.getSelectionModel().isSelectionEmpty()) return;
				CursoPropio curso = cursosDao.get(cursosTable.getSelectedRow());
				
				if(curso.estado == EstadoCurso.PROPUESTO || curso.estado == EstadoCurso.PROPUESTA_RECHAZADA) {
					new PantallaPropuestaCurso(director, curso, 1);
					setVisible(false);
				}
				
			}

		});

		// Boton para eliminar propuesta de curso
		button = new JButton("Eliminar");
		button.setBounds(405,365,200,30);
		getContentPane().add(button);

		button.addActionListener(new ActionListener() {
			@Generated @Override
			public void actionPerformed(ActionEvent e) {
				if(cursosTable.getSelectionModel().isSelectionEmpty()) return;    
				
				int confirm = JOptionPane.showConfirmDialog(null,"¿Eliminar propuesta de curso?","Eliminar propuesta de curso",JOptionPane.YES_NO_OPTION, 1);
				
				if (confirm == 0) {
					GestorPropuestasCursos gestor = new GestorPropuestasCursos();
					try {
						gestor.eliminarPropuestaCurso(cursosDao.get(cursosTable.getSelectedRow()));
					} catch (Exception e1) {
						e1.printStackTrace();
					}
					cursosEnviados.removeRow(cursosTable.getSelectedRow());
				}
			}

		});


		// Boton para ir atras
		button = new JButton("Atras");
		button.setBounds(10,520,200,30);
		getContentPane().add(button);

		button.addActionListener(new ActionListener() {
			@Generated @Override
			public void actionPerformed(ActionEvent e) {
				new PantallaDireccionCursos(director);
				setVisible(false);
			}

		});

	}
}