package org.vaadin.smartgwt.server.extra;
import static org.vaadin.smartgwt.server.builder.LabelBuilder.*;
import org.vaadin.smartgwt.server.Canvas;
import org.vaadin.smartgwt.server.builder.CanvasBuilder;
import org.vaadin.smartgwt.server.layout.VLayout;
public class VSplitLayout extends VLayout {
public static class Builder extends CanvasBuilder<VSplitLayout, Builder> {
Builder(VSplitLayout instance) {
super(instance);
}
public Builder setProportions(double proportion) {
instance().setProportions(proportion);
return me();
}
public Builder setTopMember(Canvas member) {
instance().setTopMember(member);
return me();
}
public Builder setBottomMember(Canvas member) {
instance().setBottomMember(member);
return me();
}
@Override
protected Builder me() {
return this;
}
}
public static Builder buildVSplitLayout() {
return new Builder(new VSplitLayout());
}
private Canvas top = null;
private Canvas bottom = null;
public VSplitLayout() {
//@formatter:off
setMembers(
top = buildLabel("")
.setHeight("50%")
.setWidth("100%")
.build(),
bottom = buildLabel("")
.setHeight("*")
.setWidth("100%")
.build()
);
// @formatter:on
}
public void setProportions(double proportion) {
top.setHeight(((int) (proportion * 100)) + "%");
}
public Canvas getTopMember() {
return top;
}
public void setTopMember(Canvas member) {
String height = top.getHeightAsString();
if (member == null) {
top = buildLabel("")
.setHeight("50%")
.setWidth("100%")
.build();
}
else {
top = member;
top.setHeight(height);
}
setMembers(top,bottom);
}
public Canvas getBottomMember() {
return bottom;
}
public void setBottomMember(Canvas member) {
String height = bottom.getHeightAsString();
if (member == null) {
bottom = buildLabel("")
.setHeight("*")
.setWidth("100%")
.build();
}
else {
bottom = member;
bottom.setHeight(height);
}
setMembers(top,bottom);
}
}