package com.sencha.gxt.explorer.client.layout; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.google.gwt.cell.client.AbstractCell; import com.google.gwt.cell.client.DateCell; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.i18n.client.NumberFormat; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiFactory; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; 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.data.shared.ListStore; import com.sencha.gxt.examples.resources.client.TestData; import com.sencha.gxt.examples.resources.client.model.Stock; import com.sencha.gxt.examples.resources.client.model.StockProperties; import com.sencha.gxt.explorer.client.model.Example.Detail; import com.sencha.gxt.widget.core.client.Portlet; import com.sencha.gxt.widget.core.client.button.IconButton.IconConfig; import com.sencha.gxt.widget.core.client.button.ToolButton; import com.sencha.gxt.widget.core.client.container.PortalLayoutContainer; import com.sencha.gxt.widget.core.client.grid.ColumnConfig; import com.sencha.gxt.widget.core.client.grid.ColumnModel; import com.sencha.gxt.widget.core.client.grid.Grid; import com.sencha.gxt.widget.core.client.tips.QuickTip; public class PortalLayoutContainerUiBinderExample implements IsWidget, EntryPoint { interface MyUiBinder extends UiBinder
{ } enum ToolConfig { GEAR(ToolButton.GEAR), CLOSE(ToolButton.CLOSE); private IconConfig config; private ToolConfig(IconConfig config) { this.config = config; } } private static final StockProperties props = GWT.create(StockProperties.class); private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); @UiField PortalLayoutContainer portal; @UiField(provided = true) String txt = TestData.DUMMY_TEXT_SHORT; public Widget asWidget() { Widget widget = uiBinder.createAndBindUi(this); portal.setColumnWidth(0, .40); portal.setColumnWidth(1, .30); portal.setColumnWidth(2, .30); return widget; } @UiFactory() public Grid
createGrid() { final NumberFormat number = NumberFormat.getFormat("0.00"); ColumnConfig
nameCol = new ColumnConfig
(props.name(), 200, "Company"); ColumnConfig
symbolCol = new ColumnConfig
(props.symbol(), 100, "Symbol"); ColumnConfig
lastCol = new ColumnConfig
(props.last(), 75, "Last"); ColumnConfig
changeCol = new ColumnConfig
(props.change(), 100, "Change"); changeCol.setCell(new AbstractCell
() { @Override public void render(Context context, Double value, SafeHtmlBuilder sb) { String style = "style='color: " + (value < 0 ? "red" : "green") + "'"; String v = number.format(value); sb.appendHtmlConstant("
" + v + "
"); } }); ColumnConfig
lastTransCol = new ColumnConfig
(props.lastTrans(), 100, "Last Updated"); lastTransCol.setCell(new DateCell(DateTimeFormat.getFormat("MM/dd/yyyy"))); List
> l = new ArrayList
>(); l.add(nameCol); l.add(symbolCol); l.add(lastCol); l.add(changeCol); l.add(lastTransCol); ColumnModel
cm = new ColumnModel
(l); ListStore
store = new ListStore
(props.key()); store.addAll(TestData.getStocks()); final Grid
grid = new Grid
(store, cm); grid.getView().setAutoExpandColumn(nameCol); grid.setBorders(false); grid.setStripeRows(true); grid.setColumnLines(true); // needed to enable quicktips (qtitle for the heading and qtip for the // content) that are setup in the change GridCellRenderer new QuickTip(grid); return grid; } public void onModuleLoad() { RootPanel.get().add(asWidget()); } @UiFactory protected ToolButton createToolButton(ToolConfig icon, Portlet portlet) { ToolButton toolButton = new ToolButton(icon.config); toolButton.setData("portlet", portlet); return toolButton; } @UiHandler({"portlet1Close", "portlet2Close", "portlet3Close", "portlet4Close"}) protected void onClosePortlet(ClickEvent event) { ToolButton tool = (ToolButton) event.getSource(); Portlet portlet = tool.getData("portlet"); portlet.removeFromParent(); } }