JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / swingjs / j2s / swingjs / test / FormattedTextFieldDemo.js
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
5 this.rate = 7.5;\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
20 }\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
24 function () {\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
70 });\r
71 Clazz.overrideMethod (c$, "propertyChange", \r
72 function (e) {\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
85  function () {\r
86 var frame =  new javax.swing.JFrame ("FormattedTextFieldDemo");\r
87 frame.setDefaultCloseOperation (3);\r
88 frame.add ( new swingjs.test.FormattedTextFieldDemo ());\r
89 frame.pack ();\r
90 frame.setVisible (true);\r
91 });\r
92 c$.main = Clazz.defineMethod (c$, "main", \r
93 function (args) {\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
95 }, "~A");\r
96 Clazz.defineMethod (c$, "computePayment", \r
97 function (loanAmt, rate, numPeriods) {\r
98 var I;\r
99 var partial1;\r
100 var denominator;\r
101 var answer;\r
102 numPeriods *= 12;\r
103 if (rate > 0.01) {\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
107 } else {\r
108 denominator = numPeriods;\r
109 }answer = (-1 * loanAmt) / denominator;\r
110 return answer;\r
111 }, "~N,~N,~N");\r
112 Clazz.defineMethod (c$, "setUpFormats", \r
113  function () {\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
118 });\r
119 Clazz.overrideMethod (c$, "focusGained", \r
120 function (e) {\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
124 function (e) {\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
128 function (e) {\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
139 function () {\r
140 this.validateNumber ();\r
141 });\r
142 Clazz.defineMethod (c$, "validateNumber", \r
143 function () {\r
144 try {\r
145 this.setText (this.getFormatter ().valueToString (this.getValue ()));\r
146 } catch (e1) {\r
147 if (Clazz.exceptionOf (e1, java.text.ParseException)) {\r
148 } else {\r
149 throw e1;\r
150 }\r
151 }\r
152 });\r
153 c$ = Clazz.p0p ();\r
154 };\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
159 function () {\r
160 javax.swing.UIManager.put ("swing.boldMetal", Boolean.FALSE);\r
161 swingjs.test.FormattedTextFieldDemo.createAndShowGUI ();\r
162 });\r
163 c$ = Clazz.p0p ();\r
164 };\r
165 Clazz.defineStatics (c$,\r
166 "amountString", "Loan Amount: ",\r
167 "rateString", "APR (%): ",\r
168 "numPeriodsString", "Years: ",\r
169 "paymentString", "Monthly Payment: ");\r
170 });\r