1 Clazz.declarePackage ("swingjs.test");
\r
2 Clazz.load (["java.awt.event.ActionListener", "$.FocusListener", "java.beans.PropertyChangeListener", "javax.swing.JApplet", "$.JFormattedTextField"], "swingjs.test.FormattedTextFieldDemo", ["java.awt.BorderLayout", "$.Color", "$.GridLayout", "java.lang.Boolean", "$.Double", "java.text.NumberFormat", "javax.swing.JFrame", "$.JLabel", "$.JPanel", "$.SwingUtilities", "$.UIManager"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
4 this.amount = 100000;
\r
6 this.numPeriods = 30;
\r
7 this.amountLabel = null;
\r
8 this.rateLabel = null;
\r
9 this.numPeriodsLabel = null;
\r
10 this.paymentLabel = null;
\r
11 this.amountField = null;
\r
12 this.rateField = null;
\r
13 this.numPeriodsField = null;
\r
14 this.paymentField = null;
\r
15 this.amountFormat = null;
\r
16 this.percentFormat = null;
\r
17 this.paymentFormat = null;
\r
18 if (!Clazz.isClassDefined ("swingjs.test.FormattedTextFieldDemo.SwingJSValidatedNumberField")) {
\r
19 swingjs.test.FormattedTextFieldDemo.$FormattedTextFieldDemo$SwingJSValidatedNumberField$ ();
\r
21 Clazz.instantialize (this, arguments);
\r
22 }, swingjs.test, "FormattedTextFieldDemo", javax.swing.JApplet, [java.awt.event.ActionListener, java.beans.PropertyChangeListener, java.awt.event.FocusListener]);
\r
23 Clazz.overrideMethod (c$, "init",
\r
25 this.setLayout ( new java.awt.BorderLayout ());
\r
26 this.setUpFormats ();
\r
27 var payment = this.computePayment (this.amount, this.rate, this.numPeriods);
\r
28 this.amountLabel = new javax.swing.JLabel (swingjs.test.FormattedTextFieldDemo.amountString);
\r
29 this.rateLabel = new javax.swing.JLabel (swingjs.test.FormattedTextFieldDemo.rateString);
\r
30 this.numPeriodsLabel = new javax.swing.JLabel (swingjs.test.FormattedTextFieldDemo.numPeriodsString);
\r
31 this.paymentLabel = new javax.swing.JLabel (swingjs.test.FormattedTextFieldDemo.paymentString);
\r
32 this.amountField = Clazz.innerTypeInstance (swingjs.test.FormattedTextFieldDemo.SwingJSValidatedNumberField, this, null, this.amountFormat);
\r
33 this.amountField.setValue ( new Double (this.amount));
\r
34 this.amountField.setColumns (10);
\r
35 this.amountField.addPropertyChangeListener ("value", this);
\r
36 this.amountField.addActionListener (this);
\r
37 this.rateField = Clazz.innerTypeInstance (swingjs.test.FormattedTextFieldDemo.SwingJSValidatedNumberField, this, null, this.percentFormat);
\r
38 this.rateField.setValue ( new Double (this.rate));
\r
39 this.rateField.setColumns (10);
\r
40 this.rateField.addPropertyChangeListener ("value", this);
\r
41 this.rateField.addActionListener (this);
\r
42 this.rateField.addActionListener (this);
\r
43 this.numPeriodsField = Clazz.innerTypeInstance (swingjs.test.FormattedTextFieldDemo.SwingJSValidatedNumberField, this, null);
\r
44 this.numPeriodsField.setValue ( new Integer (this.numPeriods));
\r
45 this.numPeriodsField.setColumns (10);
\r
46 this.numPeriodsField.addPropertyChangeListener ("value", this);
\r
47 this.numPeriodsField.addActionListener (this);
\r
48 this.paymentField = new javax.swing.JFormattedTextField (this.paymentFormat);
\r
49 this.paymentField.setValue ( new Double (payment));
\r
50 this.paymentField.setColumns (10);
\r
51 this.paymentField.setEditable (false);
\r
52 this.paymentField.setForeground (java.awt.Color.red);
\r
53 this.amountLabel.setLabelFor (this.amountField);
\r
54 this.rateLabel.setLabelFor (this.rateField);
\r
55 this.numPeriodsLabel.setLabelFor (this.numPeriodsField);
\r
56 this.paymentLabel.setLabelFor (this.paymentField);
\r
57 var labelPane = new javax.swing.JPanel ( new java.awt.GridLayout (0, 1));
\r
58 labelPane.add (this.amountLabel);
\r
59 labelPane.add (this.rateLabel);
\r
60 labelPane.add (this.numPeriodsLabel);
\r
61 labelPane.add (this.paymentLabel);
\r
62 var fieldPane = new javax.swing.JPanel ( new java.awt.GridLayout (0, 1));
\r
63 fieldPane.add (this.amountField);
\r
64 fieldPane.add (this.rateField);
\r
65 fieldPane.add (this.numPeriodsField);
\r
66 fieldPane.add (this.paymentField);
\r
67 this.add (labelPane, "Center");
\r
68 this.add (fieldPane, "After");
\r
69 this.resize (270, 100);
\r
71 Clazz.overrideMethod (c$, "propertyChange",
\r
73 var source = e.getSource ();
\r
74 System.out.println ("propertyChange " + e);
\r
75 if (source === this.amountField) {
\r
76 this.amount = (this.amountField.getValue ()).doubleValue ();
\r
77 } else if (source === this.rateField) {
\r
78 this.rate = (this.rateField.getValue ()).doubleValue ();
\r
79 } else if (source === this.numPeriodsField) {
\r
80 this.numPeriods = (this.numPeriodsField.getValue ()).intValue ();
\r
81 }var payment = this.computePayment (this.amount, this.rate, this.numPeriods);
\r
82 this.paymentField.setValue ( new Double (payment));
\r
83 }, "java.beans.PropertyChangeEvent");
\r
84 c$.createAndShowGUI = Clazz.defineMethod (c$, "createAndShowGUI",
\r
86 var frame = new javax.swing.JFrame ("FormattedTextFieldDemo");
\r
87 frame.setDefaultCloseOperation (3);
\r
88 frame.add ( new swingjs.test.FormattedTextFieldDemo ());
\r
90 frame.setVisible (true);
\r
92 c$.main = Clazz.defineMethod (c$, "main",
\r
94 javax.swing.SwingUtilities.invokeLater (((Clazz.isClassDefined ("swingjs.test.FormattedTextFieldDemo$1") ? 0 : swingjs.test.FormattedTextFieldDemo.$FormattedTextFieldDemo$1$ ()), Clazz.innerTypeInstance (swingjs.test.FormattedTextFieldDemo$1, this, null)));
\r
96 Clazz.defineMethod (c$, "computePayment",
\r
97 function (loanAmt, rate, numPeriods) {
\r
104 I = rate / 100.0 / 12.0;
\r
105 partial1 = Math.pow ((1 + I), (0.0 - numPeriods));
\r
106 denominator = (1 - partial1) / I;
\r
108 denominator = numPeriods;
\r
109 }answer = (-1 * loanAmt) / denominator;
\r
112 Clazz.defineMethod (c$, "setUpFormats",
\r
114 this.amountFormat = java.text.NumberFormat.getNumberInstance ();
\r
115 this.percentFormat = java.text.NumberFormat.getNumberInstance ();
\r
116 this.percentFormat.setMinimumFractionDigits (3);
\r
117 this.paymentFormat = java.text.NumberFormat.getCurrencyInstance ();
\r
119 Clazz.overrideMethod (c$, "focusGained",
\r
121 System.out.println ("focusGained " + (e.getSource ()).getText () + " " + (e.getSource ()).getValue ());
\r
122 }, "java.awt.event.FocusEvent");
\r
123 Clazz.overrideMethod (c$, "focusLost",
\r
125 System.out.println ("focusLost " + (e.getSource ()).getText () + " " + (e.getSource ()).getValue ());
\r
126 }, "java.awt.event.FocusEvent");
\r
127 Clazz.overrideMethod (c$, "actionPerformed",
\r
129 System.out.println ("actionEvent " + e);
\r
130 (e.getSource ()).validateNumber ();
\r
131 }, "java.awt.event.ActionEvent");
\r
132 c$.$FormattedTextFieldDemo$SwingJSValidatedNumberField$ = function () {
\r
133 Clazz.pu$h(self.c$);
\r
134 c$ = Clazz.decorateAsClass (function () {
\r
135 Clazz.prepareCallback (this, arguments);
\r
136 Clazz.instantialize (this, arguments);
\r
137 }, swingjs.test.FormattedTextFieldDemo, "SwingJSValidatedNumberField", javax.swing.JFormattedTextField);
\r
138 Clazz.overrideMethod (c$, "invalidEdit",
\r
140 this.validateNumber ();
\r
142 Clazz.defineMethod (c$, "validateNumber",
\r
145 this.setText (this.getFormatter ().valueToString (this.getValue ()));
\r
147 if (Clazz.exceptionOf (e1, java.text.ParseException)) {
\r
155 c$.$FormattedTextFieldDemo$1$ = function () {
\r
156 Clazz.pu$h(self.c$);
\r
157 c$ = Clazz.declareAnonymous (swingjs.test, "FormattedTextFieldDemo$1", null, Runnable);
\r
158 Clazz.overrideMethod (c$, "run",
\r
160 javax.swing.UIManager.put ("swing.boldMetal", Boolean.FALSE);
\r
161 swingjs.test.FormattedTextFieldDemo.createAndShowGUI ();
\r
165 Clazz.defineStatics (c$,
\r
166 "amountString", "Loan Amount: ",
\r
167 "rateString", "APR (%): ",
\r
168 "numPeriodsString", "Years: ",
\r
169 "paymentString", "Monthly Payment: ");
\r