package vista;
import java.awt.Color;
import java.awt.Font;
import java.awt.Rectangle;
import java.util.LinkedList;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.RowFilter;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import base.Personal;
import base.PersonalDTO;
import javax.swing.JComboBox;
import javax.swing.BorderFactory;
import javax.swing.border.SoftBevelBorder;
import renderer.RendererPersonal;
import editor.EditorPersonal;
public class AbmPersonal<M, I> extends PanelGeneral {
private TableRowSorter<TableModel> modeloOrdenado;
private static final long serialVersionUID = 1L;
public Tabla table = new Tabla(8,10,12);
DefaultTableModel dtm = (DefaultTableModel) table.getModel();
JScrollPane scrollPane = new JScrollPane(table);
String[] prueba = new String[8];
private JPanel panelFiltro;
private JPanel panelTabla;
private JLabel etiquetaIcono;
public JComboBox selectorTipoId = null;
private JTextField textoTipoId;
private JTextField textoIdFiscal;
static JDialog dialog = new JDialog();
Personal p = new Personal();
private JLabel etiquetaNombreF;
private JLabel etiquetaApellidoF;
private JLabel etiquetaDocumentoF;
private JTextField textoDocumentoF;
private JTextField textoApellidoF;
private JTextField textoNombreF;
private JButton botonSalir;
@SuppressWarnings("unchecked")
static private AbmPersonal singletonAbmPersonal = null;
private JButton botonNuevo;
/**
* This is the default constructor
*/
public AbmPersonal() {
super();
initialize();
inicializarTabla();
this.getEtiquetaRutaNavegacion().setText(" Inicio - Gesti�n de Personal");
this.add(botonSalir, null);
}
@SuppressWarnings("unchecked")
static public AbmPersonal Personal() {
if (singletonAbmPersonal == null) {
singletonAbmPersonal = new AbmPersonal();
} else {
singletonAbmPersonal.limpiar(singletonAbmPersonal);
singletonAbmPersonal.cargarTabla();
}
return singletonAbmPersonal;
}
public void termino() {
this.removeAll();
this.add(getPanelFiltro(), null);
this.add(getPanelRutaNavegacion());
this.add(botonSalir, null);
this.repaint();
cargarTabla();
}
public void inicializarTabla() {
dtm.addColumn("N�mero");
dtm.addColumn("Nombre");
dtm.addColumn("Apellido");
dtm.addColumn("Especialidad");
dtm.addColumn("Documento");
dtm.addColumn("Tel�fono");
dtm.addColumn("Direcci�n");
dtm.addColumn("");
dtm.addColumn("");
dtm.addColumn("");
dtm.addColumn("");
dtm.addColumn("");
dtm.addColumn("");
dtm.addColumn("");
table.setRowHeight(27);
table.setShowVerticalLines(false);
TableColumn columna;
columna = table.getColumnModel().getColumn(0);
columna.setMinWidth(40);
columna.setPreferredWidth(60);
columna.setMaxWidth(80);
columna = table.getColumnModel().getColumn(1);
columna.setPreferredWidth(5);
columna = table.getColumnModel().getColumn(2);
columna.setPreferredWidth(10);
columna = table.getColumnModel().getColumn(3);
columna.setPreferredWidth(10);
columna = table.getColumnModel().getColumn(4);
columna.setPreferredWidth(10);
TableColumn agregarColumn;
agregarColumn = table.getColumnModel().getColumn(8);
agregarColumn.setCellEditor(new EditorPersonal(this,8,10));
agregarColumn.setCellRenderer(new RendererPersonal(true,8,10));
agregarColumn.setMaxWidth(40);
agregarColumn.setMinWidth(40);
TableColumn agregar2Column;
agregar2Column = table.getColumnModel().getColumn(7);
agregar2Column.setMaxWidth(10);
agregar2Column.setMinWidth(10);
TableColumn agregar3Column;
agregar3Column = table.getColumnModel().getColumn(10);
agregar3Column.setCellEditor(new EditorPersonal(this,8,10));
agregar3Column.setCellRenderer(new RendererPersonal(true,8,10));
agregar3Column.setMaxWidth(40);
agregar3Column.setMinWidth(40);
scrollPane.setVisible(true);
scrollPane.setBounds(new Rectangle(10, 20, 770, 250));
TableColumn agregar4Column;
agregar4Column = table.getColumnModel().getColumn(9);
agregar4Column.setMaxWidth(10);
agregar4Column.setMinWidth(10);
TableColumn agregar5Column;
agregar5Column = table.getColumnModel().getColumn(12);
agregar5Column.setCellEditor(new EditorPersonal(this,8,10));
agregar5Column.setCellRenderer(new RendererPersonal(true,8,10));
agregar5Column.setMaxWidth(40);
agregar5Column.setMinWidth(40);
TableColumn agregar6Column;
agregar6Column = table.getColumnModel().getColumn(11);
agregar6Column.setMaxWidth(10);
agregar6Column.setMinWidth(10);
TableColumn agregar7Column;
agregar7Column = table.getColumnModel().getColumn(13);
agregar7Column.setMaxWidth(10);
agregar7Column.setMinWidth(10);
table.getTableHeader().setReorderingAllowed(false); // no permite q se intercambien las columnas
table.getTableHeader().setBackground(new Color(197,222,231));
table.getTableHeader().setFont(new Font("Tahoma",Font.BOLD,12));
table.setBackground(new Color(212,226,222));
table.setCellSelectionEnabled(false);
table.getTableHeader().setReorderingAllowed(false); // no permite q se intercambien las columnas
table.setRowMargin(4);
table.setShowHorizontalLines(false);
modeloOrdenado = new TableRowSorter<TableModel>(dtm);
table.setRowSorter(modeloOrdenado);
table.setRowSelectionAllowed(true); // realiza la seleccion de toda la
// fila
cargarTabla();
textoNombreF.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent e) {
filtrarTabla();
}
});
textoApellidoF.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent e) {
filtrarTabla();
}
});
textoDocumentoF.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent e) {
filtrarTabla();
}
});
}
@SuppressWarnings("unchecked")
public void filtrarTabla() {
LinkedList<RowFilter> lista = new LinkedList<RowFilter>();
lista.add(RowFilter.regexFilter(textoNombreF.getText(), 1));
lista.add(RowFilter.regexFilter(textoApellidoF.getText(), 2));
lista.add(RowFilter.regexFilter(textoDocumentoF.getText(), 4));
RowFilter filtroAnd = RowFilter
.andFilter((Iterable<? extends RowFilter<? super M, ? super I>>) lista);
modeloOrdenado.setRowFilter(filtroAnd);
}
public void cargarTabla() {
dtm.setNumRows(0);
for (int i = 0; i < PersonalDTO.listaPersonal().size(); i++) {
p = (Personal) PersonalDTO.listaPersonal().get(i);
insertarFila(p);
}
modeloOrdenado.setRowFilter(RowFilter.regexFilter(
textoNombreF.getText(), 1));
}
public void insertarFila(Personal p) {
prueba[0] = p.getIdPersonal().toString();
prueba[1] = p.getNombre();
prueba[2] = p.getApellido();
prueba[3] = p.getEspecialidad();
prueba[4] = p.getDocumento();
prueba[5] = p.getTelefono();
prueba[6] = p.getCalle()+ " " + p.getNro()+ " " + p.getPiso()+ " "+p.getDto();
dtm.addRow(prueba);
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setBackground(new Color(209, 217, 237));
this.add(getPanelFiltro(), null);
this.add(getBotonSalir(), null);
}
/**
* This method initializes panelFiltro
*
* @return javax.swing.JPanel
*/
private JPanel getPanelFiltro() {
if (panelFiltro == null) {
panelFiltro = new JPanel();
panelFiltro.setLayout(null);
panelFiltro.setBounds(new Rectangle(30, 30, 800, 500));
panelFiltro.setBorder(BorderFactory.createTitledBorder(
new SoftBevelBorder(SoftBevelBorder.RAISED), "Gesti�n de Personal",
TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, new Font("Tahoma",
Font.PLAIN, 14), Color.black));
panelFiltro.setOpaque(false);
etiquetaNombreF = new JLabel();
etiquetaNombreF.setText("Nombre/s:");
etiquetaNombreF.setBounds(new Rectangle(15, 25, 120, 20));
textoNombreF = new JTextField();
textoNombreF.setBounds(new Rectangle(150, 25, 140, 20));
etiquetaApellidoF = new JLabel();
etiquetaApellidoF.setBounds(new Rectangle(15, 60, 115, 16));
etiquetaApellidoF.setText("Apellido/s:");
textoApellidoF = new JTextField();
textoApellidoF.setBounds(new Rectangle(150, 60, 140, 20));
etiquetaDocumentoF = new JLabel();
etiquetaDocumentoF.setBounds(new Rectangle(15, 95, 117, 20));
etiquetaDocumentoF.setText("N� Documento:");
textoDocumentoF = new JTextField();
textoDocumentoF.setBounds(new Rectangle(150, 95, 140, 20));
etiquetaIcono = new JLabel();
etiquetaIcono.setBounds(new Rectangle(384, 26, 64, 64));
etiquetaIcono.setText("");
etiquetaIcono.setIcon(new ImageIcon(getClass().getResource("/imagenes/buscar.png")));
panelFiltro.add(etiquetaNombreF, null);
panelFiltro.add(etiquetaApellidoF, null);
panelFiltro.add(etiquetaDocumentoF, null);
panelFiltro.add(textoNombreF, null);
panelFiltro.add(textoApellidoF, null);
panelFiltro.add(textoDocumentoF, null);
panelFiltro.add(etiquetaIcono, null);
panelFiltro.add(getJPanelTabla(), null);
panelFiltro.add(getBotonNuevo(), null);
}
return panelFiltro;
}
/**
* This method initializes panelTabla
*
* @return javax.swing.JPanel
*/
private JPanel getJPanelTabla() {
if (panelTabla == null) {
panelTabla = new JPanel();
panelTabla.setLayout(null);
panelTabla.setBounds(new Rectangle(5, 146, 790, 287));
panelTabla.add(scrollPane);
panelTabla.setBorder(new TitledBorder(new LineBorder(Color.BLACK),
"", 0, 0, new Font("TimesRoman", Font.BOLD, 18),
Color.BLACK));
panelTabla.setOpaque(true);
panelTabla.setBackground(Color.lightGray);
}
return panelTabla;
}
/**
* This method initializes botonNuevo
*
* @return javax.swing.JButton
*/
private JButton getBotonNuevo() {
if (botonNuevo == null) {
botonNuevo = new JButton();
botonNuevo.setText("Nuevo");
botonNuevo.setBounds(new Rectangle(665, 31, 101, 34));
botonNuevo.setIcon(new ImageIcon(getClass().getResource(
"/imagenes/nuevo.png")));
botonNuevo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
AltaPersonal a = new AltaPersonal(AbmPersonal.this);
AbmPersonal.this.removeAll();
AbmPersonal.this.add(a);
AbmPersonal.this.repaint();
}
});
}
return botonNuevo;
}
/**
* This method initializes botonSalir
*
* @return javax.swing.JButton
*/
private JButton getBotonSalir() {
if (botonSalir == null) {
botonSalir = new JButton();
botonSalir.setBounds(new Rectangle(712, 549, 117, 21));
botonSalir.setText("Salir");
}
return botonSalir;
}
}