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