package scrum.client.workspace; import ilarkesto.gwt.client.FloatingFlowPanel; import ilarkesto.gwt.client.Gwt; import java.util.Iterator; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; public class PagePanel extends Composite implements HasWidgets { private FlowPanel content; private boolean spacered; public PagePanel() { content = new FlowPanel(); initWidget(Gwt.createDiv("PagePanel", Gwt.createDiv("PagePanel-content", content))); } public void addHeader(String title, Widget... rightWidgets) { addHeader(Gwt.createDiv("title", title), rightWidgets); } public void addHeader(Widget left, Widget... rightWidgets) { FloatingFlowPanel panel = new FloatingFlowPanel(); panel.add(left); for (Widget right : rightWidgets) { panel.add(Gwt.createNbsp(), true); panel.add(right, true); } addHeader(panel); } public void addHeader(String text) { addHeader(new Label(text)); } public void addHeader(Widget widget) { add("header", widget); } public void addSection(String text) { addSection(new Label(text)); } public void addSection(Widget widget) { if (!spacered) addSpacer(); add("section", widget); addSpacer(); } public void add(String styleSuffix, Widget widget) { add(Gwt.createDiv("PagePanel-" + styleSuffix, widget)); spacered = false; } public void addSpacer() { add(Gwt.createEmptyDiv("PagePanel-spacer")); spacered = true; } public void add(Widget w) { content.add(w); } public boolean remove(Widget w) { return content.remove(w); } public void clear() { content.clear(); spacered = false; } public Iterator<Widget> iterator() { return content.iterator(); } @Override public String toString() { return Gwt.getSimpleName(getClass()); } public static PagePanel createSimple(String header, Widget... sections) { PagePanel page = new PagePanel(); page.addHeader(header); for (Widget section : sections) { page.addSection(section); } return page; } }