コード例 #1
0
  /** 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;
  }
コード例 #2
0
  /** 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();
  }
コード例 #3
0
  /** 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;
  }