/*
* Ext GWT - Ext for GWT
* Copyright(c) 2007-2009, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
package com.extjs.gxt.samples.client.examples.button;
import com.extjs.gxt.samples.resources.client.Resources;
import com.extjs.gxt.ui.client.Style.ButtonArrowAlign;
import com.extjs.gxt.ui.client.Style.ButtonScale;
import com.extjs.gxt.ui.client.Style.IconAlign;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.Html;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.VerticalPanel;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.SplitButton;
import com.extjs.gxt.ui.client.widget.button.ToggleButton;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.google.gwt.user.client.Element;
public class ButtonsExample extends LayoutContainer {
enum Category {
MENU("Menu Buttons"), MENUBOTTOM("Menu Buttons (Arrow on bottom)"), NORMAL("Normal Buttons"), SPLIT("Split Buttons"), SPLITBOTTOM(
"Split Buttons (Arrow on bottom)"), TOGGLE("Toggle Buttons");
private String text;
Category(String text) {
this.text = text;
}
String getText() {
return text;
}
}
enum Type {
BOTTOM("Icon and Text(bottom)"), ICON("Icon Only"), LEFT("Icon and Text (left)"), RIGHT("Icon and Text (right)"), TEXT(
"Text Only"), TOP("Icon and Text (top)");
private String text;
Type(String text) {
this.text = text;
}
String getText() {
return text;
}
}
private VerticalPanel vp;
@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
vp = new VerticalPanel();
vp.setSpacing(10);
for (Category cat : Category.values()) {
vp.add(formatHeader(cat.getText()));
for (Type type : Type.values()) {
vp.add(format(type.getText()));
HorizontalPanel hp = new HorizontalPanel();
hp.setSpacing(5);
Button small = createButton(cat, type);
Button medium = createButton(cat, type);
Button large = createButton(cat, type);
configureButton(small, type, ButtonScale.SMALL);
configureButton(medium, type, ButtonScale.MEDIUM);
configureButton(large, type, ButtonScale.LARGE);
hp.add(small);
hp.add(medium);
hp.add(large);
vp.add(hp);
}
}
add(vp);
}
private void configureButton(Button btn, Type type, ButtonScale scale) {
btn.setScale(scale);
switch (type) {
case LEFT:
btn.setIconAlign(IconAlign.START);
break;
case RIGHT:
btn.setIconAlign(IconAlign.END);
break;
case BOTTOM:
btn.setIconAlign(IconAlign.BOTTOM);
break;
case TOP:
btn.setIconAlign(IconAlign.TOP);
break;
}
switch (type) {
case ICON:
setIcon(btn, scale);
break;
case TEXT:
btn.setText("Add User");
break;
default: {
setIcon(btn, scale);
btn.setText("Add User");
}
}
}
private Button createButton(Category cat, Type type) {
Button btn = null;
switch (cat) {
case NORMAL:
btn = new Button();
break;
case TOGGLE:
btn = new ToggleButton();
break;
case MENU:
btn = new Button();
btn.setMenu(createMenu());
break;
case MENUBOTTOM:
btn = new Button();
btn.setMenu(createMenu());
btn.setArrowAlign(ButtonArrowAlign.BOTTOM);
break;
case SPLIT:
btn = new SplitButton();
btn.setMenu(createMenu());
break;
case SPLITBOTTOM:
btn = new SplitButton();
btn.setMenu(createMenu());
btn.setArrowAlign(ButtonArrowAlign.BOTTOM);
break;
}
return btn;
}
private Menu createMenu() {
Menu menu = new Menu();
menu.add(new MenuItem("Menu Item 1"));
menu.add(new MenuItem("Menu Item 2"));
menu.add(new MenuItem("Menu Item 3"));
return menu;
}
private Html format(String text) {
return new Html("<span class='text' style='margin: 10px'>" + text + "</span>");
}
private Html formatHeader(String text) {
return new Html("<div class='text' style='width: 400px; background-color: #ddd;padding: 4px'><b>" + text
+ "</b></div>");
}
private void setIcon(Button btn, ButtonScale scale) {
switch (scale) {
case SMALL:
btn.setIcon(Resources.ICONS.add16());
break;
case MEDIUM:
btn.setIcon(Resources.ICONS.add24());
break;
case LARGE:
btn.setIcon(Resources.ICONS.add32());
break;
}
}
}