package org.gwtoolbox.sample.widget.client.panel;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.*;
import org.gwtoolbox.ioc.core.client.annotation.Component;
import org.gwtoolbox.ioc.core.client.annotation.Order;
import org.gwtoolbox.sample.widget.client.SamplePanel;
import org.gwtoolbox.widget.client.button.SimpleButton;
import org.gwtoolbox.widget.client.menu.Menu;
import org.gwtoolbox.widget.client.menu.MenuBuilder;
import org.gwtoolbox.widget.client.menu.item.CheckMenuItem;
import org.gwtoolbox.widget.client.menu.item.MenuItemSelectionListener;
import org.gwtoolbox.widget.client.menu.item.SelectionMenuItem;
import org.gwtoolbox.widget.client.panel.LayoutComposite;
import static org.gwtoolbox.widget.client.panel.LayoutUtils.addGap;
import org.gwtoolbox.widget.client.panel.split.horizontal.SimpleHorizontalSplitPanel;
import org.gwtoolbox.widget.client.panel.tab.SimpleTabPanel;
import org.gwtoolbox.widget.client.panel.layout.tab.TabSpec;
/**
* @author Uri Boness
*/
@Component
@Order(1)
@PanelSample
public class SimpleTabPanelSamplePane extends LayoutComposite implements SamplePanel {
public SimpleTabPanelSamplePane() {
final SimpleTabPanel panel = new SimpleTabPanel(true);
panel.addTab(new TabSpec("tab1", "Tab 1", null, new Label("Tab 1 content"), true));
ScrollPanel content2 = new ScrollPanel(createContent(createVeryLongText(), "#CCFFCC"));
content2.setSize("100%", "100%");
panel.addTab("Tab 2", content2);
SimpleHorizontalSplitPanel hsp = new SimpleHorizontalSplitPanel();
hsp.setLeftWidget(new Label("Left"));
hsp.setRightWidget(new Label("Right"));
hsp.setSplitPosition("25%");
hsp.setSize("100%", "100%");
panel.addTab("Tab 3", hsp);
TabSpec tab4 = new TabSpec("tab4", "Tab 4", null, new Label("Confent for Tab 4"), false).setMenuBuilder(new MenuBuilder() {
public void build(Menu menu) {
CheckMenuItem item = new CheckMenuItem("Disable", !panel.isTabEnabled("tab4"));
item.addListener(new MenuItemSelectionListener() {
public void selectionChanged(SelectionMenuItem item) {
panel.setTabEnabled("tab4", !item.isSelected());
}
});
menu.addItem(item);
}
});
panel.addTab(tab4);
// panel.addTab("Tab 4", new Label("Content 4"));
panel.addTab("Tab 5", new Label("Content 5"));
panel.addTab("Tab 6", new Label("Content 6"));
panel.setSelectedTab("Tab 3");
panel.setWidth("100%");
// panel.setHeight("500px");
panel.setHeight("100%");
DOM.setStyleAttribute(panel.getElement(), "borderBottom", "1px solid blue");
HorizontalPanel hp = new HorizontalPanel();
SimpleButton button = new SimpleButton("Remove Tab 1", new ClickHandler() {
public void onClick(ClickEvent event) {
panel.removeTab("Tab 1");
}
});
hp.add(button);
addGap(hp, "10px");
button = new SimpleButton("Clear Tabs", new ClickHandler() {
public void onClick(ClickEvent event) {
panel.clear();
}
});
hp.add(button);
addGap(hp, "10px");
button = new SimpleButton("Add Tab...", new ClickHandler() {
public void onClick(ClickEvent event) {
String tabName = Window.prompt("Enter the tab name", "");
if (tabName != null) {
TabSpec tabSpec = new TabSpec(tabName, tabName, null, new Label("This is the content of '" + tabName + "'"), true);
panel.addTab(tabSpec);
}
}
});
hp.add(button);
addGap(hp, "10px");
button = new SimpleButton("Add Tab (Auto)", new ClickHandler() {
public void onClick(ClickEvent event) {
String tabName = "Tab " + (panel.getTabCount() + 1);
GWT.log(tabName, null);
panel.addTab(tabName, new Label("This is the content of '" + tabName + "'"));
if (panel.getTabCount() % 2 == 0) {
panel.setTabEnabled(tabName, false);
}
}
});
hp.add(button);
addGap(hp, "10px");
button = new SimpleButton("Enable Tab 4", new ClickHandler() {
public void onClick(ClickEvent event) {
panel.setTabEnabled("tab4", true);
}
});
hp.add(button);
DOM.setStyleAttribute(panel.getElement(), "border", "1px solid blue");
// FixedVerticalPanel main = new FixedVerticalPanel();
// main.addGap("20px");
// main.addWidget(panel, new VerticalLayoutData("350px").setOverflow("hidden"));
// main.addGap("5px");
// main.addWidget(hp, new VerticalLayoutData("25px"));
// main.addGap("*");
VerticalPanel main = new VerticalPanel();
addGap(main, "20px");
main.add(panel);
main.setCellHeight(panel, "100%");
addGap(main, "5px");
main.add(hp);
main.setCellHeight(hp, "25px");
// addGap(main, "100%");
initWidget(main);
}
public String getName() {
return "SimpleTabPanel";
}
public Widget getContentWidget() {
return this;
}
public void reset() {
}
//================================================ Helper Methods ==================================================
private static Widget createContent(String text, String color) {
VerticalPanel main = new VerticalPanel();
DOM.setStyleAttribute(main.getElement(), "backgroundColor", color);
HTML html = new HTML(text);
html.setHorizontalAlignment(HTML.ALIGN_CENTER);
main.add(html);
main.setSize("100%", "100%");
return main;
}
private static String createVeryLongText() {
return "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc laoreet pharetra nunc. Nulla magna lorem, " +
"vehicula lobortis, dignissim eu, adipiscing in, metus. Nullam velit massa, fringilla in, congue quis, " +
"fringilla eu, libero. Cras sapien. Cras ut lectus. Lorem ipsum dolor sit amet, consectetur adipiscing " +
"elit. Phasellus pharetra lectus non quam. Fusce turpis ante, iaculis sit amet, rutrum ut, eleifend eu, " +
"justo. Morbi sollicitudin lacus vel magna. Cras varius volutpat diam. Quisque a lorem. Fusce in risus " +
"vel dui semper tempus. Proin iaculis nulla sit amet ligula suscipit egestas. Duis eleifend neque id " +
"nunc. Etiam et orci.\n" + "\n" + "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices " +
"posuere cubilia Curae; Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos " +
"himenaeos. Integer sagittis. Integer porttitor odio non metus. Quisque sagittis feugiat magna. Integer " +
"venenatis nulla sollicitudin nunc tristique consectetur. Duis tincidunt odio. Nulla id arcu. Quisque " +
"tortor. Nulla purus arcu, bibendum nec, placerat sit amet, egestas a, tellus. Curabitur tempus justo " +
"non velit. Proin et metus. Sed risus mauris, aliquet quis, imperdiet sit amet, dictum vel, massa. " +
"Praesent quis augue. Fusce dictum augue non mi. Donec eu tortor. Praesent tempor posuere felis. " +
"Phasellus convallis mattis tellus.\n" + "\n" + "Donec ultricies, mauris quis egestas interdum, " +
"turpis quam tincidunt enim, sit amet varius dui nulla in sem. Mauris scelerisque sodales nisi. " +
"Suspendisse neque justo, egestas interdum, laoreet quis, tristique vel, metus. Vestibulum augue. " +
"Aliquam eget odio. Donec consectetur. Ut neque. Suspendisse orci eros, aliquam id, pharetra vel, " +
"vestibulum a, nulla. In varius. Praesent pretium augue a sem. Cras tincidunt. Nulla sollicitudin. " +
"Suspendisse ullamcorper, dui nec lobortis gravida, odio elit convallis leo, eu porttitor arcu erat " +
"eu lacus. Pellentesque nec mauris at massa pharetra varius. Integer bibendum. Fusce pulvinar massa " +
"id enim mattis lacinia. Donec libero urna, bibendum a, ullamcorper eu, commodo id, risus. Maecenas " +
"nec ipsum. Etiam egestas. Donec aliquet.\n" + "\n" + "Cras semper euismod lacus. Fusce sit amet " +
"neque et turpis pulvinar vestibulum. Nullam magna. Vestibulum erat. Donec ipsum libero, dapibus ac, " +
"gravida eget, dignissim pharetra, libero. Aliquam lobortis ullamcorper nunc. In purus lectus, " +
"tincidunt quis, euismod sed, ornare in, nisl. Aenean faucibus, massa volutpat sagittis gravida, " +
"lectus quam aliquet dolor, eget elementum metus eros pharetra neque. Praesent condimentum velit " +
"luctus erat tristique feugiat. Aliquam volutpat, nulla at volutpat tristique, velit lectus molestie " +
"pede, vitae placerat est enim eget libero. Nullam varius, lorem a sagittis eleifend, dui diam " +
"scelerisque ante, in adipiscing eros ante quis ligula. Vivamus faucibus convallis ipsum. Vivamus " +
"sollicitudin lacus vel diam. Morbi volutpat ultricies velit. Aenean tellus. Morbi semper erat sit amet " +
"sem. Nullam a ipsum in leo hendrerit rutrum.";
}
}