package open.dolphin.client; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; /** * リソースデータから PopupMenu を生成するクラス。 * * @author Kazushi Minagawa, Digital Globe, Inc. */ public class PopupMenuFactory { private PopupMenuFactory () { } /** * リソースとターゲットオブジェクトから PopupMenu を生成して返す。 * @param itemLine * @param methodLine * @param target * @param canCopy * @param canPaste * @return * @target メソッドを実行するオブジェクト */ public static JPopupMenu create(String[] itemLine, String[] methodLine, Object target, boolean canCopy, boolean canPaste) { JPopupMenu popMenu = new JPopupMenu (); for (int i = 0; i < itemLine.length; i++) { String name = itemLine[i]; String method = methodLine[i]; if (name.equals("-")) { popMenu.addSeparator(); } else { ReflectAction action = new ReflectAction(name, target, method); JMenuItem item = new JMenuItem(action); popMenu.add(item); if (method.equals("copy")) { action.setEnabled(canCopy); } else if (method.equals("paste")) { action.setEnabled(canPaste); } } } return popMenu; } }