/** * Created : Mar 27, 2012 * * @author pquiring */ import java.awt.*; import java.util.*; import javax.swing.*; public class CalculatorApp extends javax.swing.JFrame { public static String version = "0.4"; /** * Creates new form CalculatorApp */ public CalculatorApp() { initComponents(); backend = new Backend(); loadPanel(0); setPosition(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { menuBar = new javax.swing.JMenuBar(); jMenu1 = new javax.swing.JMenu(); cut = new javax.swing.JMenuItem(); copy = new javax.swing.JMenuItem(); paste = new javax.swing.JMenuItem(); jSeparator1 = new javax.swing.JPopupMenu.Separator(); viewFormula = new javax.swing.JMenuItem(); jSeparator2 = new javax.swing.JPopupMenu.Separator(); quit = new javax.swing.JMenuItem(); jMenu2 = new javax.swing.JMenu(); basicMode = new javax.swing.JMenuItem(); sciMode = new javax.swing.JMenuItem(); devMode = new javax.swing.JMenuItem(); jMenu3 = new javax.swing.JMenu(); help = new javax.swing.JMenuItem(); about = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("jCalculator"); setResizable(false); jMenu1.setText("Edit"); cut.setText("Cut"); cut.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cutActionPerformed(evt); } }); jMenu1.add(cut); copy.setText("Copy"); copy.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { copyActionPerformed(evt); } }); jMenu1.add(copy); paste.setText("Paste"); paste.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { pasteActionPerformed(evt); } }); jMenu1.add(paste); jMenu1.add(jSeparator1); viewFormula.setText("View Formula"); viewFormula.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { viewFormulaActionPerformed(evt); } }); jMenu1.add(viewFormula); jMenu1.add(jSeparator2); quit.setText("Quit"); quit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { quitActionPerformed(evt); } }); jMenu1.add(quit); menuBar.add(jMenu1); jMenu2.setText("Mode"); basicMode.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, 0)); basicMode.setText("Basic"); basicMode.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { basicModeActionPerformed(evt); } }); jMenu2.add(basicMode); sciMode.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F3, 0)); sciMode.setText("Scientific"); sciMode.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { sciModeActionPerformed(evt); } }); jMenu2.add(sciMode); devMode.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, 0)); devMode.setText("Programmer"); devMode.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { devModeActionPerformed(evt); } }); jMenu2.add(devMode); menuBar.add(jMenu2); jMenu3.setText("Help"); help.setText("Help"); help.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { helpActionPerformed(evt); } }); jMenu3.add(help); about.setText("About"); about.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { aboutActionPerformed(evt); } }); jMenu3.add(about); menuBar.add(jMenu3); setJMenuBar(menuBar); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 400, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 273, Short.MAX_VALUE) ); pack(); }// </editor-fold>//GEN-END:initComponents private void viewFormulaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewFormulaActionPerformed backend.endEntry(); FormulaDialog dialog = new FormulaDialog(this, true, backend); backend.inDialog = true; dialog.setVisible(true); backend.inDialog = false; if (backend.formula.get(backend.fidx).length() > 0) { backend.formula.add(""); backend.fidx++; } backend.display.setDisplay(""); }//GEN-LAST:event_viewFormulaActionPerformed private void quitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_quitActionPerformed System.exit(0); }//GEN-LAST:event_quitActionPerformed private void basicModeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_basicModeActionPerformed loadPanel(0); }//GEN-LAST:event_basicModeActionPerformed private void sciModeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sciModeActionPerformed loadPanel(1); }//GEN-LAST:event_sciModeActionPerformed private void devModeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_devModeActionPerformed loadPanel(2); }//GEN-LAST:event_devModeActionPerformed private void cutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cutActionPerformed backend.display.cut(); }//GEN-LAST:event_cutActionPerformed private void copyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_copyActionPerformed backend.display.copy(); }//GEN-LAST:event_copyActionPerformed private void pasteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pasteActionPerformed backend.paste(); }//GEN-LAST:event_pasteActionPerformed private void aboutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutActionPerformed backend.about(); }//GEN-LAST:event_aboutActionPerformed private void helpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpActionPerformed try { Runtime.getRuntime().exec("jhelp jfcalc"); } catch (Exception e) { } }//GEN-LAST:event_helpActionPerformed /** * @param args the command line arguments */ public static void main(String args[]) { /* * Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new CalculatorApp().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JMenuItem about; private javax.swing.JMenuItem basicMode; private javax.swing.JMenuItem copy; private javax.swing.JMenuItem cut; private javax.swing.JMenuItem devMode; private javax.swing.JMenuItem help; private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; private javax.swing.JMenu jMenu3; private javax.swing.JPopupMenu.Separator jSeparator1; private javax.swing.JPopupMenu.Separator jSeparator2; private javax.swing.JMenuBar menuBar; private javax.swing.JMenuItem paste; private javax.swing.JMenuItem quit; private javax.swing.JMenuItem sciMode; private javax.swing.JMenuItem viewFormula; // End of variables declaration//GEN-END:variables private Backend backend; private void setFrameSize(Dimension size) { Insets insets = getInsets(); size.width += insets.left + insets.right; size.height += insets.top + insets.bottom; size.height += menuBar.getHeight(); setSize(size); } private void loadPanel(int type) { backend.mode = type; JPanel panel = null; switch (type) { case 0: //basic panel = new BasicPanel(backend); break; case 1: //scientific panel = new ScientificPanel(backend); break; case 2: //programmer panel = new ProgrammerPanel(backend); break; } setContentPane(panel); setFrameSize(panel.getPreferredSize()); backend.display = (Display)panel; backend.doAllClear(); validate(); repaint(); } private void setPosition() { Rectangle s = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds(); Dimension d = getSize(); setLocation(s.width/2 - d.width/2, s.height/2 - (d.height/2)); } }