package ps1; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Insets; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.border.BevelBorder; import javax.swing.border.Border; /** * PolyCalcFrame and PolyGraph are part of the graphical * calculator that utilizes all of the other classes in package ps1. */ public class PolyCalcFrame extends JFrame { JPanel jPanel1 = new JPanel(); JPanel jPanel2 = new JPanel(); JPanel jPanel3 = new JPanel(); JPanel jPanel4 = new JPanel(); JPanel jPanel5 = new JPanel(); JPanel jPanel6 = new JPanel(); JPanel jPanel8 = new JPanel(); Border border1; JLabel jLabel5 = new JLabel(); JLabel jLabel6 = new JLabel(); JTextField jTextField1 = new JTextField(); JTextField jTextField2 = new JTextField(); JButton jButton_exp = new JButton(); JButton jButton_div = new JButton(); JButton jButton_mul = new JButton(); JButton jButton_7 = new JButton(); JButton jButton_8 = new JButton(); JButton jButton_9 = new JButton(); JButton jButton_4 = new JButton(); JButton jButton_5 = new JButton(); JButton jButton_6 = new JButton(); JButton jButton_1 = new JButton(); JButton jButton_2 = new JButton(); JButton jButton_3 = new JButton(); JButton jButton_0 = new JButton(); JButton jButton_x = new JButton(); JButton jButton_Enter = new JButton(); JButton jButton_plus = new JButton(); JButton jButton_minus = new JButton(); JButton jButton_swap = new JButton(); JButton jButton_pop = new JButton(); JButton jButton_dup = new JButton(); JButton jButton_int = new JButton(); JButton jButton_dif = new JButton(); JTextArea jTextArea_Current = new JTextArea(); JTextArea jTextArea_Stack_3 = new JTextArea(); JTextArea jTextArea_Stack_2 = new JTextArea(); JTextArea jTextArea_Stack_1 = new JTextArea(); JTextArea jTextArea_Stack_0 = new JTextArea(); BorderLayout borderLayout1 = new BorderLayout(); PolyGraph pg = null; RatPolyStack stack = null; Border border2; Border border3; Border border4; Border border5; JPanel jPanel7 = new JPanel(); JButton jButton_stack_mul = new JButton(); JButton jButton_stack_div = new JButton(); JButton jButton_stack_add = new JButton(); JButton jButton_stack_sub = new JButton(); JButton jButton_Clear = new JButton(); // Serializable classes are supposed to have this private static final long serialVersionUID = 42L; public PolyCalcFrame() { try { jbInit(); // exit the application when this window is closed addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { setVisible(false); dispose(); System.exit(0); } }); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { border1 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,Color.white,new Color(124, 124, 124)); border2 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.red,Color.white,new Color(178, 178, 178),new Color(124, 124, 124)); border3 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.blue,Color.white,new Color(178, 178, 178),new Color(124, 124, 124)); border4 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.green,Color.white,new Color(178, 178, 178),new Color(124, 124, 124)); border5 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.orange,Color.white,new Color(178, 178, 178),new Color(124, 124, 124)); jPanel1.setLayout(null); jPanel1.setBackground(Color.gray); jPanel1.setBorder(BorderFactory.createRaisedBevelBorder()); jPanel2.setBorder(BorderFactory.createRaisedBevelBorder()); jPanel2.setBounds(new Rectangle(21, 21, 330, 371)); jPanel2.setLayout(borderLayout1); jPanel3.setBorder(BorderFactory.createRaisedBevelBorder()); jPanel3.setBounds(new Rectangle(366, 23, 259, 219)); jPanel3.setLayout(null); jPanel4.setBorder(BorderFactory.createRaisedBevelBorder()); jPanel4.setBounds(new Rectangle(365, 258, 258, 132)); jPanel4.setLayout(null); jPanel5.setBorder(BorderFactory.createRaisedBevelBorder()); jPanel5.setBounds(new Rectangle(21, 410, 167, 90)); jPanel5.setLayout(null); jPanel6.setBorder(BorderFactory.createRaisedBevelBorder()); jPanel6.setBounds(new Rectangle(197, 410, 196, 275)); jPanel6.setLayout(null); jPanel8.setBorder(BorderFactory.createRaisedBevelBorder()); jPanel8.setBounds(new Rectangle(21, 510, 167, 90)); jPanel8.setLayout(null); jLabel5.setText("X max"); jLabel5.setBounds(new Rectangle(8, 47, 34, 25)); jLabel6.setBounds(new Rectangle(10, 10, 34, 24)); jLabel6.setText("X min"); jTextField1.setText("-1.0"); jTextField1.setBounds(new Rectangle(50, 15, 104, 22)); jTextField1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jTextField1_actionPerformed(e); } }); jTextField2.setBounds(new Rectangle(49, 51, 104, 22)); jTextField2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jTextField2_actionPerformed(e); } }); jTextField2.setText("1.0"); jButton_exp.setFont(new java.awt.Font("Dialog", 0, 18)); jButton_exp.setMargin(new Insets(2, 2, 2, 2)); jButton_exp.setText("^"); jButton_exp.setBounds(new Rectangle(9, 10, 41, 44)); jButton_exp.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_exp_actionPerformed(e); } }); jButton_int.setBounds(new Rectangle(10, 7, 146, 35)); jButton_int.setText("Integrate"); jButton_int.setFont(new java.awt.Font("Dialog", 0, 18)); jButton_int.setMargin(new Insets(2, 2, 2, 2)); jButton_int.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_int_actionPerformed(e); } }); jButton_dif.setBounds(new Rectangle(10, 47, 146, 36)); jButton_dif.setText("Differentiate"); jButton_dif.setFont(new java.awt.Font("Dialog", 0, 18)); jButton_dif.setMargin(new Insets(2, 2, 2, 2)); jButton_dif.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_dif_actionPerformed(e); } }); jButton_div.setBounds(new Rectangle(103, 10, 41, 44)); jButton_div.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_div_actionPerformed(e); } }); jButton_div.setText("/"); jButton_div.setFont(new java.awt.Font("Dialog", 0, 18)); jButton_div.setMargin(new Insets(2, 2, 2, 2)); jButton_mul.setFont(new java.awt.Font("Dialog", 0, 18)); jButton_mul.setMargin(new Insets(2, 2, 2, 2)); jButton_mul.setText("*"); jButton_mul.setBounds(new Rectangle(55, 10, 41, 44)); jButton_mul.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_mul_actionPerformed(e); } }); jButton_7.setBounds(new Rectangle(9, 60, 41, 44)); jButton_7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_7_actionPerformed(e); } }); jButton_7.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_7.setHorizontalTextPosition(SwingConstants.CENTER); jButton_7.setMargin(new Insets(2, 2, 2, 2)); jButton_7.setText("7"); jButton_8.setText("8"); jButton_8.setHorizontalTextPosition(SwingConstants.CENTER); jButton_8.setMargin(new Insets(2, 2, 2, 2)); jButton_8.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_8.setBounds(new Rectangle(55, 60, 41, 44)); jButton_8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_8_actionPerformed(e); } }); jButton_9.setBounds(new Rectangle(103, 60, 41, 44)); jButton_9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_9_actionPerformed(e); } }); jButton_9.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_9.setHorizontalTextPosition(SwingConstants.CENTER); jButton_9.setMargin(new Insets(2, 2, 2, 2)); jButton_9.setText("9"); jButton_4.setText("4"); jButton_4.setHorizontalTextPosition(SwingConstants.CENTER); jButton_4.setMargin(new Insets(2, 2, 2, 2)); jButton_4.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_4.setBounds(new Rectangle(9, 111, 41, 44)); jButton_4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_4_actionPerformed(e); } }); jButton_5.setBounds(new Rectangle(55, 111, 41, 44)); jButton_5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_5_actionPerformed(e); } }); jButton_5.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_5.setHorizontalTextPosition(SwingConstants.CENTER); jButton_5.setMargin(new Insets(2, 2, 2, 2)); jButton_5.setText("5"); jButton_6.setText("6"); jButton_6.setHorizontalTextPosition(SwingConstants.CENTER); jButton_6.setMargin(new Insets(2, 2, 2, 2)); jButton_6.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_6.setBounds(new Rectangle(103, 111, 41, 44)); jButton_6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_6_actionPerformed(e); } }); jButton_1.setBounds(new Rectangle(9, 163, 41, 44)); jButton_1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_1_actionPerformed(e); } }); jButton_1.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_1.setHorizontalTextPosition(SwingConstants.CENTER); jButton_1.setMargin(new Insets(2, 2, 2, 2)); jButton_1.setText("1"); jButton_2.setText("2"); jButton_2.setHorizontalTextPosition(SwingConstants.CENTER); jButton_2.setMargin(new Insets(2, 2, 2, 2)); jButton_2.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_2.setBounds(new Rectangle(55, 163, 41, 44)); jButton_2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_2_actionPerformed(e); } }); jButton_3.setBounds(new Rectangle(103, 163, 41, 44)); jButton_3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_3_actionPerformed(e); } }); jButton_3.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_3.setHorizontalTextPosition(SwingConstants.CENTER); jButton_3.setMargin(new Insets(2, 2, 2, 2)); jButton_3.setText("3"); jButton_0.setText("0"); jButton_0.setHorizontalTextPosition(SwingConstants.CENTER); jButton_0.setMargin(new Insets(2, 2, 2, 2)); jButton_0.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_0.setBounds(new Rectangle(9, 218, 89, 44)); jButton_0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_0_actionPerformed(e); } }); jButton_x.setText("x"); jButton_x.setHorizontalTextPosition(SwingConstants.CENTER); jButton_x.setMargin(new Insets(2, 2, 2, 2)); jButton_x.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_x.setBounds(new Rectangle(103, 218, 41, 44)); jButton_x.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_x_actionPerformed(e); } }); jButton_Enter.setBounds(new Rectangle(8, 171, 77, 44)); jButton_Enter.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_Enter_actionPerformed(e); } }); jButton_Enter.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_Enter.setHorizontalTextPosition(SwingConstants.CENTER); jButton_Enter.setMargin(new Insets(2, 2, 2, 2)); jButton_Enter.setText("Enter"); jButton_plus.setBounds(new Rectangle(149, 10, 41, 44)); jButton_plus.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_plus_actionPerformed(e); } }); jButton_plus.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_plus.setHorizontalTextPosition(SwingConstants.CENTER); jButton_plus.setMargin(new Insets(2, 2, 2, 2)); jButton_plus.setText("+"); jButton_minus.setText("-"); jButton_minus.setHorizontalTextPosition(SwingConstants.CENTER); jButton_minus.setMargin(new Insets(2, 2, 2, 2)); jButton_minus.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_minus.setBounds(new Rectangle(149, 61, 41, 44)); jButton_minus.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_minus_actionPerformed(e); } }); jButton_swap.setText("Swap"); jButton_swap.setHorizontalTextPosition(SwingConstants.CENTER); jButton_swap.setMargin(new Insets(2, 2, 2, 2)); jButton_swap.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_swap.setBounds(new Rectangle(8, 8, 75, 44)); jButton_swap.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_swap_actionPerformed(e); } }); jButton_pop.setBounds(new Rectangle(8, 63, 75, 44)); jButton_pop.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_pop_actionPerformed(e); } }); jButton_pop.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_pop.setHorizontalTextPosition(SwingConstants.CENTER); jButton_pop.setMargin(new Insets(2, 2, 2, 2)); jButton_pop.setText("Pop"); jButton_dup.setText("Dup"); jButton_dup.setHorizontalTextPosition(SwingConstants.CENTER); jButton_dup.setMargin(new Insets(2, 2, 2, 2)); jButton_dup.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_dup.setBounds(new Rectangle(8, 118, 76, 44)); jButton_dup.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_dup_actionPerformed(e); } }); jTextArea_Current.setLineWrap(true); jTextArea_Current.setBorder(BorderFactory.createLoweredBevelBorder()); jTextArea_Current.setBounds(new Rectangle(8, 11, 239, 111)); jTextArea_Stack_3.setLineWrap(true); jTextArea_Stack_3.setBorder(border5); jTextArea_Stack_3.setEditable(false); jTextArea_Stack_3.setBounds(new Rectangle(8, 10, 241, 40)); jTextArea_Stack_2.setBounds(new Rectangle(8, 57, 241, 40)); jTextArea_Stack_2.setLineWrap(true); jTextArea_Stack_2.setBorder(border4); jTextArea_Stack_2.setEditable(false); jTextArea_Stack_1.setLineWrap(true); jTextArea_Stack_1.setBorder(border3); jTextArea_Stack_1.setEditable(false); jTextArea_Stack_1.setBounds(new Rectangle(8, 105, 241, 40)); jTextArea_Stack_0.setLineWrap(true); jTextArea_Stack_0.setBorder(border2); jTextArea_Stack_0.setEditable(false); jTextArea_Stack_0.setBounds(new Rectangle(8, 154, 241, 40)); jPanel7.setBorder(BorderFactory.createRaisedBevelBorder()); jPanel7.setBounds(new Rectangle(403, 411, 199, 283)); jPanel7.setLayout(null); jButton_stack_mul.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_stack_mul_actionPerformed(e); } }); jButton_stack_mul.setBounds(new Rectangle(105, 118, 75, 44)); jButton_stack_mul.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_stack_mul.setMargin(new Insets(2, 2, 2, 2)); jButton_stack_mul.setHorizontalTextPosition(SwingConstants.CENTER); jButton_stack_mul.setText("Mul"); jButton_stack_div.setText("Div"); jButton_stack_div.setHorizontalTextPosition(SwingConstants.CENTER); jButton_stack_div.setMargin(new Insets(2, 2, 2, 2)); jButton_stack_div.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_stack_div.setBounds(new Rectangle(105, 171, 75, 44)); jButton_stack_div.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_stack_div_actionPerformed(e); } }); jButton_stack_add.setText("Add"); jButton_stack_add.setHorizontalTextPosition(SwingConstants.CENTER); jButton_stack_add.setMargin(new Insets(2, 2, 2, 2)); jButton_stack_add.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_stack_add.setBounds(new Rectangle(105, 8, 75, 44)); jButton_stack_add.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_stack_add_actionPerformed(e); } }); jButton_stack_sub.setText("Sub"); jButton_stack_sub.setHorizontalTextPosition(SwingConstants.CENTER); jButton_stack_sub.setMargin(new Insets(2, 2, 2, 2)); jButton_stack_sub.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_stack_sub.setBounds(new Rectangle(105, 63, 75, 44)); jButton_stack_sub.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_stack_sub_actionPerformed(e); } }); jButton_Clear.setText("Clear"); jButton_Clear.setMargin(new Insets(2, 2, 2, 2)); jButton_Clear.setHorizontalTextPosition(SwingConstants.CENTER); jButton_Clear.setFont(new java.awt.Font("Dialog", 1, 18)); jButton_Clear.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton_Clear_actionPerformed(e); } }); jButton_Clear.setBounds(new Rectangle(105, 225, 77, 44)); this.getContentPane().add(jPanel1, BorderLayout.CENTER); jPanel1.add(jPanel2, null); jPanel1.add(jPanel3, null); jPanel3.add(jTextArea_Stack_3, null); jPanel3.add(jTextArea_Stack_2, null); jPanel3.add(jTextArea_Stack_0, null); jPanel3.add(jTextArea_Stack_1, null); jPanel1.add(jPanel4, null); jPanel4.add(jTextArea_Current, null); jPanel1.add(jPanel5, null); jPanel1.add(jPanel8, null); jPanel5.add(jLabel6, null); jPanel5.add(jLabel5, null); jPanel5.add(jTextField1, null); jPanel5.add(jTextField2, null); jPanel8.add(jButton_int, null); jPanel8.add(jButton_dif, null); jPanel1.add(jPanel6, null); jPanel6.add(jButton_exp, null); jPanel6.add(jButton_8, null); jPanel6.add(jButton_9, null); jPanel6.add(jButton_4, null); jPanel6.add(jButton_5, null); jPanel6.add(jButton_6, null); jPanel6.add(jButton_3, null); jPanel6.add(jButton_0, null); jPanel6.add(jButton_x, null); jPanel6.add(jButton_div, null); jPanel6.add(jButton_plus, null); jPanel6.add(jButton_mul, null); jPanel6.add(jButton_7, null); jPanel6.add(jButton_2, null); jPanel6.add(jButton_1, null); jPanel6.add(jButton_minus, null); jPanel1.add(jPanel7, null); jPanel7.add(jButton_pop, null); jPanel7.add(jButton_dup, null); jPanel7.add(jButton_Enter, null); jPanel7.add(jButton_swap, null); jPanel7.add(jButton_stack_div, null); jPanel7.add(jButton_stack_mul, null); jPanel7.add(jButton_stack_add, null); jPanel7.add(jButton_stack_sub, null); jPanel7.add(jButton_Clear, null); pg = new PolyGraph(this); // pg.setBackground(Color.white); jPanel2.add(pg, "Center"); } /**Main method*/ public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { e.printStackTrace(); } PolyCalcFrame frame = new PolyCalcFrame(); //Validate frames that have preset sizes frame.validate(); //Center the window Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); frame.setSize(new Dimension(670, 730)); frame.setTitle("Polynomial Calculator"); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.setVisible(true); } boolean startNewEq = false; void appendToCurrentText(String textToAdd) { if(startNewEq) { jTextArea_Current.setText(""); startNewEq = false; } String currentText = jTextArea_Current.getText(); jTextArea_Current.setText(currentText + textToAdd); } void jButton_1_actionPerformed(ActionEvent e) { appendToCurrentText("1"); } void jButton_2_actionPerformed(ActionEvent e) { appendToCurrentText("2"); } void jButton_3_actionPerformed(ActionEvent e) { appendToCurrentText("3"); } void jButton_4_actionPerformed(ActionEvent e) { appendToCurrentText("4"); } void jButton_5_actionPerformed(ActionEvent e) { appendToCurrentText("5"); } void jButton_6_actionPerformed(ActionEvent e) { appendToCurrentText("6"); } void jButton_7_actionPerformed(ActionEvent e) { appendToCurrentText("7"); } void jButton_8_actionPerformed(ActionEvent e) { appendToCurrentText("8"); } void jButton_9_actionPerformed(ActionEvent e) { appendToCurrentText("9"); } void jButton_exp_actionPerformed(ActionEvent e) { if (startNewEq == true) startNewEq = false; appendToCurrentText("^"); } void jButton_mul_actionPerformed(ActionEvent e) { if (startNewEq == true) startNewEq = false; appendToCurrentText("*"); } void jButton_div_actionPerformed(ActionEvent e) { if (startNewEq == true) startNewEq = false; appendToCurrentText("/"); } void jButton_plus_actionPerformed(ActionEvent e) { if (startNewEq == true) startNewEq = false; appendToCurrentText("+"); } void jButton_minus_actionPerformed(ActionEvent e) { if (startNewEq == true) startNewEq = false; appendToCurrentText("-"); } void jButton_0_actionPerformed(ActionEvent e) { appendToCurrentText("0"); } void jButton_x_actionPerformed(ActionEvent e) { appendToCurrentText("x"); } void jButton_swap_actionPerformed(ActionEvent e) { try{ if (stack != null) if (stack.size() > 1) stack.swap(); // Update displays (so that they display new stack contents). updateStackDisplay(); updateGraph(); } catch (Exception e1) { e1.printStackTrace(); return; } } void jButton_pop_actionPerformed(ActionEvent e) { try{ if (stack != null) { if (stack.size() > 0) { RatPoly popped = stack.pop(); jTextArea_Current.setText(popped.unparse()); startNewEq = true; } } // Update displays (so that they display new stack contents). updateStackDisplay(); updateGraph(); } catch (Exception e1) { e1.printStackTrace(); return; } } void jButton_dup_actionPerformed(ActionEvent e) { try { if (stack != null) if (stack.size() > 0) stack.dup(); // Update displays (so that they display new stack contents). updateStackDisplay(); updateGraph(); } catch (Exception e1) { e1.printStackTrace(); return; } } void jButton_Enter_actionPerformed(ActionEvent e) { String currentText = jTextArea_Current.getText(); RatPoly parsedRatPoly; startNewEq = true; jTextArea_Current.setText(""); // Exception handler used here since some of this calls what will // ultimately be student-written code. try { // Create stack if necessary if (stack == null) stack = new RatPolyStack(); // Parse text to get new RatPoly and push it onto the stack. parsedRatPoly = RatPoly.parse(currentText); stack.push(parsedRatPoly); // Update displays (so that they display new stack contents). updateStackDisplay(); updateGraph(); } catch(Exception e1) { // Provide more informative message here. jTextArea_Current.setText(currentText); e1.printStackTrace(); return; } } void updateStackDisplay() { // First, clear all the text areas for the stack display. jTextArea_Stack_0.setText(""); jTextArea_Stack_1.setText(""); jTextArea_Stack_2.setText(""); jTextArea_Stack_3.setText(""); RatPoly currentRatPoly; String tempString; if (stack != null) { // Now fill in new information base on what's in stack. // Note that size of stack must be checked. if (stack.size() > 0) { currentRatPoly = stack.get(0); tempString = currentRatPoly.unparse(); jTextArea_Stack_0.setText(tempString); } if (stack.size() > 1) { currentRatPoly = stack.get(1); tempString = currentRatPoly.unparse(); jTextArea_Stack_1.setText(tempString); } if (stack.size() > 2) { currentRatPoly = stack.get(2); tempString = currentRatPoly.unparse(); jTextArea_Stack_2.setText(tempString); } if (stack.size() > 3) { currentRatPoly = stack.get(3); tempString = currentRatPoly.unparse(); jTextArea_Stack_3.setText(tempString); } // Consider abstracting this better! This would require // putting the text areas into an array. } } void updateGraph() { pg.repaint(); } void jTextField1_actionPerformed(ActionEvent e) { updateGraph(); } void jTextField2_actionPerformed(ActionEvent e) { updateGraph(); } void jButton_stack_mul_actionPerformed(ActionEvent e) { try { if (stack != null) if (stack.size() > 1) stack.mul(); // Update displays (so that they display new stack contents). updateStackDisplay(); updateGraph(); } catch (Exception e1) { e1.printStackTrace(); return; } } void jButton_stack_div_actionPerformed(ActionEvent e) { try { if (stack != null) if (stack.size() > 1) stack.div(); // Update displays (so that they display new stack contents). updateStackDisplay(); updateGraph(); } catch (Exception e1) { e1.printStackTrace(); return; } } void jButton_int_actionPerformed(ActionEvent e) { try { //System.out.println("Integrate Button Clicked"); if (stack != null) stack.integrate(); updateStackDisplay(); updateGraph(); } catch(Exception e1){ e1.printStackTrace(); return; } } void jButton_dif_actionPerformed(ActionEvent e) { try { //System.out.println("Differentiate Button Clicked"); if (stack != null) stack.differentiate(); updateStackDisplay(); updateGraph(); } catch(Exception e1){ e1.printStackTrace(); return; } } void jButton_stack_add_actionPerformed(ActionEvent e) { try { if (stack != null) if (stack.size() > 1) stack.add(); // Update displays (so that they display new stack contents). updateStackDisplay(); updateGraph(); } catch (Exception e1) { e1.printStackTrace(); return; } } void jButton_stack_sub_actionPerformed(ActionEvent e) { try { if (stack != null) if (stack.size() > 1) stack.sub(); // Update displays (so that they display new stack contents). updateStackDisplay(); updateGraph(); } catch (Exception e1) { e1.printStackTrace(); return; } } void jButton_Clear_actionPerformed(ActionEvent e) { try { if (stack != null) if (stack.size() > 0) stack.clear(); // Update displays (so that they display new stack contents). updateStackDisplay(); updateGraph(); } catch (Exception e1) { e1.printStackTrace(); return; } } }