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:
Daniel Cortes
2019-01-22 02:48:38 -03:00
parent 7d8aab0f24
commit 3345486ae3
14 changed files with 82 additions and 164 deletions

7
.gitignore vendored
View File

@@ -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

View File

View File

@@ -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));
} }
} }

View File

@@ -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();
} }
} }

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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;
} }

View File

@@ -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;
} }

View File

@@ -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;
}
}

View File

@@ -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[]{"", "Descripcion", "Valor", "Tipo"}; this.columns = new String[]{"", "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);
}
} }

View File

@@ -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);
} }