package org.gwtoolbox.sample.widget.client.button;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.*;
import org.gwtoolbox.commons.ui.client.ggrowl.GGrowl;
import org.gwtoolbox.ioc.core.client.annotation.Component;
import org.gwtoolbox.sample.widget.client.SamplePanel;
import org.gwtoolbox.widget.client.WidgetImages;
import org.gwtoolbox.widget.client.button.SimpleButton;
import org.gwtoolbox.widget.client.button.SimpleMenuButton;
import org.gwtoolbox.widget.client.menu.Menu;
/**
* @author Uri Boness
*/
@Component
@ButtonSample
public class SimpleMenuButtonSample extends Composite implements SamplePanel {
public SimpleMenuButtonSample() {
HorizontalPanel buttons = new HorizontalPanel();
SimpleMenuButton button = new SimpleMenuButton("Vertical Menu", true);
Menu menu = button.getMenu();
menu.addItem("Item 1", new Command() {
public void execute() {
showMessage("Item 1 was clicked");
}
});
menu.addItem("Item 2", new Command() {
public void execute() {
showMessage("Item 2 was clicked");
}
});
Menu subMenu = new Menu(true);
subMenu.addItem("Item 3", new Command() {
public void execute() {
showMessage("Item 3 was clicked");
}
});
menu.addItem("Sub Menu", subMenu);
buttons.add(button);
addGap(buttons, "20px");
button = new SimpleMenuButton("Horizontal Menu", false);
menu = button.getMenu();
menu.addItem("Item 1", new Command() {
public void execute() {
showMessage("Item 1 was clicked");
}
});
menu.addItem("Item 2", new Command() {
public void execute() {
showMessage("Item 2 was clicked");
}
});
subMenu = new Menu(true);
subMenu.addItem("Item 3", new Command() {
public void execute() {
showMessage("Item 3 was clicked");
}
});
menu.addItem("Sub Menu", subMenu);
buttons.add(button);
addGap(buttons, "20px");
SimpleButton sb = new SimpleButton(WidgetImages.Instance.get().icon_CubeBlue().createImage());
button = new SimpleMenuButton(sb, true);
menu = button.getMenu();
menu.addItem("Item 4", new Command() {
public void execute() {
showMessage("Item 1 was clicked");
}
});
menu.addItem("Item 5", new Command() {
public void execute() {
showMessage("Item 2 was clicked");
}
});
buttons.add(button);
addGap(buttons, "40px");
sb = new SimpleButton(WidgetImages.Instance.get().icon_CubeBlue().createImage());
final SimpleMenuButton smb = new SimpleMenuButton(sb, true);
buttons.add(smb);
addGap(buttons, "20px");
SimpleButton addItemBtn = new SimpleButton("Add Item", new ClickHandler() {
public void onClick(ClickEvent event) {
smb.getMenu().addItem("Item 4", new Command() {
public void execute() {
showMessage("Item 1 was clicked");
}
});
}
});
buttons.add(addItemBtn);
addGap(buttons, "20px");
SimpleButton removeItemBtn = new SimpleButton("Remove Items", new ClickHandler() {
public void onClick(ClickEvent event) {
smb.getMenu().clearItems();
}
});
buttons.add(removeItemBtn);
VerticalPanel main = new VerticalPanel();
main.add(buttons);
main.setCellWidth(buttons, "100%");
Label gap = new Label();
main.add(gap);
main.setCellHeight(gap, "100%");
initWidget(main);
}
public String getName() {
return "Menu Button";
}
public Widget getContentWidget() {
return this;
}
public void reset() {
// do nothing
}
//============================================== Helper Methods ====================================================
private void addGap(HorizontalPanel panel, String width) {
Label gap = new Label();
panel.add(gap);
panel.setCellWidth(gap, width);
}
private void showMessage(String message) {
GGrowl.showMessage("Message", message);
}
}