diff options
Diffstat (limited to 'base/console/src/com/netscape/admin/certsrv/CMSBaseMenuInfo.java')
-rw-r--r-- | base/console/src/com/netscape/admin/certsrv/CMSBaseMenuInfo.java | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/base/console/src/com/netscape/admin/certsrv/CMSBaseMenuInfo.java b/base/console/src/com/netscape/admin/certsrv/CMSBaseMenuInfo.java new file mode 100644 index 000000000..cb1909f22 --- /dev/null +++ b/base/console/src/com/netscape/admin/certsrv/CMSBaseMenuInfo.java @@ -0,0 +1,178 @@ +// --- BEGIN COPYRIGHT BLOCK --- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +// +// (C) 2007 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- +package com.netscape.admin.certsrv; + +import javax.swing.*; +import javax.swing.tree.*; +import javax.swing.event.*; +import com.netscape.management.client.*; +import com.netscape.management.client.util.*; +import java.util.*; + +/** + * This class represents the menu item selection and associated + * call back function. + * + * @author Jack Pan-Chen + * @version $Revision$, $Date$ + * @see com.netscape.admin.certsrv + */ +public class CMSBaseMenuInfo implements IMenuInfo { + + /*========================================================== + * variables + *==========================================================*/ + //framework level menu catagory ids + public static String MENU_FILE = Framework.MENU_FILE; + public static String MENU_VIEW = Framework.MENU_VIEW; + public static String MENU_OBJECT = ResourcePage.MENU_OBJECT; + + //menu bar menu items + public static String MENU_KEYCERT = CMSAdminResources.MENU_KEYCERT; + public static String MENU_REFRESH = CMSAdminResources.MENU_REFRESH; + public static String MENU_KEYCERT_MANAGEMENT = CMSAdminResources.MENU_KEYCERT_MANAGEMENT; + public static String MENU_PKCS11 = CMSAdminResources.MENU_PKCS11; + public static String MENU_NEWCERT = CMSAdminResources.MENU_NEWCERT; + + //context menu items + + + protected Vector mMenuCategoryIDs; //stores the ids + protected Vector mCategoryIDMenuItems; //stores the menu items associated + //with the specified id + protected Vector mMenuItemsIDs; //stores the item ids + protected Vector mActionListeners; //stores the action listeners + + protected ResourceBundle mResource; + + /*========================================================== + * constructors + *==========================================================*/ + public CMSBaseMenuInfo() { + mResource = ResourceBundle.getBundle(CMSAdminResources.class.getName()); + mMenuCategoryIDs = new Vector(); + mCategoryIDMenuItems = new Vector(); + mMenuItemsIDs = new Vector(); + mActionListeners = new Vector(); + } + + /*========================================================== + * public methods + *==========================================================*/ + + /** + * Register menu items and associated action obejct + * @param id menu catagory ID + * @param item menu item + * @param action IMenuAction object + */ + public void registerMenuItem(String id, String keyword, IMenuAction action) { + IMenuItem item = getMenuItemText(keyword); + + //register menu item and action pair + int i = mMenuItemsIDs.indexOf(item.getID()); + if (i == -1) { + mMenuItemsIDs.addElement(item.getID()); + mActionListeners.addElement(action); + } else { + mActionListeners.setElementAt(action,i); + } + + //register catgory id and associated menu items + i = mMenuCategoryIDs.indexOf(id); + if (i == -1) { + mMenuCategoryIDs.addElement(id); + mCategoryIDMenuItems.addElement(new Vector()); + } + i = mMenuCategoryIDs.indexOf(id); + Vector items = (Vector) mCategoryIDMenuItems.elementAt(i); + items.addElement(item); //XXX check exist already ?? + } + + /** + * Add menu item separator + */ + public void addMenuItemSeparator(String id) { + int i = mMenuCategoryIDs.indexOf(id); + if (i < 0 ) { + mMenuCategoryIDs.addElement(id); + Vector items = new Vector(); + items.addElement(new MenuItemSeparator()); + mCategoryIDMenuItems.addElement(items); + } else { + Vector items = (Vector) mCategoryIDMenuItems.elementAt(i); + items.addElement(new MenuItemSeparator()); + } + } + + /** + * Returns supported menu categories. + */ + public String[] getMenuCategoryIDs() { + if (mMenuCategoryIDs.size() == 0) { + return null; + } + String[] id = new String[mMenuCategoryIDs.size()]; + mMenuCategoryIDs.copyInto(id); + //for(int i=0; i< id.length; i++) + // System.out.println("ID: "+id[i]); + return id; + } + + /** + * Returns menu items for a particular menu category. + */ + public IMenuItem[] getMenuItems(String category) { + int i = mMenuCategoryIDs.indexOf(category); + if (i != -1) { + Vector v = (Vector) mCategoryIDMenuItems.elementAt(i); + IMenuItem[] items = new IMenuItem[v.size()]; + v.copyInto(items); + //for(int j=0; j< items.length; j++) + // System.out.println("ITEM: "+items[j].getID()); + return items; + } + return null; + } + + /** + * Notification that a menu item has been selected. + */ + public void actionMenuSelected(IPage viewInstance, IMenuItem item) { + int i = mMenuItemsIDs.indexOf(item.getID()); + if (i == -1) + return; + IMenuAction act = (IMenuAction) mActionListeners.elementAt(i); + act.perform(viewInstance); + } + + /*========================================================== + * priotected methods + *==========================================================*/ + + protected MenuItemText getMenuItemText(String keyword) { + String name = mResource.getString("GENERAL_MENU_"+keyword+"_LABEL"); + if (name == null) + name = "Missing Label"; + String desc = mResource.getString("GENERAL_MENU_"+keyword+"_DESC"); + if (desc == null) + desc = " "; + return new MenuItemText( keyword, name, desc); + } + +} |