001 package ps1;
002
003 import javax.swing.*;
004 import java.awt.*;
005 // import com.borland.jbcl.layout.*;
006 import javax.swing.border.*;
007 import java.awt.event.*;
008
009 /**
010 * <B>CalculatorFrame</b> is part of the graphical calculator that utilizes all
011 * of the other classes in package ps1. CalculatorFrame contains the main()
012 * function which starts the calculator.
013 */
014
015 public final class CalculatorFrame extends JFrame {
016 JPanel jPanel1 = new JPanel();
017
018 JPanel jPanel2 = new JPanel();
019
020 JPanel jPanel3 = new JPanel();
021
022 JPanel jPanel4 = new JPanel();
023
024 JPanel jPanel5 = new JPanel();
025
026 JPanel jPanel6 = new JPanel();
027
028 JPanel jPanel8 = new JPanel();
029
030 Border border1;
031
032 JLabel jLabel5 = new JLabel();
033
034 JLabel jLabel6 = new JLabel();
035
036 JTextField jTextField1 = new JTextField();
037
038 JTextField jTextField2 = new JTextField();
039
040 JButton jButton_exp = new JButton();
041
042 JButton jButton_div = new JButton();
043
044 JButton jButton_mul = new JButton();
045
046 JButton jButton_7 = new JButton();
047
048 JButton jButton_8 = new JButton();
049
050 JButton jButton_9 = new JButton();
051
052 JButton jButton_4 = new JButton();
053
054 JButton jButton_5 = new JButton();
055
056 JButton jButton_6 = new JButton();
057
058 JButton jButton_1 = new JButton();
059
060 JButton jButton_2 = new JButton();
061
062 JButton jButton_3 = new JButton();
063
064 JButton jButton_0 = new JButton();
065
066 JButton jButton_x = new JButton();
067
068 JButton jButton_Enter = new JButton();
069
070 JButton jButton_plus = new JButton();
071
072 JButton jButton_minus = new JButton();
073
074 JButton jButton_swap = new JButton();
075
076 JButton jButton_pop = new JButton();
077
078 JButton jButton_dup = new JButton();
079
080 JButton jButton_int = new JButton();
081
082 JButton jButton_dif = new JButton();
083
084 JTextArea jTextArea_Current = new JTextArea();
085
086 JTextArea jTextArea_Stack_3 = new JTextArea();
087
088 JTextArea jTextArea_Stack_2 = new JTextArea();
089
090 JTextArea jTextArea_Stack_1 = new JTextArea();
091
092 JTextArea jTextArea_Stack_0 = new JTextArea();
093
094 BorderLayout borderLayout1 = new BorderLayout();
095
096 PolyGraph pg = null;
097
098 RatPolyStack stack = null;
099
100 Border border2;
101
102 Border border3;
103
104 Border border4;
105
106 Border border5;
107
108 JPanel jPanel7 = new JPanel();
109
110 JButton jButton_stack_mul = new JButton();
111
112 JButton jButton_stack_div = new JButton();
113
114 JButton jButton_stack_add = new JButton();
115
116 JButton jButton_stack_sub = new JButton();
117
118 JButton jButton_Clear = new JButton();
119
120 // Serializable classes are supposed to have this
121 private static final long serialVersionUID = 42L;
122
123 public CalculatorFrame() {
124 try {
125 jbInit();
126 // exit the application when this window is closed
127 addWindowListener(new WindowAdapter() {
128 public void windowClosing(WindowEvent e) {
129 setVisible(false);
130 dispose();
131 System.exit(0);
132 }
133 });
134 } catch (Exception e) {
135 e.printStackTrace();
136 }
137 }
138
139 private void jbInit() throws Exception {
140 border1 = BorderFactory
141 .createBevelBorder(BevelBorder.LOWERED, Color.white,
142 Color.white, Color.white, new Color(124, 124, 124));
143 border2 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,
144 Color.red, Color.white, new Color(178, 178, 178), new Color(
145 124, 124, 124));
146 border3 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,
147 Color.blue, Color.white, new Color(178, 178, 178), new Color(
148 124, 124, 124));
149 border4 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,
150 Color.green, Color.white, new Color(178, 178, 178), new Color(
151 124, 124, 124));
152 border5 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,
153 Color.orange, Color.white, new Color(178, 178, 178), new Color(
154 124, 124, 124));
155 jPanel1.setLayout(null);
156 jPanel1.setBackground(Color.gray);
157 jPanel1.setBorder(BorderFactory.createRaisedBevelBorder());
158 jPanel2.setBorder(BorderFactory.createRaisedBevelBorder());
159 jPanel2.setBounds(new Rectangle(21, 21, 330, 371));
160 jPanel2.setLayout(borderLayout1);
161 jPanel3.setBorder(BorderFactory.createRaisedBevelBorder());
162 jPanel3.setBounds(new Rectangle(366, 23, 259, 219));
163 jPanel3.setLayout(null);
164 jPanel4.setBorder(BorderFactory.createRaisedBevelBorder());
165 jPanel4.setBounds(new Rectangle(365, 258, 258, 132));
166 jPanel4.setLayout(null);
167 jPanel5.setBorder(BorderFactory.createRaisedBevelBorder());
168 jPanel5.setBounds(new Rectangle(21, 410, 167, 90));
169 jPanel5.setLayout(null);
170 jPanel6.setBorder(BorderFactory.createRaisedBevelBorder());
171 jPanel6.setBounds(new Rectangle(197, 410, 196, 275));
172 jPanel6.setLayout(null);
173 jPanel8.setBorder(BorderFactory.createRaisedBevelBorder());
174 jPanel8.setBounds(new Rectangle(21, 510, 167, 90));
175 jPanel8.setLayout(null);
176 jLabel5.setText("X max");
177 jLabel5.setBounds(new Rectangle(8, 47, 34, 25));
178 jLabel6.setBounds(new Rectangle(10, 10, 34, 24));
179 jLabel6.setText("X min");
180 jTextField1.setText("-1.0");
181 jTextField1.setBounds(new Rectangle(50, 15, 104, 22));
182 jTextField1.addActionListener(new java.awt.event.ActionListener() {
183 public void actionPerformed(ActionEvent e) {
184 jTextField1_actionPerformed(e);
185 }
186 });
187 jTextField2.setBounds(new Rectangle(49, 51, 104, 22));
188 jTextField2.addActionListener(new java.awt.event.ActionListener() {
189 public void actionPerformed(ActionEvent e) {
190 jTextField2_actionPerformed(e);
191 }
192 });
193 jTextField2.setText("1.0");
194 jButton_exp.setFont(new java.awt.Font("Dialog", 0, 18));
195 jButton_exp.setMargin(new Insets(2, 2, 2, 2));
196 jButton_exp.setText("^");
197 jButton_exp.setBounds(new Rectangle(9, 10, 41, 44));
198 jButton_exp.addActionListener(new java.awt.event.ActionListener() {
199 public void actionPerformed(ActionEvent e) {
200 jButton_exp_actionPerformed(e);
201 }
202 });
203
204 jButton_int.setBounds(new Rectangle(10, 7, 146, 35));
205 jButton_int.setText("Integrate");
206 jButton_int.setFont(new java.awt.Font("Dialog", 0, 18));
207 jButton_int.setMargin(new Insets(2, 2, 2, 2));
208 jButton_int.addActionListener(new java.awt.event.ActionListener() {
209 public void actionPerformed(ActionEvent e) {
210 jButton_int_actionPerformed(e);
211 }
212 });
213
214 jButton_dif.setBounds(new Rectangle(10, 47, 146, 36));
215 jButton_dif.setText("Differentiate");
216 jButton_dif.setFont(new java.awt.Font("Dialog", 0, 18));
217 jButton_dif.setMargin(new Insets(2, 2, 2, 2));
218 jButton_dif.addActionListener(new java.awt.event.ActionListener() {
219 public void actionPerformed(ActionEvent e) {
220 jButton_dif_actionPerformed(e);
221 }
222 });
223
224 jButton_div.setBounds(new Rectangle(103, 10, 41, 44));
225 jButton_div.addActionListener(new java.awt.event.ActionListener() {
226 public void actionPerformed(ActionEvent e) {
227 jButton_div_actionPerformed(e);
228 }
229 });
230 jButton_div.setText("/");
231 jButton_div.setFont(new java.awt.Font("Dialog", 0, 18));
232 jButton_div.setMargin(new Insets(2, 2, 2, 2));
233 jButton_mul.setFont(new java.awt.Font("Dialog", 0, 18));
234 jButton_mul.setMargin(new Insets(2, 2, 2, 2));
235 jButton_mul.setText("*");
236 jButton_mul.setBounds(new Rectangle(55, 10, 41, 44));
237 jButton_mul.addActionListener(new java.awt.event.ActionListener() {
238 public void actionPerformed(ActionEvent e) {
239 jButton_mul_actionPerformed(e);
240 }
241 });
242 jButton_7.setBounds(new Rectangle(9, 60, 41, 44));
243 jButton_7.addActionListener(new java.awt.event.ActionListener() {
244 public void actionPerformed(ActionEvent e) {
245 jButton_7_actionPerformed(e);
246 }
247 });
248 jButton_7.setFont(new java.awt.Font("Dialog", 1, 18));
249 jButton_7.setHorizontalTextPosition(SwingConstants.CENTER);
250 jButton_7.setMargin(new Insets(2, 2, 2, 2));
251 jButton_7.setText("7");
252 jButton_8.setText("8");
253 jButton_8.setHorizontalTextPosition(SwingConstants.CENTER);
254 jButton_8.setMargin(new Insets(2, 2, 2, 2));
255 jButton_8.setFont(new java.awt.Font("Dialog", 1, 18));
256 jButton_8.setBounds(new Rectangle(55, 60, 41, 44));
257 jButton_8.addActionListener(new java.awt.event.ActionListener() {
258 public void actionPerformed(ActionEvent e) {
259 jButton_8_actionPerformed(e);
260 }
261 });
262 jButton_9.setBounds(new Rectangle(103, 60, 41, 44));
263 jButton_9.addActionListener(new java.awt.event.ActionListener() {
264 public void actionPerformed(ActionEvent e) {
265 jButton_9_actionPerformed(e);
266 }
267 });
268 jButton_9.setFont(new java.awt.Font("Dialog", 1, 18));
269 jButton_9.setHorizontalTextPosition(SwingConstants.CENTER);
270 jButton_9.setMargin(new Insets(2, 2, 2, 2));
271 jButton_9.setText("9");
272 jButton_4.setText("4");
273 jButton_4.setHorizontalTextPosition(SwingConstants.CENTER);
274 jButton_4.setMargin(new Insets(2, 2, 2, 2));
275 jButton_4.setFont(new java.awt.Font("Dialog", 1, 18));
276 jButton_4.setBounds(new Rectangle(9, 111, 41, 44));
277 jButton_4.addActionListener(new java.awt.event.ActionListener() {
278 public void actionPerformed(ActionEvent e) {
279 jButton_4_actionPerformed(e);
280 }
281 });
282 jButton_5.setBounds(new Rectangle(55, 111, 41, 44));
283 jButton_5.addActionListener(new java.awt.event.ActionListener() {
284 public void actionPerformed(ActionEvent e) {
285 jButton_5_actionPerformed(e);
286 }
287 });
288 jButton_5.setFont(new java.awt.Font("Dialog", 1, 18));
289 jButton_5.setHorizontalTextPosition(SwingConstants.CENTER);
290 jButton_5.setMargin(new Insets(2, 2, 2, 2));
291 jButton_5.setText("5");
292 jButton_6.setText("6");
293 jButton_6.setHorizontalTextPosition(SwingConstants.CENTER);
294 jButton_6.setMargin(new Insets(2, 2, 2, 2));
295 jButton_6.setFont(new java.awt.Font("Dialog", 1, 18));
296 jButton_6.setBounds(new Rectangle(103, 111, 41, 44));
297 jButton_6.addActionListener(new java.awt.event.ActionListener() {
298 public void actionPerformed(ActionEvent e) {
299 jButton_6_actionPerformed(e);
300 }
301 });
302 jButton_1.setBounds(new Rectangle(9, 163, 41, 44));
303 jButton_1.addActionListener(new java.awt.event.ActionListener() {
304 public void actionPerformed(ActionEvent e) {
305 jButton_1_actionPerformed(e);
306 }
307 });
308 jButton_1.setFont(new java.awt.Font("Dialog", 1, 18));
309 jButton_1.setHorizontalTextPosition(SwingConstants.CENTER);
310 jButton_1.setMargin(new Insets(2, 2, 2, 2));
311 jButton_1.setText("1");
312 jButton_2.setText("2");
313 jButton_2.setHorizontalTextPosition(SwingConstants.CENTER);
314 jButton_2.setMargin(new Insets(2, 2, 2, 2));
315 jButton_2.setFont(new java.awt.Font("Dialog", 1, 18));
316 jButton_2.setBounds(new Rectangle(55, 163, 41, 44));
317 jButton_2.addActionListener(new java.awt.event.ActionListener() {
318 public void actionPerformed(ActionEvent e) {
319 jButton_2_actionPerformed(e);
320 }
321 });
322 jButton_3.setBounds(new Rectangle(103, 163, 41, 44));
323 jButton_3.addActionListener(new java.awt.event.ActionListener() {
324 public void actionPerformed(ActionEvent e) {
325 jButton_3_actionPerformed(e);
326 }
327 });
328 jButton_3.setFont(new java.awt.Font("Dialog", 1, 18));
329 jButton_3.setHorizontalTextPosition(SwingConstants.CENTER);
330 jButton_3.setMargin(new Insets(2, 2, 2, 2));
331 jButton_3.setText("3");
332 jButton_0.setText("0");
333 jButton_0.setHorizontalTextPosition(SwingConstants.CENTER);
334 jButton_0.setMargin(new Insets(2, 2, 2, 2));
335 jButton_0.setFont(new java.awt.Font("Dialog", 1, 18));
336 jButton_0.setBounds(new Rectangle(9, 218, 89, 44));
337 jButton_0.addActionListener(new java.awt.event.ActionListener() {
338 public void actionPerformed(ActionEvent e) {
339 jButton_0_actionPerformed(e);
340 }
341 });
342 jButton_x.setText("x");
343 jButton_x.setHorizontalTextPosition(SwingConstants.CENTER);
344 jButton_x.setMargin(new Insets(2, 2, 2, 2));
345 jButton_x.setFont(new java.awt.Font("Dialog", 1, 18));
346 jButton_x.setBounds(new Rectangle(103, 218, 41, 44));
347 jButton_x.addActionListener(new java.awt.event.ActionListener() {
348 public void actionPerformed(ActionEvent e) {
349 jButton_x_actionPerformed(e);
350 }
351 });
352 jButton_Enter.setBounds(new Rectangle(8, 171, 77, 44));
353 jButton_Enter.addActionListener(new java.awt.event.ActionListener() {
354 public void actionPerformed(ActionEvent e) {
355 jButton_Enter_actionPerformed(e);
356 }
357 });
358 jButton_Enter.setFont(new java.awt.Font("Dialog", 1, 18));
359 jButton_Enter.setHorizontalTextPosition(SwingConstants.CENTER);
360 jButton_Enter.setMargin(new Insets(2, 2, 2, 2));
361 jButton_Enter.setText("Enter");
362 jButton_plus.setBounds(new Rectangle(149, 10, 41, 44));
363 jButton_plus.addActionListener(new java.awt.event.ActionListener() {
364 public void actionPerformed(ActionEvent e) {
365 jButton_plus_actionPerformed(e);
366 }
367 });
368 jButton_plus.setFont(new java.awt.Font("Dialog", 1, 18));
369 jButton_plus.setHorizontalTextPosition(SwingConstants.CENTER);
370 jButton_plus.setMargin(new Insets(2, 2, 2, 2));
371 jButton_plus.setText("+");
372 jButton_minus.setText("-");
373 jButton_minus.setHorizontalTextPosition(SwingConstants.CENTER);
374 jButton_minus.setMargin(new Insets(2, 2, 2, 2));
375 jButton_minus.setFont(new java.awt.Font("Dialog", 1, 18));
376 jButton_minus.setBounds(new Rectangle(149, 61, 41, 44));
377 jButton_minus.addActionListener(new java.awt.event.ActionListener() {
378 public void actionPerformed(ActionEvent e) {
379 jButton_minus_actionPerformed(e);
380 }
381 });
382 jButton_swap.setText("Swap");
383 jButton_swap.setHorizontalTextPosition(SwingConstants.CENTER);
384 jButton_swap.setMargin(new Insets(2, 2, 2, 2));
385 jButton_swap.setFont(new java.awt.Font("Dialog", 1, 18));
386 jButton_swap.setBounds(new Rectangle(8, 8, 75, 44));
387 jButton_swap.addActionListener(new java.awt.event.ActionListener() {
388 public void actionPerformed(ActionEvent e) {
389 jButton_swap_actionPerformed(e);
390 }
391 });
392 jButton_pop.setBounds(new Rectangle(8, 63, 75, 44));
393 jButton_pop.addActionListener(new java.awt.event.ActionListener() {
394 public void actionPerformed(ActionEvent e) {
395 jButton_pop_actionPerformed(e);
396 }
397 });
398 jButton_pop.setFont(new java.awt.Font("Dialog", 1, 18));
399 jButton_pop.setHorizontalTextPosition(SwingConstants.CENTER);
400 jButton_pop.setMargin(new Insets(2, 2, 2, 2));
401 jButton_pop.setText("Pop");
402 jButton_dup.setText("Dup");
403 jButton_dup.setHorizontalTextPosition(SwingConstants.CENTER);
404 jButton_dup.setMargin(new Insets(2, 2, 2, 2));
405 jButton_dup.setFont(new java.awt.Font("Dialog", 1, 18));
406 jButton_dup.setBounds(new Rectangle(8, 118, 76, 44));
407 jButton_dup.addActionListener(new java.awt.event.ActionListener() {
408 public void actionPerformed(ActionEvent e) {
409 jButton_dup_actionPerformed(e);
410 }
411 });
412 jTextArea_Current.setLineWrap(true);
413 jTextArea_Current.setBorder(BorderFactory.createLoweredBevelBorder());
414 jTextArea_Current.setBounds(new Rectangle(8, 11, 239, 111));
415 jTextArea_Stack_3.setLineWrap(true);
416 jTextArea_Stack_3.setBorder(border5);
417 jTextArea_Stack_3.setEditable(false);
418 jTextArea_Stack_3.setBounds(new Rectangle(8, 10, 241, 40));
419 jTextArea_Stack_2.setBounds(new Rectangle(8, 57, 241, 40));
420 jTextArea_Stack_2.setLineWrap(true);
421 jTextArea_Stack_2.setBorder(border4);
422 jTextArea_Stack_2.setEditable(false);
423 jTextArea_Stack_1.setLineWrap(true);
424 jTextArea_Stack_1.setBorder(border3);
425 jTextArea_Stack_1.setEditable(false);
426 jTextArea_Stack_1.setBounds(new Rectangle(8, 105, 241, 40));
427 jTextArea_Stack_0.setLineWrap(true);
428 jTextArea_Stack_0.setBorder(border2);
429 jTextArea_Stack_0.setEditable(false);
430 jTextArea_Stack_0.setBounds(new Rectangle(8, 154, 241, 40));
431 jPanel7.setBorder(BorderFactory.createRaisedBevelBorder());
432 jPanel7.setBounds(new Rectangle(403, 411, 199, 283));
433 jPanel7.setLayout(null);
434 jButton_stack_mul
435 .addActionListener(new java.awt.event.ActionListener() {
436 public void actionPerformed(ActionEvent e) {
437 jButton_stack_mul_actionPerformed(e);
438 }
439 });
440 jButton_stack_mul.setBounds(new Rectangle(105, 118, 75, 44));
441 jButton_stack_mul.setFont(new java.awt.Font("Dialog", 1, 18));
442 jButton_stack_mul.setMargin(new Insets(2, 2, 2, 2));
443 jButton_stack_mul.setHorizontalTextPosition(SwingConstants.CENTER);
444 jButton_stack_mul.setText("Mul");
445 jButton_stack_div.setText("Div");
446 jButton_stack_div.setHorizontalTextPosition(SwingConstants.CENTER);
447 jButton_stack_div.setMargin(new Insets(2, 2, 2, 2));
448 jButton_stack_div.setFont(new java.awt.Font("Dialog", 1, 18));
449 jButton_stack_div.setBounds(new Rectangle(105, 171, 75, 44));
450 jButton_stack_div
451 .addActionListener(new java.awt.event.ActionListener() {
452 public void actionPerformed(ActionEvent e) {
453 jButton_stack_div_actionPerformed(e);
454 }
455 });
456 jButton_stack_add.setText("Add");
457 jButton_stack_add.setHorizontalTextPosition(SwingConstants.CENTER);
458 jButton_stack_add.setMargin(new Insets(2, 2, 2, 2));
459 jButton_stack_add.setFont(new java.awt.Font("Dialog", 1, 18));
460 jButton_stack_add.setBounds(new Rectangle(105, 8, 75, 44));
461 jButton_stack_add
462 .addActionListener(new java.awt.event.ActionListener() {
463 public void actionPerformed(ActionEvent e) {
464 jButton_stack_add_actionPerformed(e);
465 }
466 });
467 jButton_stack_sub.setText("Sub");
468 jButton_stack_sub.setHorizontalTextPosition(SwingConstants.CENTER);
469 jButton_stack_sub.setMargin(new Insets(2, 2, 2, 2));
470 jButton_stack_sub.setFont(new java.awt.Font("Dialog", 1, 18));
471 jButton_stack_sub.setBounds(new Rectangle(105, 63, 75, 44));
472 jButton_stack_sub
473 .addActionListener(new java.awt.event.ActionListener() {
474 public void actionPerformed(ActionEvent e) {
475 jButton_stack_sub_actionPerformed(e);
476 }
477 });
478 jButton_Clear.setText("Clear");
479 jButton_Clear.setMargin(new Insets(2, 2, 2, 2));
480 jButton_Clear.setHorizontalTextPosition(SwingConstants.CENTER);
481 jButton_Clear.setFont(new java.awt.Font("Dialog", 1, 18));
482 jButton_Clear.addActionListener(new java.awt.event.ActionListener() {
483 public void actionPerformed(ActionEvent e) {
484 jButton_Clear_actionPerformed(e);
485 }
486 });
487 jButton_Clear.setBounds(new Rectangle(105, 225, 77, 44));
488 this.getContentPane().add(jPanel1, BorderLayout.CENTER);
489 jPanel1.add(jPanel2, null);
490 jPanel1.add(jPanel3, null);
491 jPanel3.add(jTextArea_Stack_3, null);
492 jPanel3.add(jTextArea_Stack_2, null);
493 jPanel3.add(jTextArea_Stack_0, null);
494 jPanel3.add(jTextArea_Stack_1, null);
495 jPanel1.add(jPanel4, null);
496 jPanel4.add(jTextArea_Current, null);
497 jPanel1.add(jPanel5, null);
498 jPanel1.add(jPanel8, null);
499 jPanel5.add(jLabel6, null);
500 jPanel5.add(jLabel5, null);
501 jPanel5.add(jTextField1, null);
502 jPanel5.add(jTextField2, null);
503 jPanel8.add(jButton_int, null);
504 jPanel8.add(jButton_dif, null);
505 jPanel1.add(jPanel6, null);
506 jPanel6.add(jButton_exp, null);
507 jPanel6.add(jButton_8, null);
508 jPanel6.add(jButton_9, null);
509 jPanel6.add(jButton_4, null);
510 jPanel6.add(jButton_5, null);
511 jPanel6.add(jButton_6, null);
512 jPanel6.add(jButton_3, null);
513 jPanel6.add(jButton_0, null);
514 jPanel6.add(jButton_x, null);
515 jPanel6.add(jButton_div, null);
516 jPanel6.add(jButton_plus, null);
517 jPanel6.add(jButton_mul, null);
518 jPanel6.add(jButton_7, null);
519 jPanel6.add(jButton_2, null);
520 jPanel6.add(jButton_1, null);
521 jPanel6.add(jButton_minus, null);
522 jPanel1.add(jPanel7, null);
523 jPanel7.add(jButton_pop, null);
524 jPanel7.add(jButton_dup, null);
525 jPanel7.add(jButton_Enter, null);
526 jPanel7.add(jButton_swap, null);
527 jPanel7.add(jButton_stack_div, null);
528 jPanel7.add(jButton_stack_mul, null);
529 jPanel7.add(jButton_stack_add, null);
530 jPanel7.add(jButton_stack_sub, null);
531 jPanel7.add(jButton_Clear, null);
532
533 pg = new PolyGraph(this);
534 // pg.setBackground(Color.white);
535 jPanel2.add(pg, "Center");
536 }
537
538 /** Main method */
539 public static void main(String[] args) {
540 try {
541 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
542 } catch (Exception e) {
543 e.printStackTrace();
544 }
545
546 CalculatorFrame frame = new CalculatorFrame();
547
548 // Validate frames that have preset sizes
549 frame.validate();
550
551 // Center the window
552 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
553
554 frame.setSize(new Dimension(670, 730));
555 frame.setTitle("Polynomial Calculator");
556
557 Dimension frameSize = frame.getSize();
558
559 if (frameSize.height > screenSize.height) {
560 frameSize.height = screenSize.height;
561 }
562 if (frameSize.width > screenSize.width) {
563 frameSize.width = screenSize.width;
564 }
565 frame.setLocation((screenSize.width - frameSize.width) / 2,
566 (screenSize.height - frameSize.height) / 2);
567 frame.setVisible(true);
568 }
569
570 boolean startNewEq = false;
571
572 void appendToCurrentText(String textToAdd) {
573 if (startNewEq) {
574 jTextArea_Current.setText("");
575 startNewEq = false;
576 }
577 String currentText = jTextArea_Current.getText();
578 jTextArea_Current.setText(currentText + textToAdd);
579 }
580
581 void jButton_1_actionPerformed(ActionEvent e) {
582 appendToCurrentText("1");
583 }
584
585 void jButton_2_actionPerformed(ActionEvent e) {
586 appendToCurrentText("2");
587 }
588
589 void jButton_3_actionPerformed(ActionEvent e) {
590 appendToCurrentText("3");
591 }
592
593 void jButton_4_actionPerformed(ActionEvent e) {
594 appendToCurrentText("4");
595 }
596
597 void jButton_5_actionPerformed(ActionEvent e) {
598 appendToCurrentText("5");
599 }
600
601 void jButton_6_actionPerformed(ActionEvent e) {
602 appendToCurrentText("6");
603 }
604
605 void jButton_7_actionPerformed(ActionEvent e) {
606 appendToCurrentText("7");
607 }
608
609 void jButton_8_actionPerformed(ActionEvent e) {
610 appendToCurrentText("8");
611 }
612
613 void jButton_9_actionPerformed(ActionEvent e) {
614 appendToCurrentText("9");
615 }
616
617 void jButton_exp_actionPerformed(ActionEvent e) {
618 if (startNewEq == true)
619 startNewEq = false;
620 appendToCurrentText("^");
621 }
622
623 void jButton_mul_actionPerformed(ActionEvent e) {
624 if (startNewEq == true)
625 startNewEq = false;
626 appendToCurrentText("*");
627 }
628
629 void jButton_div_actionPerformed(ActionEvent e) {
630 if (startNewEq == true)
631 startNewEq = false;
632 appendToCurrentText("/");
633 }
634
635 void jButton_plus_actionPerformed(ActionEvent e) {
636 if (startNewEq == true)
637 startNewEq = false;
638 appendToCurrentText("+");
639 }
640
641 void jButton_minus_actionPerformed(ActionEvent e) {
642 if (startNewEq == true)
643 startNewEq = false;
644 appendToCurrentText("-");
645 }
646
647 void jButton_0_actionPerformed(ActionEvent e) {
648 appendToCurrentText("0");
649 }
650
651 void jButton_x_actionPerformed(ActionEvent e) {
652 appendToCurrentText("x");
653 }
654
655 void jButton_swap_actionPerformed(ActionEvent e) {
656 try {
657 if (stack != null)
658 if (stack.size() > 1)
659 stack.swap();
660 // Update displays (so that they display new stack contents).
661 updateStackDisplay();
662 updateGraph();
663 } catch (Exception e1) {
664 e1.printStackTrace();
665 return;
666 }
667 }
668
669 void jButton_pop_actionPerformed(ActionEvent e) {
670 try {
671 if (stack != null) {
672 if (stack.size() > 0) {
673 RatPoly popped = stack.pop();
674 jTextArea_Current.setText(popped.toString());
675 startNewEq = true;
676 }
677 }
678 // Update displays (so that they display new stack contents).
679 updateStackDisplay();
680 updateGraph();
681 } catch (Exception e1) {
682 e1.printStackTrace();
683 return;
684 }
685 }
686
687 void jButton_dup_actionPerformed(ActionEvent e) {
688 try {
689 if (stack != null)
690 if (stack.size() > 0)
691 stack.dup();
692 // Update displays (so that they display new stack contents).
693 updateStackDisplay();
694 updateGraph();
695 } catch (Exception e1) {
696 e1.printStackTrace();
697 return;
698 }
699 }
700
701 void jButton_Enter_actionPerformed(ActionEvent e) {
702 String currentText = jTextArea_Current.getText();
703 RatPoly parsedRatPoly;
704
705 startNewEq = true;
706 jTextArea_Current.setText("");
707
708 // Exception handler used here since some of this calls what will
709 // ultimately be student-written code.
710 try {
711 // Create stack if necessary
712 if (stack == null)
713 stack = new RatPolyStack();
714
715 // Parse text to get new RatPoly and push it onto the stack.
716 parsedRatPoly = RatPoly.valueOf(currentText);
717 stack.push(parsedRatPoly);
718
719 // Update displays (so that they display new stack contents).
720 updateStackDisplay();
721 updateGraph();
722 } catch (Exception e1) {
723 // Provide more informative message here.
724 jTextArea_Current.setText(currentText);
725 e1.printStackTrace();
726 return;
727 }
728
729 }
730
731 void updateStackDisplay() {
732 // First, clear all the text areas for the stack display.
733 jTextArea_Stack_0.setText("");
734 jTextArea_Stack_1.setText("");
735 jTextArea_Stack_2.setText("");
736 jTextArea_Stack_3.setText("");
737
738 RatPoly currentRatPoly;
739 String tempString;
740
741 if (stack != null) {
742
743 // Now fill in new information base on what's in stack.
744 // Note that size of stack must be checked.
745 if (stack.size() > 0) {
746 currentRatPoly = stack.getNthFromTop(0);
747 tempString = currentRatPoly.toString();
748 jTextArea_Stack_0.setText(tempString);
749 }
750
751 if (stack.size() > 1) {
752 currentRatPoly = stack.getNthFromTop(1);
753 tempString = currentRatPoly.toString();
754 jTextArea_Stack_1.setText(tempString);
755 }
756
757 if (stack.size() > 2) {
758 currentRatPoly = stack.getNthFromTop(2);
759 tempString = currentRatPoly.toString();
760 jTextArea_Stack_2.setText(tempString);
761 }
762
763 if (stack.size() > 3) {
764 currentRatPoly = stack.getNthFromTop(3);
765 tempString = currentRatPoly.toString();
766 jTextArea_Stack_3.setText(tempString);
767 }
768 // Consider abstracting this better! This would require
769 // putting the text areas into an array.
770
771 }
772
773 }
774
775 void updateGraph() {
776 pg.repaint();
777 }
778
779 void jTextField1_actionPerformed(ActionEvent e) {
780 updateGraph();
781 }
782
783 void jTextField2_actionPerformed(ActionEvent e) {
784 updateGraph();
785 }
786
787 void jButton_stack_mul_actionPerformed(ActionEvent e) {
788 try {
789 if (stack != null)
790 if (stack.size() > 1)
791 stack.mul();
792 // Update displays (so that they display new stack contents).
793 updateStackDisplay();
794 updateGraph();
795 } catch (Exception e1) {
796 e1.printStackTrace();
797 return;
798 }
799 }
800
801 void jButton_stack_div_actionPerformed(ActionEvent e) {
802 try {
803 if (stack != null)
804 if (stack.size() > 1)
805 stack.div();
806 // Update displays (so that they display new stack contents).
807 updateStackDisplay();
808 updateGraph();
809 } catch (Exception e1) {
810 e1.printStackTrace();
811 return;
812 }
813 }
814
815 void jButton_int_actionPerformed(ActionEvent e) {
816 try {
817 // System.out.println("Integrate Button Clicked");
818 if (stack != null)
819 stack.integrate();
820 updateStackDisplay();
821 updateGraph();
822 } catch (Exception e1) {
823 e1.printStackTrace();
824 return;
825 }
826 }
827
828 void jButton_dif_actionPerformed(ActionEvent e) {
829 try {
830 // System.out.println("Differentiate Button Clicked");
831 if (stack != null)
832 stack.differentiate();
833 updateStackDisplay();
834 updateGraph();
835 } catch (Exception e1) {
836 e1.printStackTrace();
837 return;
838 }
839 }
840
841 void jButton_stack_add_actionPerformed(ActionEvent e) {
842 try {
843 if (stack != null)
844 if (stack.size() > 1)
845 stack.add();
846 // Update displays (so that they display new stack contents).
847 updateStackDisplay();
848 updateGraph();
849 } catch (Exception e1) {
850 e1.printStackTrace();
851 return;
852 }
853 }
854
855 void jButton_stack_sub_actionPerformed(ActionEvent e) {
856 try {
857 if (stack != null)
858 if (stack.size() > 1)
859 stack.sub();
860 // Update displays (so that they display new stack contents).
861 updateStackDisplay();
862 updateGraph();
863 } catch (Exception e1) {
864 e1.printStackTrace();
865 return;
866 }
867 }
868
869 void jButton_Clear_actionPerformed(ActionEvent e) {
870 try {
871 if (stack != null)
872 if (stack.size() > 0)
873 stack.clear();
874 // Update displays (so that they display new stack contents).
875 updateStackDisplay();
876 updateGraph();
877 } catch (Exception e1) {
878 e1.printStackTrace();
879 return;
880 }
881 }
882
883 }