//Author: ^-^Veerle^-^ import java.awt.Color; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JTextField; import javax.swing.JPanel; import javax.swing.ImageIcon; import javax.swing.JTabbedPane; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.BorderFactory; import javax.swing.JOptionPane; public class calc2GUI extends JPanel implements ActionListener { private final Color clrMainBackground = new Color(75,141,221); //Light blue private final Color clrPadBackground = new Color(0,0,0); //Black private final int width = 420, height = 260; private calc2Int calcObject; private JButton[] cmdOperations, cmdMemory; private JButton cmdRestart; private JTextField txtAnswer; private JPanel panRoot, panNorthArea, panAnswerArea, panInputArea; private calcNumPad panNumPad; private calcOppPad panOperationPad; private calcMemoryPad panMemoryPad; private calculatorPanCurrency panCurrencyPad; private calcMenu menuSystem; public calc2GUI () { this.setLayout(new BorderLayout()); menuSystem = new calcMenu(this, new Color(0,0,64), new Color(255,255,255)); this.setPreferredSize(new Dimension(width, height)); calcObject = new calc2Int(); panRoot = new JPanel(new BorderLayout()); //panRoot is used so I can add some padding to the root container panNorthArea = new JPanel(new BorderLayout()); panAnswerArea = new JPanel(new BorderLayout()); panInputArea = new JPanel(new BorderLayout()); panNumPad = new calcNumPad(this); panMemoryPad = new calcMemoryPad(this); panOperationPad = new calcOppPad(this); panCurrencyPad = new calculatorPanCurrency(this); JTabbedPane tabPane = new JTabbedPane(); tabPane.setPreferredSize(new Dimension(210, 170)); txtAnswer = new JTextField("0.", 15); txtAnswer.setEditable(false); cmdRestart = new JButton("Restart"); cmdRestart.addActionListener(this); cmdRestart.setActionCommand("Restart"); //Changing the language changes the caption, but won't change this panAnswerArea.add(txtAnswer, BorderLayout.WEST); panAnswerArea.add(cmdRestart, BorderLayout.EAST); try //Tries to get the images for the square root/power buttons { ImageIcon[] imgIcon = new ImageIcon[2]; String[] strKeys = {"Sq","v"}; for (int i = 0; i < imgIcon.length; i++) { imgIcon[i] = dataManager.createImageIcon(this, "images/" + strKeys[i] + ".gif", strKeys[i]); } panOperationPad.setupImages(imgIcon, strKeys); } catch (Exception ex) //It doesn't matter to much if they can not be found { JOptionPane.showMessageDialog(null, ex.getMessage(), "Error when loading images", JOptionPane.WARNING_MESSAGE); } this.add(panRoot, BorderLayout.CENTER); panRoot.add(panNorthArea, BorderLayout.NORTH); panNorthArea.add(panMemoryPad, BorderLayout.NORTH); panNorthArea.add(panAnswerArea, BorderLayout.SOUTH); panRoot.add(panInputArea, BorderLayout.SOUTH); panInputArea.add(panNumPad, BorderLayout.WEST); panInputArea.add(tabPane, BorderLayout.EAST); tabPane.add("Calculator", panOperationPad); tabPane.add("Currency", panCurrencyPad); this.setBackground(clrMainBackground); panRoot.setBackground(clrMainBackground); panNorthArea.setBackground(clrMainBackground); panAnswerArea.setBackground(clrMainBackground); panMemoryPad.setBackground(clrMainBackground); panInputArea.setBackground(clrMainBackground); txtAnswer.setBackground(new Color(133,133,133)); panNumPad.setBackground(clrPadBackground); panOperationPad.setBackground(clrPadBackground); panRoot.setBorder(BorderFactory.createEmptyBorder(4,4,4,4)); panNumPad.setBorder(BorderFactory.createEmptyBorder(4,4,4,4)); panOperationPad.setBorder(BorderFactory.createEmptyBorder(4,4,4,4)); panAnswerArea.setBorder(BorderFactory.createEmptyBorder(4,4,4,4)); setLanguage("English"); } public Container getGUI () { return this; } public JMenuBar getMenu () { return menuSystem; } private void setLanguage (String strLanguage) { if (strLanguage.equalsIgnoreCase("Dutch")) { cmdRestart.setToolTipText("start een nieuwe berekening"); cmdRestart.setText("Restart"); } else if (strLanguage.equalsIgnoreCase("Spanish")) { cmdRestart.setToolTipText("Comience un nuevo calculo"); cmdRestart.setText("Reiniciar"); } else //English or not reconised, set as English { cmdRestart.setToolTipText("Start a new calculation"); cmdRestart.setText("Restart"); } panNumPad.setLanguage(strLanguage); panMemoryPad.setLanguage(strLanguage); panOperationPad.setLanguage(strLanguage); panCurrencyPad.setLanguage(strLanguage); menuSystem.setLanguage(strLanguage); } public void actionPerformed (ActionEvent e) { String strAction = e.getActionCommand(); if (e.getSource() instanceof JMenuItem) //If a menu item was clicked { setLanguage(strAction); } else if (e.getActionCommand().equalsIgnoreCase("Currency")) { try { float amount = Float.parseFloat(txtAnswer.getText()); if (amount != 0) { calcObject.setCurrentNum(panCurrencyPad.performConversion(amount)); } } catch (NumberFormatException ex) { } txtAnswer.setText(calcObject.getDisplayString()); } else { calcObject.handleButton(strAction); txtAnswer.setText(calcObject.getDisplayString()); } } }