/*
* GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007
*/
package hudson.gwtmarketplace.client.components;
import java.util.Iterator;
import com.google.gwt.dom.client.Style.Position;
import com.google.gwt.dom.client.Style.Unit;
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 Section extends Composite implements HasWidgets {
FlowPanel container;
Label title;
FlowPanel body;
public Section() {
this("");
}
public Section(String title) {
container = new FlowPanel();
container.addStyleName("section");
container.add(this.title = new Label(title));
this.title.addStyleName("section-title");
body = new FlowPanel();
body.addStyleName("section-body");
container.add(body);
initWidget(container);
}
public Section(String title, Widget... widgets) {
container = new FlowPanel();
container.addStyleName("section");
container.add(this.title = new Label(title));
this.title.addStyleName("section-title");
body = new FlowPanel();
body.addStyleName("section-body");
container.add(body);
if (null != widgets)
for (Widget w : widgets)
body.add(w);
initWidget(container);
}
public void setTitle(String title) {
this.title.setText(title);
}
public void add(Widget widget) {
body.add(widget);
}
public boolean remove(Widget widget) {
return body.remove(widget);
}
@Override
public Iterator<Widget> iterator() {
return body.iterator();
}
public void remove(int index) {
body.remove(index);
}
public FlowPanel getBody() {
return body;
}
public void clear() {
body.clear();
}
public void setStretch() {
container.getElement().getStyle().setPosition(Position.ABSOLUTE);
title.getElement().getStyle().setPosition(Position.ABSOLUTE);
title.getElement().getStyle().setRight(0, Unit.PX);
title.getElement().getStyle().setLeft(0, Unit.PX);
body.getElement().getStyle().setPosition(Position.ABSOLUTE);
body.getElement().getStyle().setTop(24, Unit.PX);
body.getElement().getStyle().setLeft(0, Unit.PX);
body.getElement().getStyle().setBottom(0, Unit.PX);
body.getElement().getStyle().setRight(0, Unit.PX);
}
}