Cambio un poco la estructura en la carpeta dist, ademas y lo principal, se cambio el como funcionan los combobox de las vistas una vez mas, dado a que el intento anterior no funciono, se decidio que era una mejor idea crear un wraper alrededor de los objetos tipoegreso y tipoingreso, el cual hace override del tostring con la finalidad de que se mostraran bien en la vista, un poco feo quizas, pero funciona!
This commit is contained in:
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,5 +1,8 @@
|
||||
out
|
||||
lib
|
||||
.idea
|
||||
dist/data
|
||||
dist/logs
|
||||
dist/local-release/data
|
||||
dist/local-release/logs
|
||||
dist/mackena-release
|
||||
dist/rodriguez-release
|
||||
|
||||
|
||||
Binary file not shown.
0
dist/logs/.gitignore
vendored
0
dist/logs/.gitignore
vendored
@@ -29,6 +29,7 @@ import danielcortes.xyz.data.DAOManager;
|
||||
import danielcortes.xyz.models.caja.Caja;
|
||||
import danielcortes.xyz.models.egreso.Egreso;
|
||||
import danielcortes.xyz.models.tipo_egreso.TipoEgreso;
|
||||
import danielcortes.xyz.models.tipo_egreso.TipoEgresoToStringWrapper;
|
||||
import danielcortes.xyz.views.EgresosView;
|
||||
import danielcortes.xyz.views.components.table_model.EgresosTableModel;
|
||||
|
||||
@@ -76,9 +77,9 @@ public class EgresosController {
|
||||
* Rellena el ComboBox con los tipos de egresos disponibles
|
||||
*/
|
||||
private void fillTipoEgresoCombo() {
|
||||
JComboBox<TipoEgreso> tipoCombo = view.getTipoCombo();
|
||||
JComboBox<TipoEgresoToStringWrapper> tipoCombo = view.getTipoCombo();
|
||||
for (TipoEgreso tipoEgreso : DAOManager.getTipoEgresoDAO().findAll()) {
|
||||
tipoCombo.addItem(tipoEgreso);
|
||||
tipoCombo.addItem(new TipoEgresoToStringWrapper(tipoEgreso));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import danielcortes.xyz.data.DAOManager;
|
||||
import danielcortes.xyz.models.caja.Caja;
|
||||
import danielcortes.xyz.models.ingreso.Ingreso;
|
||||
import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
|
||||
import danielcortes.xyz.models.tipo_ingreso.TipoIngresoToStringWrapper;
|
||||
import danielcortes.xyz.views.IngresosView;
|
||||
import danielcortes.xyz.views.components.table_model.IngresosTableModel;
|
||||
|
||||
@@ -76,9 +77,9 @@ public class IngresosController {
|
||||
* LLena el combobox de tipos de ingresos
|
||||
*/
|
||||
private void fillTipoIngresoCombo() {
|
||||
JComboBox<TipoIngreso> tipoCombo = this.view.getTipoCombo();
|
||||
JComboBox<TipoIngresoToStringWrapper> tipoCombo = this.view.getTipoCombo();
|
||||
for (TipoIngreso tipo : DAOManager.getTipoIngresoDAO().findAll()) {
|
||||
tipoCombo.addItem(tipo);
|
||||
tipoCombo.addItem(new TipoIngresoToStringWrapper(tipo));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,6 +170,7 @@ public class IngresosController {
|
||||
DAOManager.getIngresoDAO().deleteIngreso(ingreso);
|
||||
this.updateTotalIngresos();
|
||||
this.updateButtonsEnabled();
|
||||
this.resetFocus();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package danielcortes.xyz.models.tipo_egreso;
|
||||
|
||||
public class TipoEgresoToStringWrapper extends TipoEgreso {
|
||||
public TipoEgresoToStringWrapper(TipoEgreso tipoEgreso){
|
||||
this.setId(tipoEgreso.getId());
|
||||
this.setNombre(tipoEgreso.getNombre());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.getNombre();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package danielcortes.xyz.models.tipo_ingreso;
|
||||
|
||||
public class TipoIngresoToStringWrapper extends TipoIngreso{
|
||||
public TipoIngresoToStringWrapper(TipoIngreso tipoIngreso) {
|
||||
this.setId(tipoIngreso.getId());
|
||||
this.setNombre(tipoIngreso.getNombre());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.getNombre();
|
||||
}
|
||||
}
|
||||
@@ -27,8 +27,7 @@ package danielcortes.xyz.views;
|
||||
import com.intellij.uiDesigner.core.GridConstraints;
|
||||
import com.intellij.uiDesigner.core.GridLayoutManager;
|
||||
import com.intellij.uiDesigner.core.Spacer;
|
||||
import danielcortes.xyz.models.tipo_egreso.TipoEgreso;
|
||||
import danielcortes.xyz.views.components.KeySelectionRenderer;
|
||||
import danielcortes.xyz.models.tipo_egreso.TipoEgresoToStringWrapper;
|
||||
import danielcortes.xyz.views.components.NumberFormatedTextField;
|
||||
import danielcortes.xyz.views.components.table_model.EgresosTableModel;
|
||||
|
||||
@@ -44,7 +43,7 @@ public class EgresosView {
|
||||
private JTextField descripcionField;
|
||||
private JTextField nroField;
|
||||
private NumberFormatedTextField totalEgresosField;
|
||||
private JComboBox<TipoEgreso> tipoCombo;
|
||||
private JComboBox<TipoEgresoToStringWrapper> tipoCombo;
|
||||
|
||||
|
||||
private JButton eliminarButton;
|
||||
@@ -72,13 +71,6 @@ public class EgresosView {
|
||||
|
||||
private void createTipoCombo() {
|
||||
this.tipoCombo = new JComboBox<>();
|
||||
KeySelectionRenderer renderer = new KeySelectionRenderer(this.tipoCombo) {
|
||||
@Override
|
||||
public String getDisplayValue(Object value) {
|
||||
TipoEgreso tipoEgreso = (TipoEgreso) value;
|
||||
return tipoEgreso.getNombre();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public JPanel getContentPanel() {
|
||||
@@ -113,7 +105,7 @@ public class EgresosView {
|
||||
return totalEgresosField;
|
||||
}
|
||||
|
||||
public JComboBox<TipoEgreso> getTipoCombo() {
|
||||
public JComboBox<TipoEgresoToStringWrapper> getTipoCombo() {
|
||||
return tipoCombo;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ import com.intellij.uiDesigner.core.GridConstraints;
|
||||
import com.intellij.uiDesigner.core.GridLayoutManager;
|
||||
import com.intellij.uiDesigner.core.Spacer;
|
||||
import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
|
||||
import danielcortes.xyz.views.components.KeySelectionRenderer;
|
||||
import danielcortes.xyz.models.tipo_ingreso.TipoIngresoToStringWrapper;
|
||||
import danielcortes.xyz.views.components.NumberFormatedTextField;
|
||||
import danielcortes.xyz.views.components.table_model.IngresosTableModel;
|
||||
|
||||
@@ -43,7 +43,7 @@ public class IngresosView {
|
||||
private JButton eliminarButton;
|
||||
private NumberFormatedTextField totalIngresoField;
|
||||
private NumberFormatedTextField valorField;
|
||||
private JComboBox<TipoIngreso> tipoCombo;
|
||||
private JComboBox<TipoIngresoToStringWrapper> tipoCombo;
|
||||
private JLabel errorTipoIngreso;
|
||||
private JLabel errorValor;
|
||||
private JButton editarButton;
|
||||
@@ -74,13 +74,6 @@ public class IngresosView {
|
||||
|
||||
private void createTipoCombo() {
|
||||
this.tipoCombo = new JComboBox<>();
|
||||
KeySelectionRenderer renderer = new KeySelectionRenderer(this.tipoCombo) {
|
||||
@Override
|
||||
public String getDisplayValue(Object value) {
|
||||
TipoIngreso tipoIngreso = (TipoIngreso) value;
|
||||
return tipoIngreso.getNombre();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public JPanel getContentPanel() {
|
||||
@@ -107,7 +100,7 @@ public class IngresosView {
|
||||
return valorField;
|
||||
}
|
||||
|
||||
public JComboBox<TipoIngreso> getTipoCombo() {
|
||||
public JComboBox<TipoIngresoToStringWrapper> getTipoCombo() {
|
||||
return tipoCombo;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,99 +0,0 @@
|
||||
package danielcortes.xyz.views.components;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
public abstract class KeySelectionRenderer extends DefaultListCellRenderer implements JComboBox.KeySelectionManager {
|
||||
private long timeFactor;
|
||||
private long lastTime;
|
||||
private long time;
|
||||
private String prefix = "";
|
||||
|
||||
public KeySelectionRenderer(JComboBox comboBox) {
|
||||
comboBox.setRenderer(this);
|
||||
comboBox.setKeySelectionManager(this);
|
||||
|
||||
Long l = (Long) UIManager.get("ComboBox.timeFactor");
|
||||
timeFactor = l == null ? 1000L : l.longValue();
|
||||
}
|
||||
|
||||
public abstract String getDisplayValue(Object item);
|
||||
|
||||
|
||||
@Override
|
||||
public Component getListCellRendererComponent(
|
||||
JList list, Object item, int index, boolean isSelected, boolean hasFocus) {
|
||||
super.getListCellRendererComponent(list, item, index, isSelected, hasFocus);
|
||||
|
||||
if (item != null) {
|
||||
setText(getDisplayValue(item));
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int selectionForKey(char aKey, ComboBoxModel model) {
|
||||
time = System.currentTimeMillis();
|
||||
|
||||
// Get the index of the currently selected item
|
||||
|
||||
int size = model.getSize();
|
||||
int startIndex = -1;
|
||||
Object selectedItem = model.getSelectedItem();
|
||||
|
||||
if (selectedItem != null) {
|
||||
for (int i = 0; i < size; i++) {
|
||||
if (selectedItem == model.getElementAt(i)) {
|
||||
startIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (time - lastTime < timeFactor) {
|
||||
if ((prefix.length() == 1) && (aKey == prefix.charAt(0))) {
|
||||
startIndex++;
|
||||
} else {
|
||||
prefix += aKey;
|
||||
}
|
||||
} else {
|
||||
startIndex++;
|
||||
prefix = "" + aKey;
|
||||
}
|
||||
|
||||
lastTime = time;
|
||||
|
||||
|
||||
if (startIndex < 0 || startIndex >= size) {
|
||||
startIndex = 0;
|
||||
}
|
||||
|
||||
int index = getNextMatch(prefix, startIndex, size, model);
|
||||
|
||||
if (index < 0) {
|
||||
// wrap
|
||||
index = getNextMatch(prefix, 0, startIndex, model);
|
||||
}
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
private int getNextMatch(String prefix, int start, int end, ComboBoxModel model) {
|
||||
for (int i = start; i < end; i++) {
|
||||
Object item = model.getElementAt(i);
|
||||
|
||||
if (item != null) {
|
||||
String displayValue = getDisplayValue(item).toLowerCase();
|
||||
|
||||
if (displayValue.startsWith(prefix)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,6 @@ public class EgresosTableModel extends AbstractTableModel {
|
||||
private ArrayList<Egreso> rows;
|
||||
private NumberFormat nf;
|
||||
|
||||
|
||||
public EgresosTableModel() {
|
||||
super();
|
||||
this.columns = new String[]{"N°", "Descripcion", "Valor", "Tipo"};
|
||||
@@ -59,6 +58,21 @@ public class EgresosTableModel extends AbstractTableModel {
|
||||
return rows.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValueAt(int row, int col) {
|
||||
switch (col) {
|
||||
case 0:
|
||||
return rows.get(row).getNro();
|
||||
case 1:
|
||||
return rows.get(row).getDescripcion();
|
||||
case 2:
|
||||
return nf.format(rows.get(row).getValor());
|
||||
case 3:
|
||||
return rows.get(row).getTipoEgreso().getNombre();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void addRow(Egreso egreso) {
|
||||
rows.add(egreso);
|
||||
this.fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);
|
||||
@@ -78,28 +92,13 @@ public class EgresosTableModel extends AbstractTableModel {
|
||||
}
|
||||
}
|
||||
|
||||
public Egreso getEgreso(int row) {
|
||||
return rows.get(row);
|
||||
}
|
||||
|
||||
public void setEgreso(int editingId, Egreso egreso) {
|
||||
this.rows.set(editingId, egreso);
|
||||
this.fireTableRowsUpdated(0, getRowCount() - 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValueAt(int row, int col) {
|
||||
switch (col) {
|
||||
case 0:
|
||||
return rows.get(row).getNro();
|
||||
case 1:
|
||||
return rows.get(row).getDescripcion();
|
||||
case 2:
|
||||
return nf.format(rows.get(row).getValor());
|
||||
case 3:
|
||||
return rows.get(row).getTipoEgreso();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Egreso getEgreso(int row) {
|
||||
return rows.get(row);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -57,24 +57,6 @@ public class IngresosTableModel extends AbstractTableModel {
|
||||
return this.rows.size();
|
||||
}
|
||||
|
||||
public void addRow(Ingreso ingreso) {
|
||||
this.rows.add(ingreso);
|
||||
this.fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);
|
||||
}
|
||||
|
||||
public void removeRow(int row) {
|
||||
this.rows.remove(row);
|
||||
this.fireTableRowsDeleted(row, row);
|
||||
}
|
||||
|
||||
public void removeRows() {
|
||||
int rowCount = getRowCount();
|
||||
if (rowCount > 0) {
|
||||
this.rows.clear();
|
||||
this.fireTableRowsDeleted(0, rowCount - 1);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValueAt(int row, int col) {
|
||||
switch (col) {
|
||||
@@ -94,6 +76,24 @@ public class IngresosTableModel extends AbstractTableModel {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void addRow(Ingreso ingreso) {
|
||||
this.rows.add(ingreso);
|
||||
this.fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);
|
||||
}
|
||||
|
||||
public void removeRow(int row) {
|
||||
this.rows.remove(row);
|
||||
this.fireTableRowsDeleted(row, row);
|
||||
}
|
||||
|
||||
public void removeRows() {
|
||||
int rowCount = getRowCount();
|
||||
if (rowCount > 0) {
|
||||
this.rows.clear();
|
||||
this.fireTableRowsDeleted(0, rowCount - 1);
|
||||
}
|
||||
}
|
||||
|
||||
public Ingreso getIngreso(int row) {
|
||||
return this.rows.get(row);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user