/** * Sencha GXT 3.0.0b - Sencha for GWT * Copyright(c) 2007-2012, Sencha, Inc. * licensing@sencha.com * * http://www.sencha.com/products/gxt/license/ */ package com.sencha.gxt.explorer.client.toolbar; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.NodeList; import com.google.gwt.dom.client.Style.Overflow; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; import com.sencha.gxt.cell.core.client.ButtonCell.ButtonArrowAlign; import com.sencha.gxt.cell.core.client.ButtonCell.ButtonScale; import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode; import com.sencha.gxt.core.client.dom.XElement; import com.sencha.gxt.examples.resources.client.TestData; import com.sencha.gxt.examples.resources.client.images.ExampleImages; import com.sencha.gxt.explorer.client.model.Example.Detail; import com.sencha.gxt.widget.core.client.ContentPanel; import com.sencha.gxt.widget.core.client.button.ButtonGroup; import com.sencha.gxt.widget.core.client.button.TextButton; import com.sencha.gxt.widget.core.client.button.ToggleButton; import com.sencha.gxt.widget.core.client.container.FlowLayoutContainer; import com.sencha.gxt.widget.core.client.container.MarginData; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; import com.sencha.gxt.widget.core.client.menu.Menu; import com.sencha.gxt.widget.core.client.menu.MenuItem; import com.sencha.gxt.widget.core.client.toolbar.SeparatorToolItem; import com.sencha.gxt.widget.core.client.toolbar.ToolBar; @Detail(name = "Advanced ToolBar", icon = "advancedtoolbar", category = "ToolBar & Menu", fit = true) public class AdvancedToolBarExample implements IsWidget, EntryPoint { class SamplePanel extends ContentPanel { private VerticalLayoutContainer con = new VerticalLayoutContainer(); private ToolBar toolBar = new ToolBar(); public SamplePanel() { setPixelSize(500, 250); toolBar.setSpacing(2); con.add(toolBar, new VerticalLayoutData(1, -1)); HTML text = new HTML(TestData.DUMMY_TEXT_LONG); text.getElement().getStyle().setOverflowY(Overflow.AUTO); con.add(text, new VerticalLayoutData(1, 1)); add(con); } public ToolBar getToolBar() { return toolBar; } } public Widget asWidget() { FlowLayoutContainer con = new FlowLayoutContainer(); con.getScrollSupport().setScrollMode(ScrollMode.ALWAYS); con.add(createStandard(), new MarginData(10)); con.add(createMulti(), new MarginData(10)); con.add(createMulti2(), new MarginData(10)); con.add(createMixed(), new MarginData(10)); return con; }; private ContentPanel createStandard() { SamplePanel panel = new SamplePanel(); panel.setHeadingText("Standard"); TextButton btn = new TextButton("Cool", ExampleImages.INSTANCE.add16()); Menu menu = new Menu(); menu.add(new MenuItem("Ribbons are cool")); btn.setMenu(menu); panel.getToolBar().add(btn); panel.getToolBar().add(new SeparatorToolItem()); btn = new TextButton("Cut", ExampleImages.INSTANCE.add16()); menu = new Menu(); menu.add(new MenuItem("Copy me")); panel.getToolBar().add(btn); btn = new TextButton("Copy", ExampleImages.INSTANCE.add16()); panel.getToolBar().add(btn); btn = new TextButton("Paste", ExampleImages.INSTANCE.add16()); panel.getToolBar().add(btn); menu = new Menu(); menu.add(new MenuItem("Ribbons are cool")); btn.setMenu(menu); panel.getToolBar().add(new SeparatorToolItem()); ToggleButton toggleBtn = new ToggleButton("Format"); toggleBtn.setValue(true); panel.getToolBar().add(toggleBtn); return panel; } private ContentPanel createMulti() { SamplePanel panel = new SamplePanel(); panel.setHeadingText("Multi Columns"); ButtonGroup group = new ButtonGroup(); group.setHeadingText("Clipboard"); panel.getToolBar().add(group); FlexTable table = new FlexTable(); group.add(table); TextButton btn = new TextButton("Cool", ExampleImages.INSTANCE.add16()); table.setWidget(0, 0, btn); btn = new TextButton("Cut", ExampleImages.INSTANCE.add16()); Menu menu = new Menu(); menu.add(new MenuItem("Copy me")); btn.setMenu(menu); table.setWidget(0, 1, btn); btn = new TextButton("Copy", ExampleImages.INSTANCE.add16()); table.setWidget(1, 0, btn); // // btn = new TextButton("Paste", ExampleImages.INSTANCE.add16()); table.setWidget(1, 1, btn); group = new ButtonGroup(); group.setHeadingText("Other Bogus Actions"); panel.getToolBar().add(group); table = new FlexTable(); group.add(table); btn = new TextButton("Cool", ExampleImages.INSTANCE.add16()); table.setWidget(0, 0, btn); btn = new TextButton("Cut", ExampleImages.INSTANCE.add16()); menu = new Menu(); menu.add(new MenuItem("Copy me")); btn.setMenu(menu); table.setWidget(0, 1, btn); btn = new TextButton("Copy", ExampleImages.INSTANCE.add16()); table.setWidget(1, 0, btn); // // btn = new TextButton("Paste", ExampleImages.INSTANCE.add16()); table.setWidget(1, 1, btn); return panel; } private ContentPanel createMulti2() { SamplePanel panel = new SamplePanel(); panel.setHeadingText("Multi Columns No Title"); ButtonGroup group = new ButtonGroup(); group.setHeadingText("Clipboard"); group.setHeaderVisible(false); FlexTable table = new FlexTable(); group.add(table); TextButton btn = new TextButton("Cool", ExampleImages.INSTANCE.add16()); table.setWidget(0, 0, btn); btn = new TextButton("Cut", ExampleImages.INSTANCE.add16()); Menu menu = new Menu(); menu.add(new MenuItem("Copy me")); btn.setMenu(menu); table.setWidget(0, 1, btn); btn = new TextButton("Copy", ExampleImages.INSTANCE.add16()); table.setWidget(1, 0, btn); btn = new TextButton("Paste", ExampleImages.INSTANCE.add16()); table.setWidget(1, 1, btn); group = new ButtonGroup(); group.setHeadingText("Other Bogus Actions"); group.setHeaderVisible(false); panel.getToolBar().add(group); table = new FlexTable(); group.add(table); btn = new TextButton("Cool", ExampleImages.INSTANCE.add16()); table.setWidget(0, 0, btn); btn = new TextButton("Cut", ExampleImages.INSTANCE.add16()); menu = new Menu(); menu.add(new MenuItem("Copy me")); btn.setMenu(menu); table.setWidget(0, 1, btn); btn = new TextButton("Copy", ExampleImages.INSTANCE.add16()); table.setWidget(1, 0, btn); btn = new TextButton("Paste", ExampleImages.INSTANCE.add16()); table.setWidget(1, 1, btn); panel.getToolBar().add(group); return panel; } private ContentPanel createMixed() { SamplePanel panel = new SamplePanel(); panel.setHeadingText("Mix and match icon sizes"); for (int i = 0; i < 2; i++) { ButtonGroup group = new ButtonGroup(); group.setHeadingText("Clipboard"); panel.getToolBar().add(group); FlexTable table = new FlexTable(); group.add(table); TextButton btn = new TextButton("Paste", ExampleImages.INSTANCE.add32()); btn.setScale(ButtonScale.LARGE); btn.setIconAlign(IconAlign.TOP); btn.setArrowAlign(ButtonArrowAlign.BOTTOM); table.setWidget(0, 0, btn); table.getFlexCellFormatter().setRowSpan(0, 0, 3); btn = new TextButton("Format", ExampleImages.INSTANCE.add32()); btn.setScale(ButtonScale.LARGE); btn.setIconAlign(IconAlign.TOP); btn.setArrowAlign(ButtonArrowAlign.BOTTOM); table.setWidget(0, 1, btn); table.getFlexCellFormatter().setRowSpan(0, 1, 3); btn = new TextButton("Copy", ExampleImages.INSTANCE.add16()); Menu menu = new Menu(); menu.add(new MenuItem("Copy me")); btn.setMenu(menu); table.setWidget(0, 2, btn); btn = new TextButton("Cut", ExampleImages.INSTANCE.add16()); table.setWidget(1, 2, btn); btn = new TextButton("Paste", ExampleImages.INSTANCE.add16()); table.setWidget(2, 2, btn); cleanCells(table.getElement()); } return panel; } private void cleanCells(Element elem) { NodeList<Element> tds = elem.<XElement> cast().select("td"); for (int i = 0; i < tds.getLength(); i++) { Element td = tds.getItem(i); if (!td.hasChildNodes() && td.getClassName().equals("")) { td.removeFromParent(); } } } public void onModuleLoad() { RootPanel.get().add(asWidget()); } }