0% found this document useful (0 votes)
3 views3 pages

Client e Form Dialog

The ColaboradorSelectDialog class is a Java Swing dialog for selecting collaborators, allowing both single and multiple selections. It features a search functionality, displaying results in a table format, and provides methods to retrieve selected collaborator details. The dialog is initialized with a graphical user interface and interacts with a ColaboradorDAO for data retrieval.

Uploaded by

legginssammy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views3 pages

Client e Form Dialog

The ColaboradorSelectDialog class is a Java Swing dialog for selecting collaborators, allowing both single and multiple selections. It features a search functionality, displaying results in a table format, and provides methods to retrieve selected collaborator details. The dialog is initialized with a graphical user interface and interacts with a ColaboradorDAO for data retrieval.

Uploaded by

legginssammy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

package colaboradores;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/** Selector de colaboradores: simple o múltiple (método estático). */


public class ColaboradorSelectDialog extends JDialog {

private final JTextField tfBuscar = new JTextField(22);


private final DefaultTableModel model = new DefaultTableModel(
new Object[]{"Cédula", "Nombre", "Apellido", "Teléfono", "Cargo",
"Activo"}, 0) {
@Override public boolean isCellEditable(int r, int c) { return false; }
};
private final JTable tabla = new JTable(model);

private final ColaboradorDAO dao = new ColaboradorDAO();


private ColaboradorItem seleccionado = null;

public ColaboradorSelectDialog(Window owner) {


super(owner, "Buscar colaborador", ModalityType.APPLICATION_MODAL);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setSize(720, 420);
setLocationRelativeTo(owner);

setContentPane(buildUI());
cargar(""); // inicial
}

private JPanel buildUI() {


JPanel root = new JPanel(new BorderLayout(8, 8));
root.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

JPanel top = new JPanel(new FlowLayout(FlowLayout.LEFT, 8, 8));


top.add(new JLabel("Buscar (cedula/nombre/apellido):"));
top.add(tfBuscar);
JButton btn = new JButton("Buscar");
btn.addActionListener(e -> cargar(tfBuscar.getText().trim()));
top.add(btn);
root.add(top, BorderLayout.NORTH);

tabla.setRowHeight(22);
tabla.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tabla.addMouseListener(new MouseAdapter() {
@Override public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 && tabla.getSelectedRow() >= 0)
aceptar();
}
});
root.add(new JScrollPane(tabla), BorderLayout.CENTER);

JPanel bottom = new JPanel(new FlowLayout(FlowLayout.RIGHT, 8, 8));


JButton btnCancelar = new JButton("Cancelar");
JButton btnAceptar = new JButton("Aceptar");
btnCancelar.addActionListener(e -> dispose());
btnAceptar.addActionListener(e -> aceptar());
bottom.add(btnCancelar);
bottom.add(btnAceptar);
root.add(bottom, BorderLayout.SOUTH);

return root;
}

private void cargar(String q) {


model.setRowCount(0);
List<ColaboradorItem> lista;
try {
// Si tienes buscarTodosPorTexto, úsalo; si no, listarTodos y filtras
lista = (q == null || q.isBlank()) ? dao.listarTodos() :
dao.buscarTodosPorTexto(q);
} catch (Exception ex) {
try { lista = dao.listarTodos(); } catch (SQLException e) { lista = new
ArrayList<>(); }
}
for (ColaboradorItem c : lista) {
if (q == null || q.isBlank()
|| c.getCedula().contains(q)
|| c.getNombre().toLowerCase().contains(q.toLowerCase())
|| c.getApellido().toLowerCase().contains(q.toLowerCase())) {
model.addRow(new Object[]{
c.getCedula(), c.getNombre(), c.getApellido(),
c.getTelefono(), c.getPerfil(), c.isActivo() ? "Sí" : "No"
});
}
}
if (model.getRowCount() > 0) {
tabla.setRowSelectionInterval(0, 0);
}
}

private void aceptar() {


int r = tabla.getSelectedRow();
if (r < 0) {
JOptionPane.showMessageDialog(this, "Selecciona un colaborador.");
return;
}
String ced = String.valueOf(model.getValueAt(r, 0));
String nom = String.valueOf(model.getValueAt(r, 1));
String ape = String.valueOf(model.getValueAt(r, 2));
seleccionado = new ColaboradorItem(ced, nom, ape,
String.valueOf(model.getValueAt(r,3)),
String.valueOf(model.getValueAt(r,4)),
true);
dispose();
}

// ==== API esperada por tu código ====

public String getCedulaSeleccionada() {


return (seleccionado != null) ? seleccionado.getCedula() : null;
}
public String getNombreSeleccionado() {
return (seleccionado != null) ? seleccionado.getNombreCompleto() : null;
}

public ColaboradorItem getSeleccionado() {


return seleccionado;
}

/** Selección múltiple usada por POSController. */


public static List<ColaboradorItem> seleccionarMultiples(Window owner) {
ColaboradorSelectDialog dlg = new ColaboradorSelectDialog(owner);
// permitir selección múltiple en esta instancia puntual
dlg.tabla.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
dlg.setVisible(true);

int[] rows = dlg.tabla.getSelectedRows();


List<ColaboradorItem> out = new ArrayList<>();
if (rows != null) {
for (int r : rows) {
String ced = String.valueOf(dlg.model.getValueAt(r, 0));
String nom = String.valueOf(dlg.model.getValueAt(r, 1));
String ape = String.valueOf(dlg.model.getValueAt(r, 2));
String tel = String.valueOf(dlg.model.getValueAt(r, 3));
String car = String.valueOf(dlg.model.getValueAt(r, 4));
out.add(new ColaboradorItem(ced, nom, ape, tel, car, true));
}
}
dlg.dispose();
return out;
}
}

You might also like