Java tutorial
/* * GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007 */ package hudson.gwtmarketplace.client.pages.layout; import hudson.gwtmarketplace.client.PageLoader; import hudson.gwtmarketplace.client.commands.GetProductCategoriesCommand; import hudson.gwtmarketplace.client.components.Section; import hudson.gwtmarketplace.client.event.CategoriesUpdatedEvent; import hudson.gwtmarketplace.client.event.CategoriesUpdatedEvent.CategoriesUpdateHandler; import hudson.gwtmarketplace.client.model.Category; import java.util.ArrayList; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.gwtpages.client.Pages; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Hyperlink; public class LeftNav extends Composite implements CategoriesUpdateHandler { interface MyUiBinder extends UiBinder<FlowPanel, LeftNav> { } private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); @UiField Section categories; public LeftNav() { initWidget(uiBinder.createAndBindUi(this)); reloadCategories(); Pages.get().getEventBus().addHandler(CategoriesUpdatedEvent.TYPE, this); } private void reloadCategories() { new GetProductCategoriesCommand() { @Override public void onSuccess(ArrayList<Category> result) { reloadCategories(result); } }.execute(); } private void reloadCategories(ArrayList<Category> categories) { LeftNav.this.categories.clear(); for (Category c : categories) { FlowPanel fp = new FlowPanel(); fp.getElement().getStyle().setPaddingTop(4, Unit.PX); String link = Pages.get().createHistoryToken(PageLoader.PAGE_SEARCH, "category:" + c.getAlias()); fp.add(new Hyperlink(c.getName() + " (" + c.getNumProducts() + ")", link)); LeftNav.this.categories.add(fp); } } @Override public void onCategoriesUpdated(ArrayList<Category> categories) { reloadCategories(categories); } }