001 /**
002 * Copyright 2010 The Kuali Foundation Licensed under the
003 * Educational Community License, Version 2.0 (the "License"); you may
004 * not use this file except in compliance with the License. You may
005 * obtain a copy of the License at
006 *
007 * http://www.osedu.org/licenses/ECL-2.0
008 *
009 * Unless required by applicable law or agreed to in writing,
010 * software distributed under the License is distributed on an "AS IS"
011 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
012 * or implied. See the License for the specific language governing
013 * permissions and limitations under the License.
014 */
015
016 package org.kuali.student.common.ui.client.widgets.menus;
017
018 import java.util.List;
019
020 import com.google.gwt.user.client.ui.Composite;
021
022
023 /**
024 * KSMenu is the abstract class which is used to describe widgets which are menu based in ks-commons.
025 *
026 * @author Kuali Student Team
027 *
028 */
029 public abstract class KSMenu extends Composite {
030 public static enum MenuImageLocation{LEFT, RIGHT};
031
032 protected List<KSMenuItemData> items;
033
034 /**
035 * Sets the list of KSMenuItemData to be used in this menu and populates it.
036 *
037 * @param items list of KSMenuItemData to be used and populated into the menu
038 */
039 public void setItems(List<KSMenuItemData> items) {
040 this.items = items;
041 populateMenu();
042 }
043
044 /**
045 * Gets the list of KSMenuItemData used in this menu.
046 *
047 * @return the list of KSMenuItemData used to in this Menu.
048 */
049 public List<KSMenuItemData> getItems() {
050 return this.items;
051 }
052
053 protected abstract void populateMenu();
054
055 public abstract boolean selectMenuItem(String[] hierarchy);
056
057 /**
058 * Deselects the current selected menu item
059 *
060 * @return
061 */
062 public abstract void clearSelected();
063 }