package org.inbio.m3s.gwt.client.widgets.verticalmenu; import java.util.ArrayList; import org.inbio.m3s.gwt.client.widgets.verticalmenu.listener.MenuItemSelectedListener; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; /* * A small menu bar */ public class VerticalMenuBar extends Composite implements ClickListener, SourcesMenuItemSelectedEvents { // MenuItems list private ArrayList<MenuItem> items = new ArrayList<MenuItem>(); // array index of the actual menu item selected private int actualItem; private MenuItemSelectedListener itemSelectedListener; private VerticalPanel panel = new VerticalPanel(); // creates new MenuBar with the properties asigned in the CSS public VerticalMenuBar() { actualItem = -1; panel.addStyleName("VerticalMenu"); initWidget(panel); } /** * Add's a new item to the Menu. Explicity indicating that this new item is * going to be the actual active item * * @param displayText */ public void addActiveItem(String displayText) { // int number = addItem(displayText); // TODO: fix this shit!. } /** * Add's a new item to the Menu. If the new item is the first in the menu * its going to be the actual active item. * * @param displayText * @return new added item position */ public int addItem(String displayText) { MenuItem mi = new MenuItem(displayText); mi.addClickListener(this); items.add(mi); if (actualItem == -1) { // mi.setActiveItem(); mi.setStyleName("VerticalMenuItem-navActive"); actualItem = 0; // TODO: send a event notifing that theres a new active widget } panel.add(mi); return items.size() - 1; } /* * public void addItemSelectedkListener(ItemSelectedListener listener) { * itemSelectedListener = listener; } * * public void removeItemSelectedkListener(ItemSelectedListener listener) { * itemSelectedListener = null; } */ public void onClick(Widget sender) { MenuItem mi = (MenuItem) items.get(actualItem); mi.setStyleName("VerticalMenuItem-nav"); // mi.setNonActiveItem(); actualItem = items.indexOf(sender); sender.setStyleName("VerticalMenuItem-navActive"); // ((MenuItem) sender).setActiveItem(); // TODO: send a event notifing that theres a new active widget itemSelectedListener.itemSelected(items.indexOf(sender)); } public void addItemSelectedListener(MenuItemSelectedListener listener) { itemSelectedListener = listener; } public void removeItemSelectedListener(MenuItemSelectedListener listener) { itemSelectedListener = null; } }