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.ImageIcon;
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 base.Cliente;
import base.Presupuesto;
import javax.swing.BorderFactory;
import javax.swing.border.SoftBevelBorder;
import controllers.ControllerFactory;
import controllers.HalconController;
import renderer.RendererCliente;
import editor.EditorCliente;
import editor.EditorPresupuesto;
public class GestionPresupuesto<M, I> extends PanelGeneral {
private TableRowSorter<TableModel> modeloOrdenado;
private static final long serialVersionUID = 1L;
private HalconController halconController = ControllerFactory.GetHalconController(); // @jve:decl-index=0:
public Tabla tabla = new Tabla(6, 8, 10);// columnas editablas
public DefaultTableModel dtm = (DefaultTableModel) tabla.getModel();
JScrollPane scrollPane = new JScrollPane(tabla);
String[] registro = new String[8];
private JPanel panelFiltro;
private JPanel panelTabla;
static JDialog dialog = new JDialog();
Presupuesto presupuesto= new Presupuesto(); // @jve:decl-index=0:
private JLabel etiquetaNombreF;
private JLabel etiquetaApellidoF;
private JLabel etiquetaDocumentoF;
private JLabel etiquetaIcono;
private JTextField textoDocumentoF;
private JTextField textoApellidoF;
private JTextField textoNombreF;
private JButton botonSalir;
private JButton botonNuevo;
@SuppressWarnings("unchecked")
static private AbmCliente singletonAbmCliente = null;
private JLabel etiquetaAdmin = null;
private JLabel etiquetaBusqueda = null;
/**
* This is the default constructor
*/
public GestionPresupuesto() {
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(91, 114, 271, 23));
etiquetaBusqueda.setText("Criterios de busqueda");
etiquetaBusqueda.setFont(new Font("Tahoma",Font.BOLD,13));
etiquetaAdmin = new JLabel();
etiquetaAdmin.setBounds(new Rectangle(90, 7, 298, 32));
etiquetaAdmin.setText("Administraci�n de presupuesto");
etiquetaAdmin.setFont(new Font("Tahoma",Font.BOLD,16));
JSeparator separador= new JSeparator(SwingConstants.HORIZONTAL);
separador.setBounds(new Rectangle(90, 50, 950, 5));
this.add(separador);
JSeparator separador2= new JSeparator(SwingConstants.HORIZONTAL);
separador2.setBounds(new Rectangle(90, 100, 950, 5));
this.add(separador2);
etiquetaNombreF = new JLabel();
etiquetaNombreF.setText("Numero:");
etiquetaNombreF.setBounds(new Rectangle(90, 150, 100, 20));
textoNombreF = new JTextField();
textoNombreF.setBounds(new Rectangle(220, 150, 140, 20));
etiquetaApellidoF = new JLabel();
etiquetaApellidoF.setBounds(new Rectangle(90, 180, 100, 20));
etiquetaApellidoF.setText("Nombre persona:");
textoApellidoF = new JTextField();
textoApellidoF.setBounds(new Rectangle(220, 180, 140, 20));
etiquetaDocumentoF = new JLabel();
etiquetaDocumentoF.setBounds(new Rectangle(90, 210, 100, 20));
etiquetaDocumentoF.setText("Apellido persona:");
textoDocumentoF = new JTextField();
textoDocumentoF.setBounds(new Rectangle(220, 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(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 EditorPresupuesto(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 EditorPresupuesto(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 EditorPresupuesto(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(5, 5, 940, 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.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<Presupuesto> listaPresupuestos = halconController.GetListaPresupuestos();
for (int i = 0; i < listaPresupuestos.size(); i++) {
presupuesto = listaPresupuestos.get(i);
insertarFila(presupuesto);
}
modeloOrdenado.setRowFilter(RowFilter.regexFilter(
textoNombreF.getText(), 1));
}
public void insertarFila(Presupuesto presupuesto) {
registro[0] = presupuesto.getId().toString();
registro[1] = presupuesto.getApellidoPersona();
registro[2] = presupuesto.getNombrePersona();
registro[3] = presupuesto.getPatenteVehiculo();
registro[4] = "dcd";
registro[5] = presupuesto.getMarcaVehiculo()+ " " + presupuesto.getTiempoEjecucion()+ " " + presupuesto.getPatenteVehiculo()+ " "+presupuesto.getTipoEstablecimiento();
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(90, 240, 950, 290));
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;
}
private JButton getBotonNuevo() {
if (botonNuevo == null) {
botonNuevo = new JButton();
botonNuevo.setText("Registrar nuevo");
botonNuevo.setFont(new Font("Tahoma",Font.BOLD,10));
botonNuevo.setBounds(new Rectangle(920, 65, 120, 20));
//botonNuevo.setIcon(new ImageIcon(getClass().getResource(
//"/imagenes/nuevo.png")));
botonNuevo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
RegistrarPresupuesto a = new RegistrarPresupuesto(GestionPresupuesto.this);
GestionPresupuesto.this.removeAll();
GestionPresupuesto.this.add(a);
GestionPresupuesto.this.repaint();
}
});
}
return botonNuevo;
}
private JButton getBotonSalir() {
if (botonSalir == null) {
botonSalir = new JButton();
botonSalir.setBounds(new Rectangle(920, 549, 120, 20));
botonSalir.setText("Salir");
botonSalir.setFont(new Font("Tahoma",Font.BOLD,10));
}
return botonSalir;
}
}