/*
* Copyright 2007 Aditya Kapur <addy AT gwtiger.org>
*
* 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.onecmdb.ui.gwt.toolkit.client.view.screen;
import java.util.Date;
import org.onecmdb.ui.gwt.toolkit.client.view.ci.CIIconDisplayNameWidget;
import com.google.gwt.user.client.Cookies;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
/**
* All screens should inherit from BaseScreen This will help all the screens
* have consistant look and feel.
* <p>
* This also has utility methods to show the Loading message and error messages
* whenever required.
*
* @author Aditya Kapur
*
*/
public abstract class BaseScreen extends Composite {
protected DockPanel dockPanel = new DockPanel();
protected static final DockPanel.DockLayoutConstant EAST = DockPanel.EAST;
protected static final DockPanel.DockLayoutConstant WEST = DockPanel.WEST;
protected static final DockPanel.DockLayoutConstant NORTH = DockPanel.NORTH;
protected static final DockPanel.DockLayoutConstant SOUTH = DockPanel.SOUTH;
protected static final DockPanel.DockLayoutConstant CENTER = DockPanel.CENTER;
private HorizontalPanel lblTitle = new HorizontalPanel();
private Label lblTitleText = new Label("");
private Label lblError = new Label(" ");
private static final String loadingLabel = "Loading...";
private static Label lblLoading = new Label(loadingLabel);
private String errorStyle = "mdv-form-error";
private static final String loadingStyle = "mdv-form-loading-text";
private static final String style_label = "mdv-layouts-Label";
/**
* Constructor
*
*/
public BaseScreen() {
lblTitleText.setWordWrap(false);
lblTitle.add(lblTitleText);
lblTitle.setSpacing(8);
dockPanel.setStyleName("mdv-form");
lblTitle.setStyleName("mdv-form-title");
lblTitle.setWidth("100%");
dockPanel.add(lblTitle, DockPanel.NORTH);
dockPanel.setCellWidth(lblTitle, "100%");
lblError.setStyleName(errorStyle);
lblLoading.setStyleName(loadingStyle);
lblLoading.setVisible(false);
HorizontalPanel hp = new HorizontalPanel();
// hp.setStyleName("");
hp.add(lblError);
hp.add(lblLoading);
dockPanel.add(hp, DockPanel.NORTH);
}
/**
* Close/Hide the screen
*
*/
public void close() {
dockPanel.setVisible(false);
}
/**
* This method sets the style for the error message
*
* @param style
* style as used in the stylesheet
*/
public void setErrorStyle(String style) {
this.errorStyle = style;
lblError.setStyleName(style);
}
/**
* Sets the error string to the given string. If the string is not empty
* then it is displayed
*
* @param errorText
* the error message to be displayed.
*/
public void setErrorText(String errorText) {
lblError.setStyleName(errorStyle);
lblError.setText(errorText);
}
/**
* Sets the title for the screen
*
* @param title
* The text that should be set as the title for the screen
*/
public void setTitleText(String title) {
lblTitleText.setText(title);
}
protected void setTitleWidget(Widget widget) {
lblTitle.clear();
lblTitle.add(lblTitleText);
lblTitle.add(widget);
lblTitle.setCellWidth(widget, "100%");
lblTitle.setCellHorizontalAlignment(widget, HorizontalPanel.ALIGN_LEFT);
}
/**
* This method should be used to override the default style of the title
* text
*
* @param style
* name of the style
*/
public void setTitleStyle(String style) {
lblTitle.setStyleName(style);
}
/**
* This method should be used to override the default loading message of
*
* <pre>
* Loading...
* </pre>
*
* @param loadingText
* the text that will be used for the Loading message
*/
public void setLoadingText(String loadingText) {
lblLoading.setText(loadingText);
}
/**
* Method to show or hide the Error Message
*
* @param visible
* if
*
* <pre>
* true
* </pre>
*
* then the error message is displayed, hidden when
*
* <pre>
* false
* </pre>
*/
public void showError(boolean visible) {
lblError.setVisible(visible);
}
/**
* Method to show or hide the Loading message
*
* @param visible
* if
*
* <pre>
* true
* </pre>
*
* then the Loading message is displayed, hidden when
*
* <pre>
* false
* </pre>
*/
public void showLoading(boolean visible) {
lblLoading.setVisible(visible);
if (visible == false)
lblLoading.setText(loadingLabel);
}
/**
* This method should be defined in all the inherited screens.<br>
* This is called each time the screen is loaded. This is to preload any
* data if required
*
* @see BaseEntryScreen#showScreen(int) showScreen
*/
public void load() {
clear();
}
public void clear() {
}
/**
* This method should be defined in all the inherited screens.<br>
* This is called each time the screen is loaded. This is to preload any
* data if required
*
* @param objectType
* This parameter is passed to the screen. Is used to identify
* which Object to load
* @param objectId
* This is the parameter that identifies the ID of the object to
* be loaded
* @see BaseEntryScreen#showScreen(int, String, Long) showScreen
*/
public void load(String objectType, Long objectId) {
clear();
}
/**
* Helper function to take a string and convert to HTML and apply style
*
* @param caption
* @return HTML HTML string
*/
protected HTML makeTitle(String caption) {
HTML html = new HTML(caption);
html.setStyleName(style_label);
return html;
}
/**
* Helper function to save Cookie
*
* @param cookieName
* name of the cookie
* @param value -
* value to be saved in the cookie
* @param days -
* number of days this cookie should be kept alive
*/
public void setCookie(String cookieName, String value, int days) {
Date date = new Date();
long dateLong = date.getTime();
dateLong += (1000 * 60 * 60 * 24 * days);// convert days to ms
date.setTime(dateLong); // Set the new date
Cookies.setCookie(cookieName, value, date);
}
/**
* Helper function to save Cookie. The cookie will be saved for 30 days by
* default
*
* @param cookieName
* name of the cookie
* @param value -
* value to be saved in the cookie
*/
public void setCookie(String cookieName, String value) {
setCookie(cookieName, value, 30);
}
/**
* Helper function to get the value from the cookie
*
* @param cookieName
* Name of the cookie
* @return value of the cookie
*/
public String getCookie(String cookieName) {
return Cookies.getCookie(cookieName);
}
}