/** Return a menu for DesktopWindow and add a special listener. */ public static JMenu getCurrencyMenu(ActionListener listener) { JRadioButtonMenuItem menuItem; String defaultCurrency = Money.getCurrencyFor(Money.getDefaultCurrency()); JMenu menu = new JMenu("Währung"); ButtonGroup group = new ButtonGroup(); JMenu europeanMenu = new JMenu("Europa"); String europeanCurrencies[] = Money.getEuropeanCurrencyList(); for (int i = 0; i < europeanCurrencies.length; i++) { menuItem = new RadioCurrencyMenuItem(europeanCurrencies[i]); menuItem.addActionListener(listener); europeanMenu.add(menuItem); group.add(menuItem); if (europeanCurrencies[i].startsWith(defaultCurrency)) { menuItem.setSelected(true); } if (i == 0) { europeanMenu.addSeparator(); } } menu.add(europeanMenu); return menu; }
/** Sets the Money value. */ public void setValue(Money money) { if (money == null) { setValue(new Money()); clearMoney(); performFlags(); return; } // Check displayed currency int newCurrency = money.getCurrency(); if (newCurrency != moneyField.getValue().getCurrency()) { currencyLabel.setText(Money.getCurrencyFor(newCurrency)); } // Set value moneyField.setValue(money); performFlags(); }
/** Initialization called by constructors. */ protected void initialize(int size) { // Check desired size if (size <= 0) { size = 7; } // Construct fields moneyField = new LimitedNumberField(size); moneyField.setHorizontalAlignment(SwingConstants.RIGHT); currencyLabel = new JLabel(); // Popup menu JPopupMenu popupMenu = new JPopupMenu(); copyItem = new JMenuItem("Copy"); copyItem.addActionListener(this); popupMenu.add(copyItem); pasteItem = new JMenuItem("Paste"); pasteItem.addActionListener(this); popupMenu.add(pasteItem); popupMenu.add(new JPopupMenu.Separator()); // Default currencies JMenuItem menuItem; defaultMenuItems = new JMenuItem[defaultCurrencies.length]; for (int i = 0; i < defaultCurrencies.length; i++) { menuItem = new CurrencyMenuItem(defaultCurrencies[i]); menuItem.addActionListener(this); popupMenu.add(menuItem); defaultMenuItems[i] = menuItem; } popupMenu.add(new JPopupMenu.Separator()); // european currencies String europeanCurrencies[] = Money.getEuropeanCurrencyList(); europeanCurrenciesMenu = new JMenu("Europe"); for (int i = 0; i < europeanCurrencies.length; i++) { menuItem = new CurrencyMenuItem(europeanCurrencies[i]); menuItem.addActionListener(this); europeanCurrenciesMenu.add(menuItem); if (i == 0) { europeanCurrenciesMenu.add(new JPopupMenu.Separator()); } } popupMenu.add(europeanCurrenciesMenu); // Calculator popupMenu.add(new JPopupMenu.Separator()); calculatorItem = new JMenuItem("Calculator"); calculatorItem.addActionListener(this); popupMenu.add(calculatorItem); // Add the popup moneyPopup = PopupAdapter.create(this.moneyField, popupMenu); KeyStroke SHIFT_F10 = KeyStroke.getKeyStroke(KeyEvent.VK_F10, InputEvent.SHIFT_MASK); moneyField.registerKeyboardAction(this, "popup", SHIFT_F10, JComponent.WHEN_FOCUSED); // Now init documents textDocument = new JTextField().getDocument(); moneyDocument = (LimitedMoneyDocument) moneyField.getDocument(); moneyDocument.addDocumentListener(this); // Layout elements setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); flagLabel = new JLabel(GUI.getMandatoryIcon()); add("West", flagLabel); add("Center", Box.createHorizontalStrut(3)); add(moneyField); add(Box.createHorizontalStrut(GUI.HorizontalLabelDistance)); add(currencyLabel); // Check mandatory and readonly state performFlags(); // Set cursor setCursor(GUI.ENTRY_CURSOR); // Finally set the initial value Money money = new Money(); moneyField.setValue(money, false); currencyLabel.setText(Money.getCurrencyFor(money.getCurrency())); guiInitialized = true; }