package vista;
import java.awt.Color;
import java.awt.Font;
import java.awt.Rectangle;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.SwingConstants;
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 controllers.ControllerFactory;
import controllers.HalconController;
import base.Cliente;
import renderer.RendererCliente;
import editor.EditorCliente;
public class AbmCliente<M, I> extends PanelGeneral {
private HalconController halconController = ControllerFactory
.GetHalconController(); // @jve:decl-index=0:
Cliente cliente = new Cliente(); // @jve:decl-index=0:
private TableRowSorter<TableModel> modeloOrdenado;
private static final long serialVersionUID = 1L;
public Tabla tabla = new Tabla(6, 8, 10);// columnas editablas
DefaultTableModel dtm = (DefaultTableModel) tabla.getModel();
JScrollPane scrollPane = new JScrollPane(tabla);
String[] registro = new String[8];
private JPanel panelTabla;
static JDialog dialog = new JDialog();
private JLabel etiquetaNombreF;
private JLabel etiquetaApellidoF;
private JLabel etiquetaDocumentoF;
private JTextField textoDocumentoF;
private JTextField textoApellidoF;
private JTextField textoNombreF;
private JButton botonSalir;
private JButton botonNuevo;
private JSeparator separador;
private JSeparator separador2;
@SuppressWarnings("unchecked")
static private AbmCliente singletonAbmCliente = null;
private JLabel etiquetaAdmin = null;
private JLabel etiquetaBusqueda = null;
/**
* This is the default constructor
*/
public AbmCliente() {
super();
this.setEnabled(true);
this.setVisible(true);
initialize();
inicializarTabla();
this.getEtiquetaRutaNavegacion().setText(
" Inicio/Administraci�n de Clientes");
this.add(botonSalir, null);
}
private void initialize() {
etiquetaBusqueda = new JLabel();
etiquetaBusqueda.setBounds(new Rectangle((int) (x * 90),
(int) (y * 114), 271, 23));
etiquetaBusqueda.setText("Criterios de busqueda");
etiquetaBusqueda.setFont(new Font("Tahoma", Font.BOLD, 13));
etiquetaAdmin = new JLabel();
etiquetaAdmin.setBounds(new Rectangle((int) (x * 90), (int) (y * 7),
298, 32));
etiquetaAdmin.setText("Administraci�n de clientes");
etiquetaAdmin.setFont(new Font("Tahoma", Font.BOLD, 16));
separador = new JSeparator(SwingConstants.HORIZONTAL);
separador.setBounds(new Rectangle((int) (x * 90), (int) (y * 50),
(int) (x * 940), (int) (y * 5)));
this.add(separador);
separador2 = new JSeparator(SwingConstants.HORIZONTAL);
separador2.setBounds(new Rectangle((int) (x * 90), (int) (y * 100),
(int) (x * 940), (int) (y * 5)));
this.add(separador2);
etiquetaNombreF = new JLabel();
etiquetaNombreF.setText("Nombre/s:");
etiquetaNombreF.setBounds(new Rectangle((int) (x * 90),
(int) (y * 150), 100, 20));
etiquetaNombreF.setFont(new Font("Tahoma", Font.PLAIN, 12));
textoNombreF = new JTextField();
textoNombreF.setBounds(new Rectangle((int) (x * 220), (int) (y * 150),
140, 20));
etiquetaApellidoF = new JLabel();
etiquetaApellidoF.setBounds(new Rectangle((int) (x * 90),
(int) (y * 180), 100, 20));
etiquetaApellidoF.setText("Apellido/s:");
etiquetaApellidoF.setFont(new Font("Tahoma", Font.PLAIN, 12));
textoApellidoF = new JTextField();
textoApellidoF.setBounds(new Rectangle((int) (x * 220),
(int) (y * 180), 140, 20));
etiquetaDocumentoF = new JLabel();
etiquetaDocumentoF.setBounds(new Rectangle((int) (x * 90),
(int) (y * 210), 100, 20));
etiquetaDocumentoF.setText("N� Documento:");
etiquetaDocumentoF.setFont(new Font("Tahoma", Font.PLAIN, 12));
textoDocumentoF = new JTextField();
textoDocumentoF.setBounds(new Rectangle((int) (x * 220),
(int) (y * 210), 140, 20));
this.add(etiquetaNombreF, null);
this.add(etiquetaApellidoF, null);
this.add(etiquetaDocumentoF, null);
this.add(textoNombreF, null);
this.add(textoApellidoF, null);
this.add(textoDocumentoF, null);
this.add(getJPanelTabla(), null);
this.add(getBotonNuevo(), null);
this.add(getBotonSalir(), null);
this.add(etiquetaAdmin, null);
this.add(etiquetaBusqueda, null);
}
@SuppressWarnings("unchecked")
static public AbmCliente getSingletonAbmCliente() {
if (singletonAbmCliente == null) {
singletonAbmCliente = new AbmCliente();
} else {
singletonAbmCliente.limpiar(singletonAbmCliente);
singletonAbmCliente.cargarTabla();
}
return singletonAbmCliente;
}
public void termino() {
this.removeAll();
inicializarPanel();
this.add(getPanelRutaNavegacion());
this.add(separador);
this.add(separador2);
this.add(etiquetaNombreF, null);
this.add(etiquetaApellidoF, null);
this.add(etiquetaDocumentoF, null);
this.add(textoNombreF, null);
this.add(textoApellidoF, null);
this.add(textoDocumentoF, null);
this.add(getJPanelTabla(), null);
this.add(getBotonNuevo(), null);
this.add(getBotonSalir(), null);
this.add(etiquetaAdmin, null);
this.add(etiquetaBusqueda, null);
this.add(botonSalir, null);
this.repaint();
cargarTabla();
}
public void inicializarTabla() {
dtm.addColumn("N�mero");
dtm.addColumn("Nombre/s");
dtm.addColumn("Apellido/s");
dtm.addColumn("Documento");
dtm.addColumn("Telefono");
dtm.addColumn("Direccion");
dtm.addColumn("");
dtm.addColumn("");
dtm.addColumn("");
dtm.addColumn("");
dtm.addColumn("");
dtm.addColumn("");
TableColumn columna;
columna = tabla.getColumnModel().getColumn(0);
columna.setMinWidth(40);
columna.setPreferredWidth(60);
columna.setMaxWidth(80);
columna = tabla.getColumnModel().getColumn(1);
columna.setPreferredWidth(5);
columna = tabla.getColumnModel().getColumn(2);
columna.setPreferredWidth(10);
columna = tabla.getColumnModel().getColumn(3);
columna.setPreferredWidth(10);
columna = tabla.getColumnModel().getColumn(4);
columna.setPreferredWidth(10);
columna = tabla.getColumnModel().getColumn(6);
columna.setCellEditor(new EditorCliente(this, 6, 8));
columna.setCellRenderer(new RendererCliente(true, 6, 8));
columna.setMaxWidth(40);
columna.setMinWidth(40);
columna = tabla.getColumnModel().getColumn(7);
columna.setMaxWidth(15);
columna.setPreferredWidth(15);
columna.setMinWidth(15);
columna = tabla.getColumnModel().getColumn(8);
columna.setCellEditor(new EditorCliente(this, 6, 8));
columna.setCellRenderer(new RendererCliente(true, 6, 8));
columna.setMaxWidth(40);
columna.setMinWidth(40);
columna = tabla.getColumnModel().getColumn(9);
columna.setMaxWidth(15);
columna.setPreferredWidth(15);
columna.setMinWidth(15);
columna = tabla.getColumnModel().getColumn(10);
columna.setCellEditor(new EditorCliente(this, 6, 8));
columna.setCellRenderer(new RendererCliente(true, 6, 8));
columna.setMaxWidth(40);
columna.setMinWidth(40);
columna = tabla.getColumnModel().getColumn(11);
columna.setMaxWidth(15);
columna.setPreferredWidth(15);
columna.setMinWidth(15);
scrollPane.setVisible(true);
scrollPane.setBounds(new Rectangle((int) (x * 5), (int) (y * 5),
(int) (x * 940), (int) (y * 280)));
tabla.setRowHeight(25);
tabla.setShowVerticalLines(false);
tabla.setShowHorizontalLines(false);
tabla.getTableHeader().setReorderingAllowed(false); // no permite q se
// intercambien las
// columnas
tabla.getTableHeader().setBackground(new Color(197, 222, 231));
tabla.getTableHeader().setFont(new Font("Tahoma", Font.BOLD, 12));
tabla.setBackground(new Color(212, 226, 222));
tabla.setCellSelectionEnabled(false);
tabla.setRowMargin(5);
tabla.setFont(new Font("Tahoma", Font.BOLD, 12));
tabla.setRowSelectionAllowed(true); // realiza la seleccion de toda la
// fila
modeloOrdenado = new TableRowSorter<TableModel>(dtm);
tabla.setRowSorter(modeloOrdenado);
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(), 3));
RowFilter filtroAnd = RowFilter
.andFilter((Iterable<? extends RowFilter<? super M, ? super I>>) lista);
modeloOrdenado.setRowFilter(filtroAnd);
}
public void cargarTabla() {
dtm.setNumRows(0);
List<Cliente> listaClientes = halconController.GetListaClientes();
for (Cliente cliente : listaClientes)
insertarFila(cliente);
modeloOrdenado.setRowFilter(RowFilter.regexFilter(textoNombreF
.getText(), 1));
}
public void insertarFila(Cliente c) {
registro[0] = c.getId().toString();
registro[1] = c.getNombre();
registro[2] = c.getApellido();
registro[3] = c.getDocumento();
registro[4] = c.getTelefono();
registro[5] = c.getLocalidad().getPais().getDescrip();
dtm.addRow(registro);
}
private void inicializarPanel() {
}
/**
* This method initializes panelTabla
*
* @return javax.swing.JPanel
*/
private JPanel getJPanelTabla() {
if (panelTabla == null) {
panelTabla = new JPanel();
panelTabla.setLayout(null);
panelTabla.setBounds(new Rectangle((int) (x * 90), (int) (y * 240),
(int) (x * 950), (int) (y * 290)));
panelTabla.add(scrollPane);
panelTabla.setBorder(new TitledBorder(new LineBorder(Color.BLACK),
"", 0, 0,
new Font("TimesRoman", Font.BOLD, (int) (x * 18)),
Color.BLACK));
panelTabla.setOpaque(true);
panelTabla.setBackground(Color.lightGray);
}
return panelTabla;
}
private JButton getBotonNuevo() {
if (botonNuevo == null) {
botonNuevo = new JButton();
botonNuevo.setText("Agregar cliente");
botonNuevo.setFont(new Font("Tahoma", Font.BOLD, 10));
botonNuevo.setBounds(new Rectangle((int) (x * 870), (int) (y * 65),
120, 20));
botonNuevo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
AltaCliente a = new AltaCliente(AbmCliente.this);
AbmCliente.this.removeAll();
AbmCliente.this.add(a);
AbmCliente.this.repaint();
}
});
}
return botonNuevo;
}
private JButton getBotonSalir() {
if (botonSalir == null) {
botonSalir = new JButton();
botonSalir.setBounds(new Rectangle((int) (x * 870),
(int) (y * 549), 120, 20));
botonSalir.setText("Salir");
botonSalir.setFont(new Font("Tahoma", Font.BOLD, 10));
}
return botonSalir;
}
public static void main(String[] args) {
AbmCliente abm=new AbmCliente();
//vista.pack();
abm.setEnabled(true);
abm.setVisible(true);
//vista.show();
}
}