/*
* Copyright 2011 JBoss Inc
*
* 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 org.jbpm.formbuilder.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Document;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
/**
* Main view. Uses UIBinder to define the correct position of components
*/
public class FormBuilderView extends AbsolutePanel {
private static FBUiBinder uiBinder = GWT.create(FBUiBinder.class);
interface FBUiBinder extends UiBinder<Widget, FormBuilderView> {
}
@UiField(provided=true) ScrollPanel treeView;
@UiField(provided=true) SimplePanel optionsView;
@UiField(provided=true) ScrollPanel menuView;
@UiField(provided=true) ScrollPanel editionView;
@UiField(provided=true) ScrollPanel layoutView;
@UiField(provided=true) Panel toolBarView;
@UiField(provided=true) Panel ioAssociationView;
@UiField(provided=true) Panel notificationsView;
protected final void checkBinding() {
if (timeToBind()) {
Widget widget = uiBinder.createAndBindUi(this);
setSize("100%", "100%");
widget.setSize("100%", "100%");
add(widget);
int fullHeight = Window.getClientHeight();
String height = "" + (fullHeight - 80) + "px";
String smallerHeight = "" + (fullHeight - 105) + "px";
treeView.setHeight("100%");
menuView.setHeight("100%");
editionView.setHeight("100%");
ioAssociationView.setHeight("100%");
layoutView.setHeight(smallerHeight);
}
}
protected boolean timeToBind() {
return getWidgetCount() == 0 &&
treeView != null && optionsView != null &&
menuView != null && editionView != null &&
layoutView != null && toolBarView != null &&
ioAssociationView != null && notificationsView != null;
}
public void setMenuView(ScrollPanel menuView) {
this.menuView = menuView;
checkBinding();
}
public void setEditionView(ScrollPanel editionView) {
this.editionView = editionView;
checkBinding();
}
public void setLayoutView(ScrollPanel layoutView) {
this.layoutView = layoutView;
checkBinding();
}
public void setOptionsView(SimplePanel optionsView) {
this.optionsView = optionsView;
checkBinding();
}
public void setIoAssociationView(Panel ioAssociationView) {
this.ioAssociationView = ioAssociationView;
checkBinding();
}
public void setToolBarView(Panel toolBarView) {
this.toolBarView = toolBarView;
checkBinding();
}
public void setNotificationsView(Panel notificationsView) {
this.notificationsView = notificationsView;
checkBinding();
}
public void setTreeView(ScrollPanel treeView) {
this.treeView = treeView;
checkBinding();
}
public void toggleNotifications(boolean visibleNotifications) {
int fullHeight = Window.getClientHeight();
if (visibleNotifications) {
String sheight = "" + (fullHeight - 275) + "px";
String smallerHeight = "" + (fullHeight - 300) + "px";
this.notificationsView.setHeight("225px");
Document.get().getElementById("mainRowWrapper").setPropertyString("height", sheight);
Document.get().getElementById("notificationsRowWrapper").setPropertyString("height", "225px");
treeView.setHeight(sheight);
menuView.setHeight(sheight);
editionView.setHeight(sheight);
ioAssociationView.setHeight(sheight);
layoutView.setHeight(smallerHeight);
visibleNotifications = false;
} else {
this.notificationsView.setHeight("25px");
String sheight = "" + (fullHeight - 80) + "px";
String smallerHeight = "" + (fullHeight - 105) + "px";
Document.get().getElementById("mainRowWrapper").setPropertyString("height", sheight);
Document.get().getElementById("notificationsRowWrapper").setPropertyString("height", "25px");
treeView.setHeight(sheight);
menuView.setHeight(sheight);
editionView.setHeight(sheight);
ioAssociationView.setHeight(sheight);
layoutView.setHeight(smallerHeight);
visibleNotifications = true;
}
}
}