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 @@
-
@@ -257,15 +200,16 @@
-
-
+
+
+
@@ -283,17 +227,7 @@
-
-
-
-
-
-
-
-
-
-
-
+
@@ -343,7 +277,7 @@
-
+
@@ -351,11 +285,7 @@
-
-
-
-
-
+
@@ -559,7 +489,8 @@
-
+
+
1545280618093
@@ -785,11 +716,18 @@
1546746290385
-
+
+ 1546746736204
+
+
+
+ 1546746736204
+
+
-
+
@@ -804,7 +742,7 @@
-
+
@@ -813,7 +751,7 @@
-
+
@@ -824,12 +762,13 @@
+
-
+
@@ -893,7 +832,6 @@
-
@@ -918,16 +856,14 @@
-
+
+
-
-
-
@@ -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();
- }
- }
- }
}