diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 3c7e3ae..ebda3e5 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -12,11 +12,11 @@ + - - - + + @@ -72,81 +72,25 @@ - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + @@ -238,7 +182,6 @@ @@ -283,17 +227,7 @@ - - - - - - - - - - - + @@ -559,7 +489,8 @@ - + + 1545280618093 @@ -785,11 +716,18 @@ - - @@ -804,7 +742,7 @@ - + @@ -813,7 +751,7 @@ - + @@ -824,12 +762,13 @@ + - + @@ -893,7 +832,6 @@ - - - @@ -1120,13 +1056,6 @@ - - - - - - - @@ -1281,40 +1210,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1335,9 +1230,6 @@ - - - @@ -1444,10 +1336,13 @@ + + + - - + + @@ -1497,12 +1392,6 @@ - - - - - - @@ -1521,6 +1410,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1539,10 +1477,10 @@ - - - + + + caja:jar @@ -1617,7 +1555,7 @@ - forms_rt + org.mariuszgromada.math:MathParser.org-mXparser:4.2.0 \ No newline at end of file diff --git a/dist/caja.jar b/dist/caja.jar index 5544f7c..cf1844e 100644 Binary files a/dist/caja.jar and b/dist/caja.jar differ diff --git a/dist/database.sqlite b/dist/database.sqlite index 99717d7..c01b336 100644 Binary files a/dist/database.sqlite and b/dist/database.sqlite differ diff --git a/src/danielcortes/xyz/Main.java b/src/danielcortes/xyz/Main.java index 94a403a..376a50c 100644 --- a/src/danielcortes/xyz/Main.java +++ b/src/danielcortes/xyz/Main.java @@ -48,6 +48,7 @@ import danielcortes.xyz.models.tipo_ingreso.MysqlTipoIngresoDAO; import danielcortes.xyz.models.tipo_ingreso.SQLiteTipoIngresoDAO; import danielcortes.xyz.models.tipo_ingreso.TipoIngresoDAO; import danielcortes.xyz.views.ManagerView; +import org.mariuszgromada.math.mxparser.Expression; import javax.swing.*; import java.sql.SQLException; diff --git a/src/danielcortes/xyz/views/components/NumberFormatedTextField.java b/src/danielcortes/xyz/views/components/NumberFormatedTextField.java index 1bf98a3..4142594 100644 --- a/src/danielcortes/xyz/views/components/NumberFormatedTextField.java +++ b/src/danielcortes/xyz/views/components/NumberFormatedTextField.java @@ -24,6 +24,8 @@ package danielcortes.xyz.views.components; +import org.mariuszgromada.math.mxparser.Expression; + import javax.swing.*; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; @@ -37,7 +39,7 @@ import java.text.ParseException; * con el metodo getValue. Ademas de tener comportamientos especiales: * - Al ganar foco se selecciona todo el texto. * - Al perder foco formatea el texto como numero. - * - Solo se pueden ingresar 9 digitos. + * - Evalua la operacion matematica que se ingrese en el campo */ public class NumberFormatedTextField extends JTextField { private int value; @@ -52,7 +54,6 @@ public class NumberFormatedTextField extends JTextField { this.nf = NumberFormat.getIntegerInstance(); this.addFocusListener(new FieldFocusListener()); - this.addKeyListener(new FieldKeyAdapter()); } /** @@ -76,16 +77,16 @@ public class NumberFormatedTextField extends JTextField { } /** - * Lee el valor en el texto y lo almacena en la instancia + * Lee el valor en el texto, ejecuta la operacion matematica que en caso que exista una y la almacena en el valor + * Si la operacion matematica es invalida, almacenara un 0 */ private void readValue(){ - try { - String currentText = this.getText(); - if(currentText.length() > 0){ - this.value = nf.parse(currentText).intValue(); - } - } catch (ParseException e) { - e.printStackTrace(); + String currentText = this.getText(); + Expression expression = new Expression(currentText); + if(expression.checkSyntax()){ + this.value = (int) Math.floor(expression.calculate()); + }else{ + this.value = 0; } } @@ -114,30 +115,4 @@ public class NumberFormatedTextField extends JTextField { NumberFormatedTextField.this.formatText(); } } - - private class FieldKeyAdapter extends KeyAdapter{ - - /** - * Solo permitir introducir un maximo de 9 digitos - */ - @Override - public void keyTyped(KeyEvent e) { - String currentText = NumberFormatedTextField.this.getText(); - int parsedText = 0; - - if(currentText.length() > 0) { - try { - parsedText = nf.parse(currentText).intValue(); - } catch (ParseException e1) { - e1.printStackTrace(); - } - } - - int length = String.valueOf(parsedText).length(); - - if (length >= 9) { - e.consume(); - } - } - } }