package ilarkesto.gwt.client;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
public class FullScreenDockWidget extends AWidget {
private DockPanel dock;
private Widget north;
private SimplePanel northWrapper;
private int northHeight;
private Widget west;
private SimplePanel westWrapper;
private int westWidth;
private Widget center;
private SimplePanel centerWrapper;
public FullScreenDockWidget(Widget north, int northHeight, Widget west, int westWidth, Widget center) {
this.north = north;
this.northHeight = northHeight;
this.west = west;
this.westWidth = westWidth;
this.center = center;
}
@Override
protected Widget onInitialization() {
Window.enableScrolling(false);
setHeight100();
dock = new DockPanel();
dock.setStyleName("FullScreenDockWidget");
// dock.setBorderWidth(1);
dock.setSpacing(0);
dock.setWidth("100%");
dock.setHeight("100%");
northWrapper = new SimplePanel();
northWrapper.setWidget(north);
northWrapper.setStyleName("FullScreenDockWidget-north");
northWrapper.setWidth("100%");
northWrapper.setHeight(northHeight + "px");
dock.add(northWrapper, DockPanel.NORTH);
dock.setCellWidth(northWrapper, "100%");
dock.setCellHeight(northWrapper, northHeight + "px");
westWrapper = new SimplePanel();
westWrapper.setWidget(west);
westWrapper.setStyleName("FullScreenDockWidget-west");
westWrapper.setWidth(westWidth + "px");
westWrapper.setHeight("100%");
dock.add(westWrapper, DockPanel.WEST);
dock.setCellWidth(westWrapper, westWidth + "px");
dock.setCellHeight(westWrapper, "100%");
centerWrapper = new SimplePanel();
centerWrapper.setWidget(center);
centerWrapper.setStyleName("FullScreenDockWidget-center");
// DOM.setStyleAttribute(getElement(), "overflowY", "scroll");
centerWrapper.setWidth("100%");
centerWrapper.setHeight("100%");
dock.add(centerWrapper, DockPanel.CENTER);
dock.setCellWidth(centerWrapper, "100%");
dock.setCellHeight(centerWrapper, "100%");
// Window.addResizeHandler(new DockResizeHandler());
return dock;
}
@Override
protected void onUpdate() {
super.onUpdate();
updateCenterSize();
}
private void updateCenterSize() {
int width = Window.getClientWidth() - westWidth - 20;
int height = Window.getClientHeight() - northHeight - 20;
centerWrapper.setSize(width + "px", height + "px");
dock.setCellWidth(centerWrapper, width + "px");
dock.setCellHeight(centerWrapper, height + "px");
}
private class DockResizeHandler implements ResizeHandler {
public void onResize(ResizeEvent event) {
if (dock == null) return;
updateCenterSize();
}
}
}