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
|
out
|
||||||
lib
|
lib
|
||||||
.idea
|
.idea
|
||||||
dist/data
|
dist/local-release/data
|
||||||
dist/logs
|
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.caja.Caja;
|
||||||
import danielcortes.xyz.models.egreso.Egreso;
|
import danielcortes.xyz.models.egreso.Egreso;
|
||||||
import danielcortes.xyz.models.tipo_egreso.TipoEgreso;
|
import danielcortes.xyz.models.tipo_egreso.TipoEgreso;
|
||||||
|
import danielcortes.xyz.models.tipo_egreso.TipoEgresoToStringWrapper;
|
||||||
import danielcortes.xyz.views.EgresosView;
|
import danielcortes.xyz.views.EgresosView;
|
||||||
import danielcortes.xyz.views.components.table_model.EgresosTableModel;
|
import danielcortes.xyz.views.components.table_model.EgresosTableModel;
|
||||||
|
|
||||||
@@ -76,9 +77,9 @@ public class EgresosController {
|
|||||||
* Rellena el ComboBox con los tipos de egresos disponibles
|
* Rellena el ComboBox con los tipos de egresos disponibles
|
||||||
*/
|
*/
|
||||||
private void fillTipoEgresoCombo() {
|
private void fillTipoEgresoCombo() {
|
||||||
JComboBox<TipoEgreso> tipoCombo = view.getTipoCombo();
|
JComboBox<TipoEgresoToStringWrapper> tipoCombo = view.getTipoCombo();
|
||||||
for (TipoEgreso tipoEgreso : DAOManager.getTipoEgresoDAO().findAll()) {
|
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.caja.Caja;
|
||||||
import danielcortes.xyz.models.ingreso.Ingreso;
|
import danielcortes.xyz.models.ingreso.Ingreso;
|
||||||
import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
|
import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
|
||||||
|
import danielcortes.xyz.models.tipo_ingreso.TipoIngresoToStringWrapper;
|
||||||
import danielcortes.xyz.views.IngresosView;
|
import danielcortes.xyz.views.IngresosView;
|
||||||
import danielcortes.xyz.views.components.table_model.IngresosTableModel;
|
import danielcortes.xyz.views.components.table_model.IngresosTableModel;
|
||||||
|
|
||||||
@@ -76,9 +77,9 @@ public class IngresosController {
|
|||||||
* LLena el combobox de tipos de ingresos
|
* LLena el combobox de tipos de ingresos
|
||||||
*/
|
*/
|
||||||
private void fillTipoIngresoCombo() {
|
private void fillTipoIngresoCombo() {
|
||||||
JComboBox<TipoIngreso> tipoCombo = this.view.getTipoCombo();
|
JComboBox<TipoIngresoToStringWrapper> tipoCombo = this.view.getTipoCombo();
|
||||||
for (TipoIngreso tipo : DAOManager.getTipoIngresoDAO().findAll()) {
|
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);
|
DAOManager.getIngresoDAO().deleteIngreso(ingreso);
|
||||||
this.updateTotalIngresos();
|
this.updateTotalIngresos();
|
||||||
this.updateButtonsEnabled();
|
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.GridConstraints;
|
||||||
import com.intellij.uiDesigner.core.GridLayoutManager;
|
import com.intellij.uiDesigner.core.GridLayoutManager;
|
||||||
import com.intellij.uiDesigner.core.Spacer;
|
import com.intellij.uiDesigner.core.Spacer;
|
||||||
import danielcortes.xyz.models.tipo_egreso.TipoEgreso;
|
import danielcortes.xyz.models.tipo_egreso.TipoEgresoToStringWrapper;
|
||||||
import danielcortes.xyz.views.components.KeySelectionRenderer;
|
|
||||||
import danielcortes.xyz.views.components.NumberFormatedTextField;
|
import danielcortes.xyz.views.components.NumberFormatedTextField;
|
||||||
import danielcortes.xyz.views.components.table_model.EgresosTableModel;
|
import danielcortes.xyz.views.components.table_model.EgresosTableModel;
|
||||||
|
|
||||||
@@ -44,7 +43,7 @@ public class EgresosView {
|
|||||||
private JTextField descripcionField;
|
private JTextField descripcionField;
|
||||||
private JTextField nroField;
|
private JTextField nroField;
|
||||||
private NumberFormatedTextField totalEgresosField;
|
private NumberFormatedTextField totalEgresosField;
|
||||||
private JComboBox<TipoEgreso> tipoCombo;
|
private JComboBox<TipoEgresoToStringWrapper> tipoCombo;
|
||||||
|
|
||||||
|
|
||||||
private JButton eliminarButton;
|
private JButton eliminarButton;
|
||||||
@@ -72,13 +71,6 @@ public class EgresosView {
|
|||||||
|
|
||||||
private void createTipoCombo() {
|
private void createTipoCombo() {
|
||||||
this.tipoCombo = new JComboBox<>();
|
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() {
|
public JPanel getContentPanel() {
|
||||||
@@ -113,7 +105,7 @@ public class EgresosView {
|
|||||||
return totalEgresosField;
|
return totalEgresosField;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JComboBox<TipoEgreso> getTipoCombo() {
|
public JComboBox<TipoEgresoToStringWrapper> getTipoCombo() {
|
||||||
return tipoCombo;
|
return tipoCombo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import com.intellij.uiDesigner.core.GridConstraints;
|
|||||||
import com.intellij.uiDesigner.core.GridLayoutManager;
|
import com.intellij.uiDesigner.core.GridLayoutManager;
|
||||||
import com.intellij.uiDesigner.core.Spacer;
|
import com.intellij.uiDesigner.core.Spacer;
|
||||||
import danielcortes.xyz.models.tipo_ingreso.TipoIngreso;
|
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.NumberFormatedTextField;
|
||||||
import danielcortes.xyz.views.components.table_model.IngresosTableModel;
|
import danielcortes.xyz.views.components.table_model.IngresosTableModel;
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ public class IngresosView {
|
|||||||
private JButton eliminarButton;
|
private JButton eliminarButton;
|
||||||
private NumberFormatedTextField totalIngresoField;
|
private NumberFormatedTextField totalIngresoField;
|
||||||
private NumberFormatedTextField valorField;
|
private NumberFormatedTextField valorField;
|
||||||
private JComboBox<TipoIngreso> tipoCombo;
|
private JComboBox<TipoIngresoToStringWrapper> tipoCombo;
|
||||||
private JLabel errorTipoIngreso;
|
private JLabel errorTipoIngreso;
|
||||||
private JLabel errorValor;
|
private JLabel errorValor;
|
||||||
private JButton editarButton;
|
private JButton editarButton;
|
||||||
@@ -74,13 +74,6 @@ public class IngresosView {
|
|||||||
|
|
||||||
private void createTipoCombo() {
|
private void createTipoCombo() {
|
||||||
this.tipoCombo = new JComboBox<>();
|
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() {
|
public JPanel getContentPanel() {
|
||||||
@@ -107,7 +100,7 @@ public class IngresosView {
|
|||||||
return valorField;
|
return valorField;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JComboBox<TipoIngreso> getTipoCombo() {
|
public JComboBox<TipoIngresoToStringWrapper> getTipoCombo() {
|
||||||
return tipoCombo;
|
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 ArrayList<Egreso> rows;
|
||||||
private NumberFormat nf;
|
private NumberFormat nf;
|
||||||
|
|
||||||
|
|
||||||
public EgresosTableModel() {
|
public EgresosTableModel() {
|
||||||
super();
|
super();
|
||||||
this.columns = new String[]{"N°", "Descripcion", "Valor", "Tipo"};
|
this.columns = new String[]{"N°", "Descripcion", "Valor", "Tipo"};
|
||||||
@@ -59,6 +58,21 @@ public class EgresosTableModel extends AbstractTableModel {
|
|||||||
return rows.size();
|
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) {
|
public void addRow(Egreso egreso) {
|
||||||
rows.add(egreso);
|
rows.add(egreso);
|
||||||
this.fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);
|
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) {
|
public void setEgreso(int editingId, Egreso egreso) {
|
||||||
this.rows.set(editingId, egreso);
|
this.rows.set(editingId, egreso);
|
||||||
this.fireTableRowsUpdated(0, getRowCount() - 1);
|
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();
|
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
|
@Override
|
||||||
public Object getValueAt(int row, int col) {
|
public Object getValueAt(int row, int col) {
|
||||||
switch (col) {
|
switch (col) {
|
||||||
@@ -94,6 +76,24 @@ public class IngresosTableModel extends AbstractTableModel {
|
|||||||
return null;
|
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) {
|
public Ingreso getIngreso(int row) {
|
||||||
return this.rows.get(row);
|
return this.rows.get(row);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user