167 lines
5.6 KiB
Java
167 lines
5.6 KiB
Java
package danielcortes.xyz.controllers;
|
|
|
|
import danielcortes.xyz.data.DAOManager;
|
|
import danielcortes.xyz.models.caja.Caja;
|
|
import danielcortes.xyz.models.calculo_fondo.CalculoFondo;
|
|
import danielcortes.xyz.views.CalcularFondoView;
|
|
import danielcortes.xyz.views.components.table_model.FondoTableModel;
|
|
import java.awt.event.MouseAdapter;
|
|
import java.awt.event.MouseEvent;
|
|
import javax.swing.JTable;
|
|
import javax.swing.KeyStroke;
|
|
|
|
public class CalcularFondoController extends BaseController {
|
|
|
|
private CalcularFondoView view;
|
|
private Caja caja;
|
|
|
|
private int editingId;
|
|
private boolean editing;
|
|
private CalculoFondo editingCalculoFondo;
|
|
|
|
public CalcularFondoController(CalcularFondoView view, Caja caja) {
|
|
this.view = view;
|
|
this.caja = caja;
|
|
|
|
this.fillTable();
|
|
this.fillResumen();
|
|
this.updateResumen();
|
|
this.setupViewEvents();
|
|
this.updateButtonsEnabled();
|
|
}
|
|
|
|
private void fillTable() {
|
|
FondoTableModel tableModel = this.view.getTableModel();
|
|
tableModel.removeRows();
|
|
for (CalculoFondo calculoFondo : DAOManager.getCalculoFondoDAO().findByCaja(this.caja)) {
|
|
tableModel.addRow(calculoFondo);
|
|
}
|
|
}
|
|
|
|
private void fillResumen() {
|
|
this.view.getFondoField().setValue(this.caja.getFondo());
|
|
}
|
|
|
|
private void updateResumen() {
|
|
this.caja.setFondo(this.view.getFondoField().getValue());
|
|
int suma = DAOManager.getCalculoFondoDAO().getTotalCalculoFondo(this.caja);
|
|
|
|
this.view.getSumaField().setValue(suma);
|
|
this.view.getDepositoField().setValue(suma - this.caja.getFondo());
|
|
|
|
DAOManager.getCajaDAO().update(this.caja);
|
|
}
|
|
|
|
private void setupViewEvents() {
|
|
moveTo(this.view.getValorField(), this.view.getDescripcionField());
|
|
doAction(this.view.getDescripcionField(), "save", KeyStroke.getKeyStroke("ENTER"),
|
|
e -> this.guardarActionListener());
|
|
doAction(this.view.getFondoField(), "updateResumen", KeyStroke.getKeyStroke("ENTER"),
|
|
e -> this.updateResumen());
|
|
|
|
this.view.getTable().getSelectionModel().addListSelectionListener(e -> updateButtonsEnabled());
|
|
this.view.getGuardarButton().addActionListener(e -> guardarActionListener());
|
|
this.view.getEditarButton().addActionListener(e -> editarActionListener());
|
|
this.view.getEliminarButton().addActionListener(e -> eliminarActionListener());
|
|
this.view.getTable().addMouseListener(new MouseAdapter() {
|
|
public void mouseClicked(MouseEvent mouseEvent) {
|
|
JTable table = (JTable) mouseEvent.getSource();
|
|
if (mouseEvent.getClickCount() == 2 && table.getSelectedRow() != -1) {
|
|
CalcularFondoController.this.editarActionListener();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
private void guardarActionListener() {
|
|
this.normalizeInput();
|
|
|
|
int valor = this.view.getValorField().getValue();
|
|
String descripcion = this.view.getDescripcionField().getText();
|
|
|
|
if (editing) {
|
|
this.editarCalculoFondo(valor, descripcion);
|
|
this.editing = false;
|
|
} else {
|
|
this.guardarCalculoFondo(valor, descripcion);
|
|
}
|
|
|
|
this.updateResumen();
|
|
this.cleanInput();
|
|
this.resetFocus();
|
|
}
|
|
|
|
private void editarActionListener() {
|
|
int selectedID = this.view.getTable().getSelectedRow();
|
|
if (selectedID >= 0) {
|
|
int selectedModelID = this.view.getTable().getRowSorter().convertRowIndexToModel(selectedID);
|
|
CalculoFondo calculoFondo = this.view.getTableModel().getCalculoFondo(selectedModelID);
|
|
|
|
this.editingId = selectedModelID;
|
|
this.editingCalculoFondo = calculoFondo;
|
|
this.editing = true;
|
|
|
|
this.view.getValorField().setValue(calculoFondo.getValor());
|
|
this.view.getDescripcionField().setText(calculoFondo.getDescripcion());
|
|
}
|
|
}
|
|
|
|
private void eliminarActionListener() {
|
|
int selectedID = this.view.getTable().getSelectedRow();
|
|
if (selectedID >= 0) {
|
|
CalculoFondo calculoFondo = this.view.getTableModel().getCalculoFondo(selectedID);
|
|
this.view.getTableModel().removeRow(selectedID);
|
|
DAOManager.getCalculoFondoDAO().deleteCalculoFondo(calculoFondo);
|
|
this.updateResumen();
|
|
this.updateButtonsEnabled();
|
|
this.resetFocus();
|
|
}
|
|
}
|
|
|
|
private void guardarCalculoFondo(int valor, String descripcion) {
|
|
CalculoFondo calculoFondo = new CalculoFondo();
|
|
calculoFondo.setValor(valor);
|
|
calculoFondo.setDescripcion(descripcion);
|
|
calculoFondo.setCaja(this.caja);
|
|
DAOManager.getCalculoFondoDAO().insertCalculoFondo(calculoFondo);
|
|
this.view.getTableModel().addRow(calculoFondo);
|
|
}
|
|
|
|
private void editarCalculoFondo(int valor, String descripcion) {
|
|
this.editingCalculoFondo.setValor(valor);
|
|
this.editingCalculoFondo.setDescripcion(descripcion);
|
|
this.editingCalculoFondo.setCaja(this.caja);
|
|
DAOManager.getCalculoFondoDAO().updateCalculoFondo(editingCalculoFondo);
|
|
this.view.getTableModel().setCalculoFondo(this.editingId, this.editingCalculoFondo);
|
|
}
|
|
|
|
private void updateButtonsEnabled() {
|
|
if (this.view.getTable().getSelectedRow() >= 0) {
|
|
this.view.getEliminarButton().setEnabled(true);
|
|
this.view.getEditarButton().setEnabled(true);
|
|
} else {
|
|
this.view.getEliminarButton().setEnabled(false);
|
|
this.view.getEditarButton().setEnabled(false);
|
|
}
|
|
}
|
|
|
|
|
|
private void cleanInput() {
|
|
this.view.getValorField().setValue(0);
|
|
this.view.getDescripcionField().setText("");
|
|
|
|
}
|
|
|
|
private void normalizeInput() {
|
|
if (this.view.getDescripcionField().getText() == null) {
|
|
this.view.getDescripcionField().setText("");
|
|
}
|
|
|
|
this.view.getDescripcionField().setText(this.view.getDescripcionField().getText().trim());
|
|
}
|
|
|
|
private void resetFocus() {
|
|
this.view.getValorField().requestFocus();
|
|
}
|
|
}
|