Menu.java

/*
 * $Id: Menu.java,v 1.6 2008/07/16 08:00:37 koga Exp $
 *
 * Copyright (C) 2004 Koga Laboratory. All rights reserved.
 *
 */
package org.mklab.tool;

import java.awt.Component;

import javax.swing.JOptionPane;


/**
 * ユーザにメニューを示し、選択してもらうクラス。
 * 
 * @author koga
 * @version $Revision: 1.6 $, 2004/06/09
 */
public final class Menu {
  /**
   * 新しく生成された<code>Menu</code>オブジェクトを初期化します。
   */
  private Menu() {
    // nothing to do
  }
  
  /**
   * メニューダイアログを表示し、選択された項目の番号を返します。
   * 
   * @param title タイトル
   * @param options 選択肢
   * @param defaultNumber 初期値
   * @return 選択された番号。取消しの場合0。
   */
  public static int menu(final String title, final String[] options, final int defaultNumber) {
    int number = 1;
    if (1 < defaultNumber || options.length < defaultNumber) {
      number = defaultNumber;
    }

    String input = (String)JOptionPane.showInputDialog((Component)null, Messages.getString("Menu.0"), title, JOptionPane.QUESTION_MESSAGE, null, options, options[number - 1]); //$NON-NLS-1$

    JOptionPane.getRootFrame().removeNotify();

    if (input == null) {
      return 0;
    }
    for (int i = 0; i < options.length; i++) {
      if (options[i].equals(input)) {
        return i + 1;
      }
    }

    return 0;
  }

  /**
   * メニューダイアログを表示し、選択された項目の番号を返します。 <br>
   * 
   * 初期値は1です。
   * 
   * @param title タイトル
   * @param options 選択肢
   * @return 選択された番号。取消しの場合0。
   */
  public static int menu(final String title, final String[] options) {
    int n = 1;
    return menu(title, options, n);
  }
}