package colaboradores;
import [Link].*;
import [Link];
import [Link].*;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
/** 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));
[Link]([Link](10, 10, 10, 10));
JPanel top = new JPanel(new FlowLayout([Link], 8, 8));
[Link](new JLabel("Buscar (cedula/nombre/apellido):"));
[Link](tfBuscar);
JButton btn = new JButton("Buscar");
[Link](e -> cargar([Link]().trim()));
[Link](btn);
[Link](top, [Link]);
[Link](22);
[Link](ListSelectionModel.SINGLE_SELECTION);
[Link](new MouseAdapter() {
@Override public void mouseClicked(MouseEvent e) {
if ([Link]() == 2 && [Link]() >= 0)
aceptar();
}
});
[Link](new JScrollPane(tabla), [Link]);
JPanel bottom = new JPanel(new FlowLayout([Link], 8, 8));
JButton btnCancelar = new JButton("Cancelar");
JButton btnAceptar = new JButton("Aceptar");
[Link](e -> dispose());
[Link](e -> aceptar());
[Link](btnCancelar);
[Link](btnAceptar);
[Link](bottom, [Link]);
return root;
}
private void cargar(String q) {
[Link](0);
List<ColaboradorItem> lista;
try {
// Si tienes buscarTodosPorTexto, úsalo; si no, listarTodos y filtras
lista = (q == null || [Link]()) ? [Link]() :
[Link](q);
} catch (Exception ex) {
try { lista = [Link](); } catch (SQLException e) { lista = new
ArrayList<>(); }
}
for (ColaboradorItem c : lista) {
if (q == null || [Link]()
|| [Link]().contains(q)
|| [Link]().toLowerCase().contains([Link]())
|| [Link]().toLowerCase().contains([Link]())) {
[Link](new Object[]{
[Link](), [Link](), [Link](),
[Link](), [Link](), [Link]() ? "Sí" : "No"
});
}
}
if ([Link]() > 0) {
[Link](0, 0);
}
}
private void aceptar() {
int r = [Link]();
if (r < 0) {
[Link](this, "Selecciona un colaborador.");
return;
}
String ced = [Link]([Link](r, 0));
String nom = [Link]([Link](r, 1));
String ape = [Link]([Link](r, 2));
seleccionado = new ColaboradorItem(ced, nom, ape,
[Link]([Link](r,3)),
[Link]([Link](r,4)),
true);
dispose();
}
// ==== API esperada por tu código ====
public String getCedulaSeleccionada() {
return (seleccionado != null) ? [Link]() : null;
}
public String getNombreSeleccionado() {
return (seleccionado != null) ? [Link]() : 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
[Link](ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
[Link](true);
int[] rows = [Link]();
List<ColaboradorItem> out = new ArrayList<>();
if (rows != null) {
for (int r : rows) {
String ced = [Link]([Link](r, 0));
String nom = [Link]([Link](r, 1));
String ape = [Link]([Link](r, 2));
String tel = [Link]([Link](r, 3));
String car = [Link]([Link](r, 4));
[Link](new ColaboradorItem(ced, nom, ape, tel, car, true));
}
}
[Link]();
return out;
}
}