/*
* Copyright (c) 2011 PonySDK
* Owners:
* Luciano Broussal <luciano.broussal AT gmail.com>
* Mathieu Barbier <mathieu.barbier AT gmail.com>
* Nicolas Ciaravola <nicolas.ciaravola.pro AT gmail.com>
*
* WebSite:
* http://code.google.com/p/pony-sdk/
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.ponysdk.impl.webapplication.page;
import com.ponysdk.impl.theme.PonySDKTheme;
import com.ponysdk.ui.server.basic.IsPWidget;
import com.ponysdk.ui.server.basic.PDockLayoutPanel;
import com.ponysdk.ui.server.basic.PFlowPanel;
import com.ponysdk.ui.server.basic.PLabel;
import com.ponysdk.ui.server.basic.PSimpleLayoutPanel;
import com.ponysdk.ui.server.basic.PSimplePanel;
import com.ponysdk.ui.server.basic.PWidget;
import com.ponysdk.ui.terminal.PUnit;
public class DefaultPageView implements IsPWidget, PageView {
private int headerHeight = 40;
protected PSimpleLayoutPanel panel;
protected PFlowPanel header;
protected PSimplePanel body;
protected PLabel title;
private String pageTitle;
public DefaultPageView() {
this(null);
}
public DefaultPageView(final String pageTitle) {
this.pageTitle = pageTitle;
}
@Override
public PWidget asWidget() {
if (panel == null) buildUI();
return panel;
}
private void buildUI() {
panel = new PSimpleLayoutPanel();
panel.addStyleName(PonySDKTheme.PAGE);
buildHeader();
buildBody();
buildLayout();
}
protected void buildLayout() {
final PDockLayoutPanel dockLayoutPanel = new PDockLayoutPanel(PUnit.PX);
dockLayoutPanel.addNorth(header, headerHeight);
dockLayoutPanel.add(body);
panel.setWidget(dockLayoutPanel);
}
protected void buildHeader() {
header = new PFlowPanel();
header.addStyleName(PonySDKTheme.PAGE_HEADER);
buildTitle();
}
protected void buildTitle() {
title = new PLabel(pageTitle);
title.setText(pageTitle);
title.addStyleName(PonySDKTheme.PAGE_HEADER_CAPTION);
header.add(title);
}
protected void buildBody() {
body = new PSimpleLayoutPanel();
body.addStyleName(PonySDKTheme.PAGE_BODY);
}
@Override
public void setWidget(final IsPWidget w) {
if (panel == null) buildUI();
body.setWidget(w);
}
@Override
public void setPageTitle(final String caption) {
pageTitle = caption;
if (title != null) title.setText(pageTitle);
}
public void setHeaderHeight(final int headerHeight) {
this.headerHeight = headerHeight;
}
@Override
public PSimplePanel getBody() {
return body;
}
}