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    }