/* * Smart GWT (GWT for SmartClient) * Copyright 2008 and beyond, Isomorphic Software, Inc. * * Smart GWT is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 3 * as published by the Free Software Foundation. Smart GWT is also * available under typical commercial license terms - see * http://smartclient.com/license * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package com.smartgwt.client.widgets; import com.smartgwt.client.event.*; import com.smartgwt.client.core.*; import com.smartgwt.client.types.*; import com.smartgwt.client.data.*; import com.smartgwt.client.data.events.*; import com.smartgwt.client.rpc.*; import com.smartgwt.client.widgets.*; import com.smartgwt.client.widgets.events.*; import com.smartgwt.client.widgets.form.*; import com.smartgwt.client.widgets.form.validator.*; import com.smartgwt.client.widgets.form.fields.*; import com.smartgwt.client.widgets.tile.*; import com.smartgwt.client.widgets.tile.events.*; import com.smartgwt.client.widgets.grid.*; import com.smartgwt.client.widgets.grid.events.*; import com.smartgwt.client.widgets.chart.*; import com.smartgwt.client.widgets.layout.*; import com.smartgwt.client.widgets.layout.events.*; import com.smartgwt.client.widgets.menu.*; import com.smartgwt.client.widgets.tab.*; import com.smartgwt.client.widgets.toolbar.*; import com.smartgwt.client.widgets.tree.*; import com.smartgwt.client.widgets.tree.events.*; import com.smartgwt.client.widgets.viewer.*; import com.smartgwt.client.widgets.calendar.*; import com.smartgwt.client.widgets.calendar.events.*; import com.smartgwt.client.widgets.cube.*; import java.util.Date; import java.util.List; import java.util.Map; import java.util.HashMap; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.user.client.Element; import com.smartgwt.client.util.*; import com.google.gwt.event.shared.*; import com.google.gwt.event.shared.HasHandlers; /** * A general purpose Window class for implementing dialogs, portlets, alerts, prompts, wizards and desktop-like windowing * interfaces. <P> Windows can contain arbitrary Smart GWT components, configured via the {@link * com.smartgwt.client.widgets.Window#getItems items} property. Windows may be {@link * com.smartgwt.client.widgets.Window#getIsModal modal} or non-modal. <P> Windows provide a series of highly configurable * and skinnable autoChildren including a header, various header controls, footer, and corner resizer. <P> The more * specialized {@link com.smartgwt.client.widgets.Dialog} subclass of Window has additional functionality targetted at * simple prompts and confirmations, such as buttons with default actions, and single-method {@link * com.smartgwt.client.util.isc#warn shortcuts} for common application dialogs. */ public class Window extends VLayout implements com.smartgwt.client.widgets.events.HasMaximizeClickHandlers, com.smartgwt.client.widgets.events.HasMinimizeClickHandlers, com.smartgwt.client.widgets.events.HasRestoreClickHandlers, com.smartgwt.client.widgets.events.HasCloseClickHandlers { public static Window getOrCreateRef(JavaScriptObject jsObj) { if(jsObj == null) return null; BaseWidget obj = BaseWidget.getRef(jsObj); if(obj != null) { return (Window) obj; } else { return new Window(jsObj); } } public Window(){ setShowHeaderIcon(false);scClassName = "Window"; } public Window(JavaScriptObject jsObj){ super(jsObj); } protected native JavaScriptObject create()/*-{ var config = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()(); var scClassName = this.@com.smartgwt.client.widgets.BaseWidget::scClassName; var widget = $wnd.isc[scClassName].create(config); this.@com.smartgwt.client.widgets.BaseWidget::doInit()(); return widget; }-*/; // ********************* Properties / Attributes *********************** /** * Should this window minimize, maximize, and restore as an animation, or as a simple 1-step transition? * <p><b>Note : </b> This is an advanced setting</p> * * @param animateMinimize animateMinimize Default value is null * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#effects_animation_minimize" target="examples">Window Minimize Example</a> */ public void setAnimateMinimize(Boolean animateMinimize) { setAttribute("animateMinimize", animateMinimize, true); } /** * Should this window minimize, maximize, and restore as an animation, or as a simple 1-step transition? * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#effects_animation_minimize" target="examples">Window Minimize Example</a> */ public Boolean getAnimateMinimize() { return getAttributeAsBoolean("animateMinimize"); } /** * If true, this Window widget will automatically be centered on the page when shown. If false, it will show up in the * last position it was placed (either programmatically, or by user interaction). * * @param autoCenter autoCenter Default value is autoCenter * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setAutoCenter(Boolean autoCenter) { setAttribute("autoCenter", autoCenter, true); } /** * If true, this Window widget will automatically be centered on the page when shown. If false, it will show up in the * last position it was placed (either programmatically, or by user interaction). * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getAutoCenter() { return getAttributeAsBoolean("autoCenter"); } /** * If true, the window is resized automatically to accommodate the contents of the body, if they would otherwise require * scrolling. * * <br><br>If this method is called after the component has been drawn/initialized: * Setter for {@link com.smartgwt.client.widgets.Window#getAutoSize autoSize} * * @param autoSize true if the window should auto-size to its content. Default value is false * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_windows_autosize" target="examples">Auto Size Example</a> */ public void setAutoSize(Boolean autoSize) { setAttribute("autoSize", autoSize, true); } /** * If true, the window is resized automatically to accommodate the contents of the body, if they would otherwise require * scrolling. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_windows_autosize" target="examples">Auto Size Example</a> */ public Boolean getAutoSize() { return getAttributeAsBoolean("autoSize"); } /** * Color of the Window body. Overrides the background color specified in the style. * * @param bodyColor bodyColor Default value is "#FFFFFF" * @see com.smartgwt.client.widgets.Window#flash * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setBodyColor(String bodyColor) { setAttribute("bodyColor", bodyColor, true); } /** * Color of the Window body. Overrides the background color specified in the style. * * * @return String * @see com.smartgwt.client.widgets.Window#flash * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getBodyColor() { return getAttributeAsString("bodyColor"); } /** * Style of the Window body. * * @param bodyStyle bodyStyle Default value is "windowBody" * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setBodyStyle(String bodyStyle) { setAttribute("bodyStyle", bodyStyle, true); } /** * Style of the Window body. * * * @return String * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getBodyStyle() { return getAttributeAsString("bodyStyle"); } /** * If true, this Window may be moved around by the user by dragging on the Window header. Note that if the header is not * showing, the Window can't be drag-repositioned regardless of this setting. * * @param canDragReposition canDragReposition Default value is true * @see com.smartgwt.client.widgets.Window#setShowHeader */ public void setCanDragReposition(Boolean canDragReposition) { setAttribute("canDragReposition", canDragReposition, true); } /** * If true, this Window may be moved around by the user by dragging on the Window header. Note that if the header is not * showing, the Window can't be drag-repositioned regardless of this setting. * * * @return Boolean * @see com.smartgwt.client.widgets.Window#getShowHeader */ public Boolean getCanDragReposition() { return getAttributeAsBoolean("canDragReposition"); } /** * Can the window be drag-resized? If true the window may be drag resized from its edges, and if showing, via the resizer * icon in the footer. * * @param canDragResize canDragResize Default value is false * @see com.smartgwt.client.widgets.Window#setShowResizer */ public void setCanDragResize(Boolean canDragResize) { setAttribute("canDragResize", canDragResize, true); } /** * Can the window be drag-resized? If true the window may be drag resized from its edges, and if showing, via the resizer * icon in the footer. * * * @return Boolean * @see com.smartgwt.client.widgets.Window#getShowResizer */ public Boolean getCanDragResize() { return getAttributeAsBoolean("canDragResize"); } /** * If true, the user can give the header buttons keyboard focus (by clicking on them and including them in the * tabOrder) * <p><b>Note : </b> This is an advanced setting</p> * * @param canFocusInHeaderButtons canFocusInHeaderButtons Default value is false * @see com.smartgwt.client.docs.Focus Focus overview and related methods */ public void setCanFocusInHeaderButtons(Boolean canFocusInHeaderButtons) { setAttribute("canFocusInHeaderButtons", canFocusInHeaderButtons, true); } /** * If true, the user can give the header buttons keyboard focus (by clicking on them and including them in the * tabOrder) * * * @return Boolean * @see com.smartgwt.client.docs.Focus Focus overview and related methods */ public Boolean getCanFocusInHeaderButtons() { return getAttributeAsBoolean("canFocusInHeaderButtons"); } /** * The layout policy that should be used for widgets within the Window body. <P> Valid values are "vertical", "horizontal", * "none". If the body is a Layout, this controls how the items are stacked in the body by setting {@link * com.smartgwt.client.widgets.layout.Layout#getVertical vertical}. See {@link * com.smartgwt.client.widgets.Window#getBodyConstructor bodyConstructor} for details. * <p><b>Note : </b> This is an advanced setting</p> * * @param contentLayout contentLayout Default value is "vertical" * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setContentLayout(String contentLayout) { setAttribute("contentLayout", contentLayout, true); } /** * The layout policy that should be used for widgets within the Window body. <P> Valid values are "vertical", "horizontal", * "none". If the body is a Layout, this controls how the items are stacked in the body by setting {@link * com.smartgwt.client.widgets.layout.Layout#getVertical vertical}. See {@link * com.smartgwt.client.widgets.Window#getBodyConstructor bodyConstructor} for details. * * * @return String * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getContentLayout() { return getAttributeAsString("contentLayout"); } /** * If this window has {@link com.smartgwt.client.widgets.Window#getSrc src} specified, this property can be used to * indicate whether the source is a standalone HTML page or an HTML fragment. <P> This is similar to the {@link * com.smartgwt.client.widgets.HTMLFlow#getContentsType contentsType} property - be sure to read the HTMLFlow documentation * to understand circumstances where contentsType:"page" is <b>unsafe and not recommended</b>. * * @param contentsType contentsType Default value is "page" * @throws IllegalStateException this property cannot be changed after the component has been created * @see com.smartgwt.client.widgets.Window#setSrc * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setContentsType(String contentsType) throws IllegalStateException { setAttribute("contentsType", contentsType, false); } /** * If this window has {@link com.smartgwt.client.widgets.Window#getSrc src} specified, this property can be used to * indicate whether the source is a standalone HTML page or an HTML fragment. <P> This is similar to the {@link * com.smartgwt.client.widgets.HTMLFlow#getContentsType contentsType} property - be sure to read the HTMLFlow documentation * to understand circumstances where contentsType:"page" is <b>unsafe and not recommended</b>. * * * @return String * @see com.smartgwt.client.widgets.Window#getSrc * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getContentsType() { return getAttributeAsString("contentsType"); } /** * If {@link com.smartgwt.client.widgets.Window#getMinimizeHeight minimizeHeight} is unset, by the window will shrink to * the height of the header when minimized. <BR> If there is no header, the <code>defaultMinimizeHeight</code> will be used * instead. * <p><b>Note : </b> This is an advanced setting</p> * * @param defaultMinimizeHeight defaultMinimizeHeight Default value is 16 * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setDefaultMinimizeHeight(int defaultMinimizeHeight) { setAttribute("defaultMinimizeHeight", defaultMinimizeHeight, true); } /** * If {@link com.smartgwt.client.widgets.Window#getMinimizeHeight minimizeHeight} is unset, by the window will shrink to * the height of the header when minimized. <BR> If there is no header, the <code>defaultMinimizeHeight</code> will be used * instead. * * * @return int * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public int getDefaultMinimizeHeight() { return getAttributeAsInt("defaultMinimizeHeight"); } /** * Should this window be dismissed (same effect as pressing the "Cancel" button) when the user presses the "Escape" key? * Behavior will only occur while the window or one of its descendants has focus, and does not cancel the Escape keypress. * <P> If unset default behavior depends on whether a close / cancel button is visible for this item. * * @param dismissOnEscape dismissOnEscape Default value is null * @see com.smartgwt.client.widgets.Window#shouldDismissOnEscape */ public void setDismissOnEscape(Boolean dismissOnEscape) { setAttribute("dismissOnEscape", dismissOnEscape, true); } /** * Should this window be dismissed (same effect as pressing the "Cancel" button) when the user presses the "Escape" key? * Behavior will only occur while the window or one of its descendants has focus, and does not cancel the Escape keypress. * <P> If unset default behavior depends on whether a close / cancel button is visible for this item. * * * @return Boolean * @see com.smartgwt.client.widgets.Window#shouldDismissOnEscape */ public Boolean getDismissOnEscape() { return getAttributeAsBoolean("dismissOnEscape"); } /** * If true, a click outside the bounds of the Window will have the same effect as pressing its cancel button.<br> * <b>Note:</b> Applies only to modal windows. * * @param dismissOnOutsideClick dismissOnOutsideClick Default value is false * @see com.smartgwt.client.widgets.Window#setIsModal */ public void setDismissOnOutsideClick(Boolean dismissOnOutsideClick) { setAttribute("dismissOnOutsideClick", dismissOnOutsideClick, true); } /** * If true, a click outside the bounds of the Window will have the same effect as pressing its cancel button.<br> * <b>Note:</b> Applies only to modal windows. * * * @return Boolean * @see com.smartgwt.client.widgets.Window#getIsModal */ public Boolean getDismissOnOutsideClick() { return getAttributeAsBoolean("dismissOnOutsideClick"); } /** * The height of the footer, in pixels. * * @param footerHeight footerHeight Default value is 18 * @throws IllegalStateException this property cannot be changed after the component has been created * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setFooterHeight(int footerHeight) throws IllegalStateException { setAttribute("footerHeight", footerHeight, false); } /** * The height of the footer, in pixels. * * * @return int * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public int getFooterHeight() { return getAttributeAsInt("footerHeight"); } /** * If {@link com.smartgwt.client.widgets.Window#getShowHeaderBackground showHeaderBackground} is <code>true</code>, this * property provides the URL of the background image for the header. * <p><b>Note : </b> This is an advanced setting</p> * * @param headerSrc headerSrc Default value is "[SKIN]Window/headerGradient.gif" | null * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setHeaderSrc(String headerSrc) { setAttribute("headerSrc", headerSrc, true); } /** * If {@link com.smartgwt.client.widgets.Window#getShowHeaderBackground showHeaderBackground} is <code>true</code>, this * property provides the URL of the background image for the header. * * * @return String * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getHeaderSrc() { return getAttributeAsString("headerSrc"); } /** * Style for the Window header. * <p><b>Note : </b> This is an advanced setting</p> * * @param headerStyle headerStyle Default value is "WindowHeader" * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setHeaderStyle(String headerStyle) { setAttribute("headerStyle", headerStyle, true); } /** * Style for the Window header. * * * @return String * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getHeaderStyle() { return getAttributeAsString("headerStyle"); } /** * Highlight color for the Window body (shown when the body is flashed). * * @param hiliteBodyColor hiliteBodyColor Default value is "#EEEEEE" * @see com.smartgwt.client.widgets.Window#flash * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setHiliteBodyColor(String hiliteBodyColor) { setAttribute("hiliteBodyColor", hiliteBodyColor, true); } /** * Highlight color for the Window body (shown when the body is flashed). * * * @return String * @see com.smartgwt.client.widgets.Window#flash * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getHiliteBodyColor() { return getAttributeAsString("hiliteBodyColor"); } /** * If {@link com.smartgwt.client.widgets.Window#getShowHeaderBackground showHeaderBackground} is true, this governs the URL * of the image to use in the header's highlighted state when the window is {@link * com.smartgwt.client.widgets.Window#flash flashed} * <p><b>Note : </b> This is an advanced setting</p> * * @param hiliteHeaderSrc hiliteHeaderSrc Default value is "[SKIN]Window/headerGradient_hilite.gif" | null * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setHiliteHeaderSrc(String hiliteHeaderSrc) { setAttribute("hiliteHeaderSrc", hiliteHeaderSrc, true); } /** * If {@link com.smartgwt.client.widgets.Window#getShowHeaderBackground showHeaderBackground} is true, this governs the URL * of the image to use in the header's highlighted state when the window is {@link * com.smartgwt.client.widgets.Window#flash flashed} * * * @return String * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getHiliteHeaderSrc() { return getAttributeAsString("hiliteHeaderSrc"); } /** * Highlight style for the Window header. Displayed when a window is {@link com.smartgwt.client.widgets.Window#flash * flashed} * <p><b>Note : </b> This is an advanced setting</p> * * @param hiliteHeaderStyle hiliteHeaderStyle Default value is "WindowHeader" * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setHiliteHeaderStyle(String hiliteHeaderStyle) { setAttribute("hiliteHeaderStyle", hiliteHeaderStyle, true); } /** * Highlight style for the Window header. Displayed when a window is {@link com.smartgwt.client.widgets.Window#flash * flashed} * * * @return String * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getHiliteHeaderStyle() { return getAttributeAsString("hiliteHeaderStyle"); } /** * If true, when shown this Window will intercept and block events to all other existing components on the page. <P> Use * {@link com.smartgwt.client.widgets.Window#getShowModalMask showModalMask} to darken all other elements on the screen * when a modal dialog is showing. <P> Chained modal windows - that is, modal windows that launch other modal windows - are * allowed. You can accomplish this by simply creating a second modal Window while a modal Window is showing. <P> Note * only top-level Windows (Windows without parents) can be modal. * * @param isModal isModal Default value is false * @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_windows_modality" target="examples">Modality Example</a> */ public void setIsModal(Boolean isModal) { setAttribute("isModal", isModal, true); } /** * If true, when shown this Window will intercept and block events to all other existing components on the page. <P> Use * {@link com.smartgwt.client.widgets.Window#getShowModalMask showModalMask} to darken all other elements on the screen * when a modal dialog is showing. <P> Chained modal windows - that is, modal windows that launch other modal windows - are * allowed. You can accomplish this by simply creating a second modal Window while a modal Window is showing. <P> Note * only top-level Windows (Windows without parents) can be modal. * * * @return Boolean * @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_windows_modality" target="examples">Modality Example</a> */ public Boolean getIsModal() { return getAttributeAsBoolean("isModal"); } /** * Is this window maximized. If true at init time, the window will be drawn maximized. To set this property at runtime use * {@link com.smartgwt.client.widgets.Window#maximize Window.maximize} or {@link com.smartgwt.client.widgets.Window#restore * Window.restore}. * * @param maximized maximized Default value is false * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setMaximized(Boolean maximized) { setAttribute("maximized", maximized, true); } /** * Is this window maximized. If true at init time, the window will be drawn maximized. To set this property at runtime use * {@link com.smartgwt.client.widgets.Window#maximize Window.maximize} or {@link com.smartgwt.client.widgets.Window#restore * Window.restore}. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getMaximized() { return getAttributeAsBoolean("maximized"); } /** * Default acceleration function for performing an animated minimize / maximize. If unset, * <code>this.animateAcceleration</code> will be used by default instead * <p><b>Note : </b> This is an advanced setting</p> * * @param minimizeAcceleration minimizeAcceleration Default value is null * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setMinimizeAcceleration(AnimationAcceleration minimizeAcceleration) { setAttribute("minimizeAcceleration", minimizeAcceleration == null ? null : minimizeAcceleration.getValue(), true); } /** * Default acceleration function for performing an animated minimize / maximize. If unset, * <code>this.animateAcceleration</code> will be used by default instead * * * @return AnimationAcceleration * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public AnimationAcceleration getMinimizeAcceleration() { return EnumUtil.getEnum(AnimationAcceleration.values(), getAttribute("minimizeAcceleration")); } /** * Is this window minimized. If true at init time, the window will be drawn minimized. To set this property at runtime use * {@link com.smartgwt.client.widgets.Window#minimize Window.minimize} or {@link com.smartgwt.client.widgets.Window#restore * Window.restore}. * * @param minimized minimized Default value is false * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setMinimized(Boolean minimized) { setAttribute("minimized", minimized, true); } /** * Is this window minimized. If true at init time, the window will be drawn minimized. To set this property at runtime use * {@link com.smartgwt.client.widgets.Window#minimize Window.minimize} or {@link com.smartgwt.client.widgets.Window#restore * Window.restore}. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getMinimized() { return getAttributeAsBoolean("minimized"); } /** * Height for the window when minimized. If unset the window will shrink to the height of the header, if present, otherwise * {@link com.smartgwt.client.widgets.Window#getDefaultMinimizeHeight this.defaultMinimizeHeight} * <p><b>Note : </b> This is an advanced setting</p> * * @param minimizeHeight minimizeHeight Default value is null * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setMinimizeHeight(Integer minimizeHeight) { setAttribute("minimizeHeight", minimizeHeight, true); } /** * Height for the window when minimized. If unset the window will shrink to the height of the header, if present, otherwise * {@link com.smartgwt.client.widgets.Window#getDefaultMinimizeHeight this.defaultMinimizeHeight} * * * @return Integer * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Integer getMinimizeHeight() { return getAttributeAsInt("minimizeHeight"); } /** * If this window is minimizeable, and animateMinimize is true, what should the duration of the minimize / maximize be (in * ms)? If unset defaults to <code>canvas.animationTime</code>. * <p><b>Note : </b> This is an advanced setting</p> * * @param minimizeTime minimizeTime Default value is null * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#effects_animation_minimize" target="examples">Window Minimize Example</a> */ public void setMinimizeTime(Integer minimizeTime) { setAttribute("minimizeTime", minimizeTime, true); } /** * If this window is minimizeable, and animateMinimize is true, what should the duration of the minimize / maximize be (in * ms)? If unset defaults to <code>canvas.animationTime</code>. * * * @return Integer * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#effects_animation_minimize" target="examples">Window Minimize Example</a> */ public Integer getMinimizeTime() { return getAttributeAsInt("minimizeTime"); } /** * Controls the opacity of the modal mask displayed behind modal windows. * * @param modalMaskOpacity modalMaskOpacity Default value is 50 * @throws IllegalStateException this property cannot be changed after the component has been created * @see com.smartgwt.client.widgets.Window#setModalMask * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setModalMaskOpacity(int modalMaskOpacity) throws IllegalStateException { setAttribute("modalMaskOpacity", modalMaskOpacity, false); } /** * Controls the opacity of the modal mask displayed behind modal windows. * * * @return int * @see com.smartgwt.client.widgets.Window#getModalMask * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public int getModalMaskOpacity() { return getAttributeAsInt("modalMaskOpacity"); } /** * Specifies the CSS style for the modal mask. * * @param modalMaskStyle modalMaskStyle Default value is "modalMask" * @throws IllegalStateException this property cannot be changed after the component has been created * @see com.smartgwt.client.widgets.Window#setModalMask * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setModalMaskStyle(String modalMaskStyle) throws IllegalStateException { setAttribute("modalMaskStyle", modalMaskStyle, false); } /** * Specifies the CSS style for the modal mask. * * * @return String * @see com.smartgwt.client.widgets.Window#getModalMask * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getModalMaskStyle() { return getAttributeAsString("modalMaskStyle"); } /** * If true, draw the body contents when this Window is drawn. * <p><b>Note : </b> This is an advanced setting</p> * * @param showBody showBody Default value is true * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setShowBody(Boolean showBody) { setAttribute("showBody", showBody, true); } /** * If true, draw the body contents when this Window is drawn. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getShowBody() { return getAttributeAsBoolean("showBody"); } /** * If true, show a close button in the header, which will dismiss this window by calling {@link * com.smartgwt.client.widgets.Window#addCloseClickHandler Window.closeClick}. * * <br><br>If this method is called after the component has been drawn/initialized: * Dynamically update {@link com.smartgwt.client.widgets.Window#getShowCloseButton showCloseButton} to show / hide the closeButton * * @param showCloseButton showCloseButton Default value is true * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setShowCloseButton(Boolean showCloseButton) { setAttribute("showCloseButton", showCloseButton, true); } /** * If true, show a close button in the header, which will dismiss this window by calling {@link * com.smartgwt.client.widgets.Window#addCloseClickHandler Window.closeClick}. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getShowCloseButton() { return getAttributeAsBoolean("showCloseButton"); } /** * If true, show a footer for this Window, including resizer, statusBar, etc. This setting is commonly overridden for * skinning purposes. * * @param showFooter showFooter Default value is true * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_windows_footer" target="examples">Footer Example</a> */ public void setShowFooter(Boolean showFooter) { setAttribute("showFooter", showFooter, true); } /** * If true, show a footer for this Window, including resizer, statusBar, etc. This setting is commonly overridden for * skinning purposes. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_windows_footer" target="examples">Footer Example</a> */ public Boolean getShowFooter() { return getAttributeAsBoolean("showFooter"); } /** * If true, show a {@link com.smartgwt.client.widgets.Window#getHeader header} for this Window. * <P> * Note that in certain Smartclient skins {@link com.smartgwt.client.widgets.Window#getShowHeaderBackground * showHeaderBackground} may be set to * <code>false</code> and the header's appearance implemented as part of the * window's {@link com.smartgwt.client.widgets.Canvas#getShowEdges edge media}. In this case suppressing the header can be * achieved * by overriding the edge media as well as setting this property to false. For example, to * create a headerless window with a similar appearance to a {@link com.smartgwt.client.widgets.menu.Menu} in the * <code><i>TreeFrog</i></code> skin, the following attributes could be used: * <pre> * showHeader:false, * edgeImage:"[SKIN]/Menu/m.png", * edgeSize:10, edgeTop:17, edgeBottom:17, * edgeCenterBackgroundColor:"#F7F7F7" * </pre> * <p><b>Note : </b> This is an advanced setting</p> * * @param showHeader showHeader Default value is true * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setShowHeader(Boolean showHeader) { setAttribute("showHeader", showHeader, true); } /** * If true, show a {@link com.smartgwt.client.widgets.Window#getHeader header} for this Window. * <P> * Note that in certain Smartclient skins {@link com.smartgwt.client.widgets.Window#getShowHeaderBackground * showHeaderBackground} may be set to * <code>false</code> and the header's appearance implemented as part of the * window's {@link com.smartgwt.client.widgets.Canvas#getShowEdges edge media}. In this case suppressing the header can be * achieved * by overriding the edge media as well as setting this property to false. For example, to * create a headerless window with a similar appearance to a {@link com.smartgwt.client.widgets.menu.Menu} in the * <code><i>TreeFrog</i></code> skin, the following attributes could be used: * <pre> * showHeader:false, * edgeImage:"[SKIN]/Menu/m.png", * edgeSize:10, edgeTop:17, edgeBottom:17, * edgeCenterBackgroundColor:"#F7F7F7" * </pre> * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getShowHeader() { return getAttributeAsBoolean("showHeader"); } /** * Should the window header show a background image? Default value is true for all browsers except for Internet * Explorer.<br> If set to true the image source is derived from {@link com.smartgwt.client.widgets.Window#getHeaderSrc * headerSrc} and {@link com.smartgwt.client.widgets.Window#getHiliteHeaderSrc hiliteHeaderSrc}, otherwise the background * will be styled according to {@link com.smartgwt.client.widgets.Window#getHeaderStyle headerStyle} / {@link * com.smartgwt.client.widgets.Window#getHiliteHeaderStyle hiliteHeaderStyle}. * <p><b>Note : </b> This is an advanced setting</p> * * @param showHeaderBackground showHeaderBackground Default value is varies * @throws IllegalStateException this property cannot be changed after the component has been created * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setShowHeaderBackground(Boolean showHeaderBackground) throws IllegalStateException { setAttribute("showHeaderBackground", showHeaderBackground, false); } /** * Should the window header show a background image? Default value is true for all browsers except for Internet * Explorer.<br> If set to true the image source is derived from {@link com.smartgwt.client.widgets.Window#getHeaderSrc * headerSrc} and {@link com.smartgwt.client.widgets.Window#getHiliteHeaderSrc hiliteHeaderSrc}, otherwise the background * will be styled according to {@link com.smartgwt.client.widgets.Window#getHeaderStyle headerStyle} / {@link * com.smartgwt.client.widgets.Window#getHiliteHeaderStyle hiliteHeaderStyle}. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getShowHeaderBackground() { return getAttributeAsBoolean("showHeaderBackground"); } /** * If true, we show an icon on the left in the header. * * <br><br>If this method is called after the component has been drawn/initialized: * Dynamically update {@link com.smartgwt.client.widgets.Window#getShowHeaderIcon showHeaderIcon} to show / hide the headerIcon * * @param showHeaderIcon showHeaderIcon Default value is true * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setShowHeaderIcon(Boolean showHeaderIcon) { setAttribute("showHeaderIcon", showHeaderIcon, true); } /** * If true, we show an icon on the left in the header. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getShowHeaderIcon() { return getAttributeAsBoolean("showHeaderIcon"); } /** * If true, show a maximize button in the header - clicking it maximizes the Window * * <br><br>If this method is called after the component has been drawn/initialized: * Dynamically update {@link com.smartgwt.client.widgets.Window#getShowMaximizeButton showMaximizeButton} to show / hide the maximizeButton * * @param showMaximizeButton showMaximizeButton Default value is false * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setShowMaximizeButton(Boolean showMaximizeButton) { setAttribute("showMaximizeButton", showMaximizeButton, true); } /** * If true, show a maximize button in the header - clicking it maximizes the Window * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getShowMaximizeButton() { return getAttributeAsBoolean("showMaximizeButton"); } /** * If true, show a minimize button in the header--clicking it minimizes the Window. * * <br><br>If this method is called after the component has been drawn/initialized: * Dynamically update {@link com.smartgwt.client.widgets.Window#getShowMinimizeButton showMinimizeButton} to show / hide the minimizeButton * * @param showMinimizeButton showMinimizeButton Default value is true * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setShowMinimizeButton(Boolean showMinimizeButton) { setAttribute("showMinimizeButton", showMinimizeButton, true); } /** * If true, show a minimize button in the header--clicking it minimizes the Window. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getShowMinimizeButton() { return getAttributeAsBoolean("showMinimizeButton"); } /** * If true, displays a translucent mask over the rest of the page when a modal window is displayed. * * @param showModalMask showModalMask Default value is null * @throws IllegalStateException this property cannot be changed after the component has been created * @see com.smartgwt.client.widgets.Window#setModalMask * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setShowModalMask(Boolean showModalMask) throws IllegalStateException { setAttribute("showModalMask", showModalMask, false); } /** * If true, displays a translucent mask over the rest of the page when a modal window is displayed. * * * @return Boolean * @see com.smartgwt.client.widgets.Window#getModalMask * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getShowModalMask() { return getAttributeAsBoolean("showModalMask"); } /** * If true, show a button in the lower right corner that allows users to resize the Window. Note that the resizer will only * be displayed if the footer is showing for the window ({@link com.smartgwt.client.widgets.Window#getShowFooter * showFooter}) and {@link com.smartgwt.client.widgets.Window#getCanDragResize canDragResize} is true. * * @param showResizer showResizer Default value is true * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setShowResizer(Boolean showResizer) { setAttribute("showResizer", showResizer, true); } /** * If true, show a button in the lower right corner that allows users to resize the Window. Note that the resizer will only * be displayed if the footer is showing for the window ({@link com.smartgwt.client.widgets.Window#getShowFooter * showFooter}) and {@link com.smartgwt.client.widgets.Window#getCanDragResize canDragResize} is true. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getShowResizer() { return getAttributeAsBoolean("showResizer"); } /** * If true, show a statusBar for this Window, including resizer. * * @param showStatusBar showStatusBar Default value is true * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setShowStatusBar(Boolean showStatusBar) { setAttribute("showStatusBar", showStatusBar, true); } /** * If true, show a statusBar for this Window, including resizer. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getShowStatusBar() { return getAttributeAsBoolean("showStatusBar"); } /** * Show a title (typically just text) on the header for this window. * * @param showTitle showTitle Default value is true * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setShowTitle(Boolean showTitle) { setAttribute("showTitle", showTitle, true); } /** * Show a title (typically just text) on the header for this window. * * * @return Boolean * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public Boolean getShowTitle() { return getAttributeAsBoolean("showTitle"); } /** * A URL to load as content for the Window's body. If specified, this attribute will take precedence over the items * attribute. <P> Note that setting window.src is essentially a shortcut for setting {@link * com.smartgwt.client.widgets.Window#getItems items} to a single HTMLflow with a specified {@link * com.smartgwt.client.widgets.HTMLFlow#getContentsURL contentsURL}. * * <br><br>If this method is called after the component has been drawn/initialized: * Sets the URL of the contents to display in the body of the window, redrawing if necessary. * * @param src URL of new contents to be displayed in the window body. Default value is null * @see com.smartgwt.client.widgets.Window#setContentsType * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setSrc(String src) { setAttribute("src", src, true); } /** * A URL to load as content for the Window's body. If specified, this attribute will take precedence over the items * attribute. <P> Note that setting window.src is essentially a shortcut for setting {@link * com.smartgwt.client.widgets.Window#getItems items} to a single HTMLflow with a specified {@link * com.smartgwt.client.widgets.HTMLFlow#getContentsURL contentsURL}. * * * @return String * @see com.smartgwt.client.widgets.Window#getContentsType * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getSrc() { return getAttributeAsString("src"); } /** * Text to show in the status bar of the window (if one is visible) * * <br><br>If this method is called after the component has been drawn/initialized: * Sets the text in the status bar of the window, redrawing if necessary. * * @param status new text for the status bar. Default value is null * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setStatus(String status) { setAttribute("status", status, true); } /** * Text to show in the status bar of the window (if one is visible) * * * @return String * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getStatus() { return getAttributeAsString("status"); } /** * title for this Window, shown in the header (if drawn) * * <br><br>If this method is called after the component has been drawn/initialized: * Sets the title text that appears in the window header; the header will be redrawn if necessary. * * @param title new title. Default value is "Untitled Window" * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setTitle(String title) { setAttribute("title", title, true); } /** * title for this Window, shown in the header (if drawn) * * * @return String * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public String getTitle() { return getAttributeAsString("title"); } // ********************* Methods *********************** /** * Same as {@link com.smartgwt.client.widgets.layout.Layout#addMember Layout.addMember}. Note that in order to add items * to {@link com.smartgwt.client.widgets.Window#getBody body}, you use {@link com.smartgwt.client.widgets.Window#addItem * Window.addItem} rather than <code>addMember</code>. Adding a member to a Window adds the member as a sibling to the * header, body and other built-in Window subcomponents. * @param newMember the canvas object to be added to the layout */ public native void addMember(Canvas newMember) /*-{ var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); self.addMember(newMember.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()()); }-*/; /** * Same as {@link com.smartgwt.client.widgets.layout.Layout#addMember Layout.addMember}. Note that in order to add items * to {@link com.smartgwt.client.widgets.Window#getBody body}, you use {@link com.smartgwt.client.widgets.Window#addItem * Window.addItem} rather than <code>addMember</code>. Adding a member to a Window adds the member as a sibling to the * header, body and other built-in Window subcomponents. * @param newMember the canvas object to be added to the layout * @param position the position in the layout to place newMember (starts with 0); if omitted, it will be * added at the last position * @see com.smartgwt.client.widgets.Window#addMembers */ public native void addMember(Canvas newMember, int position) /*-{ var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); self.addMember(newMember.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(), position); }-*/; /** * Centers the Window in the page. This is called automatically in window.show() if Window.autoCenter is true. Note - if * the Window is a child of another widget, we center in the parent widget rather than centering in the page. */ public native void centerInPage() /*-{ var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); self.centerInPage(); }-*/; /** * Add a closeClick handler. * <p> * Handles a click on the close button of this window. The default implementation hides the window and returns false to * cancel bubbling. Override this method if you want other actions to be taken. * * @param handler the closeClick handler * @return {@link HandlerRegistration} used to remove this handler */ public HandlerRegistration addCloseClickHandler(com.smartgwt.client.widgets.events.CloseClickHandler handler) { if(getHandlerCount(com.smartgwt.client.widgets.events.CloseClickEvent.getType()) == 0) setupCloseClickEvent(); return doAddHandler(handler, com.smartgwt.client.widgets.events.CloseClickEvent.getType()); } private native void setupCloseClickEvent() /*-{ var obj = null; var selfJ = this; if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) { obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()(); obj.addProperties({closeClick:$entry(function(){ var param = {}; var event = @com.smartgwt.client.widgets.events.CloseClickEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param); selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); }) }); } else { obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()(); obj.closeClick = $entry(function(){ var param = {}; var event = @com.smartgwt.client.widgets.events.CloseClickEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param); selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); }); } }-*/; /** * Makes the window header flash if it's visible; if there's no header, or the header is hidden, makes the window * body flash instead. <p> This method is executed when users click outside the bounds of a modal window so * they'll notice that they have to do something with the window. */ public native void flash() /*-{ var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); self.flash(); }-*/; /** * Maximize the window. Fired when the user clicks the maximize button if {@link * com.smartgwt.client.widgets.Window#getShowMaximizeButton this.showMaximizeButton} is true.<br> Default implementation * moves the window to <code>0, 0</code> and resizes the window to <code>"100%"</code> on both axes, so it will fill the * browser window (or the parentElement of the Window instance, if appropriate).<br> If {@link * com.smartgwt.client.widgets.Window#getAnimateMinimize animateMinimize} is true, the maximize will be animated. A restore * button will be displayed in place of the maximize button when the window is maximized. */ public native void maximize() /*-{ var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); self.maximize(); }-*/; /** * Minimize the window. Fired when the user clicks the minimize button if {@link * com.smartgwt.client.widgets.Window#getShowMinimizeButton this.showMinimizeButton} is true.<br> Default implementation * shrinks the window to just the height of the header bar, hiding the body. If {@link * com.smartgwt.client.widgets.Window#getAnimateMinimize animateMinimize} is true, the resize will be animated. A restore * button will be displayed in place of the minimize button when the window is minimized. */ public native void minimize() /*-{ var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); self.minimize(); }-*/; /** * Restores the window to its specified height and width after a call to {@link com.smartgwt.client.widgets.Window#minimize * Window.minimize} or {@link com.smartgwt.client.widgets.Window#maximize Window.maximize}. Called from a click on the * restore button shown in place of the minimize or maximize button when the window is minimized or maximized.<br> * Resizing will occur as an animation if {@link com.smartgwt.client.widgets.Window#getAnimateMinimize animateMinimize} is * true. */ public native void restore() /*-{ var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); self.restore(); }-*/; /** * Should this window be dismissed (same effect as pressing the "Cancel" button) when the user presses the "Escape" * key?<br> Default behavior: if {@link com.smartgwt.client.widgets.Window#getDismissOnEscape dismissOnEscape} is set, just * return it. Otherwise return true if this window is showing a "close" control in the header (see {@link * com.smartgwt.client.widgets.Window#getHeaderControls headerControls}). * * @return true if the window should be dismissed when the user hits escape */ public native Boolean shouldDismissOnEscape() /*-{ var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); var retVal =self.shouldDismissOnEscape(); if(retVal == null || retVal === undefined) { return null; } else { return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); } }-*/; // ********************* Static Methods *********************** /** * Class level method to set the default properties of this class. If set, then all subsequent instances of this * class will automatically have the default properties that were set when this method was called. This is a powerful * feature that eliminates the need for users to create a separate hierarchy of subclasses that only alter the default * properties of this class. Can also be used for skinning / styling purposes. * <P> * <b>Note:</b> This method is intended for setting default attributes only and will effect all instances of the * underlying class (including those automatically generated in JavaScript). * This method should not be used to apply standard EventHandlers or override methods for * a class - use a custom subclass instead. * * @param windowProperties properties that should be used as new defaults when instances of this class are created */ public static native void setDefaultProperties(Window windowProperties) /*-{ var properties = $wnd.isc.addProperties({},windowProperties.@com.smartgwt.client.widgets.BaseWidget::getConfig()()); delete properties.ID; $wnd.isc.Window.addProperties(properties); }-*/; // *********************************************************** /** * Adds a widget to the window. * * @param widget the widget to be added */ public void addItem(Widget widget) { if (widget instanceof Canvas) { addItem((Canvas) widget); } else { addItem(new WidgetCanvas(widget)); } } /** * Adds a widget to the window. * * @param component the widget to be added */ public void addItem(Canvas component) { JavaScriptObject componentJS = component.getOrCreateJsObj(); if (isCreated()) { addItemPostCreate(componentJS); } else { addItemPreCreate(componentJS); } } private native void addItemPreCreate(JavaScriptObject componentJS) /*-{ var config = this.@com.smartgwt.client.widgets.BaseWidget::config; if(!config.items) { config.items = @com.smartgwt.client.util.JSOHelper::createJavaScriptArray()(); } config.items.push(componentJS); }-*/; private native void addItemPostCreate(JavaScriptObject componentJS) /*-{ var container = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); container.addItem(componentJS); }-*/; /** * Removes a widget from the window. * * @param component the widget to be removed */ public native void removeItem(Canvas component) /*-{ var container = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); var componentJS = component.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); container.removeItem(componentJS); }-*/; /** * If Window.canDragReposition or Window.canDragResize is true, should the windows size and position be constrained * such that it remains within the viewport of its parent element (or for top level windows, within the viewport of * the browser window)? * <p/> * <br> Note: keepInParentRect affects only user drag interactions, not programmatic moves. * * @param keepInParentRect true to keepInParentRect */ public void setKeepInParentRect(Boolean keepInParentRect) { setAttribute("keepInParentRect", keepInParentRect, true); } /** * Default properties for the body of the Window<br> <p><b>Note : </b> This is an advanced setting</p> * * @param bodyDefaults bodyDefaults */ public void setBodyDefaults(Map bodyDefaults) { setAttribute("bodyDefaults", bodyDefaults, true); } /** * This is an object literal property block specifying the various properties of the headerIcon - the icon that * appears at the top left of the window and is by default the Isomorphic logo. Overrideable defaults are as * follows: <ul> <li>width - default to <code>16</code> and specifies the width of the headerIcon. <li>height - * default to <code>14</code> and specifies the height of the headerIcon. <li>src - defaults to * <code>"[SKIN]/Window/minimize.gif"</code> and specifies the image for the headerIcon. * <p/> * <p><b>Note : </b> This is an advanced setting</p> * * @param headerIconDefaults headerIconDefaults */ public void setHeaderIconDefaults(Map headerIconDefaults) { setAttribute("headerIconDefaults", headerIconDefaults, true); setShowHeaderIcon(true); } public void setHeaderIconProperties(Map headerIconProperties) { setAttribute("headerIconProperties", headerIconProperties, true); setShowHeaderIcon(true); } /** * Sets the Window header icon. * * @param imgSrc the icon image source */ public void setHeaderIcon(String imgSrc) { Map map = new HashMap(); map.put("src", imgSrc); setHeaderIconProperties(map); } /** * Sets the Window header icon. * * @param imgSrc the icon image source * @param width the icon width. default 16 * @param height the icon height. default 14 */ public void setHeaderIcon(String imgSrc, int width, int height) { Map map = new HashMap(); map.put("src", imgSrc); map.put("width", width); map.put("height", height); setHeaderIconProperties(map); } /** * Array of members to show in the Window header. <pb> The default value of headerControls is an Array of {@link * com.smartgwt.client.types.HeaderControls} listing the standard header controls in their default order: <br> * headerControls : [HeaderControls.HEADER_ICON, HeaderControls.HEADER_LABEL, HeaderControls.MINIMIZE_BUTTON, * HeaderControls.MAXIMIZE_BUTTON, HeaderControls.CLOSE_BUTTON] <br> * <p/> * You can set headerControls to change the order of standard controls in the header. You can also omit standard * controls this way, although it more efficient to use the related "show" property if available (eg * Window.showMinimizeButton). <br> By embedding a Canvas directly in this list you can add arbitrary additional * controls to the header, for example, an additional button (eg return to dock) or a DynamicForm with various kinds * of input controls. Tip: custom controls need to set layoutAlign:"center" to appear vertically centered. * * @param headerControls an array containing either HeaderControl enums values or Canvas instances * @see com.smartgwt.client.types.HeaderControls */ public void setHeaderControls(Object... headerControls) { setAttribute("headerControls", headerControls, false); } /** * Array of members to show in the Window footer. <pb> The default value of headerControls is an Array of {@link * com.smartgwt.client.types.FooterControls} listing the standard footer controls in their default order: <br> * headerControls : [HeaderControls.SPACER, HeaderControls.RESIZER] <br> * <p/> * You can set footerControls to change the order of standard controls in the footer. You can also omit standard * controls this way, although it more efficient to use the related "show" property if available (eg * Window.showResizer). <br> By embedding a Canvas directly in this list you can add arbitrary additional * controls to the footer.<br> Note that the statusBar is not part of the set of footer controls - it is a * separate canvas rendered behind all footer controls. If you include some custom status bar * directly in the footerControls you may want to set +link{window.showFooter} to false. * Tip: custom controls need to set layoutAlign:"center" to appear vertically centered. * * @param footerControls an array containing either FooterControl enums values or Canvas instances * @see com.smartgwt.client.types.FooterControls */ public void setFooterControls(Object... footerControls) { setAttribute("footerControls", footerControls, false); } /** * If Window.canDragReposition or Window.canDragRShowcaseDataesize is true, should the windows size and position be * constrained such that it remains within the viewport of its parent element (or for top level windows, within the * viewport of the browser window)? Can also be set to an array denoting an arbitrary Rectangle beyond which the * window cannot be moved. <br> Note: keepInParentRect affects only user drag interactions, not programmatic moves. * * @param rectangle the rectangle bounds */ public void setKeepInParentRect(Rectangle rectangle) { setAttribute("keepInParentRect", rectangle.getAsJSArray(), true); } /** * The contents of the Window body. Can be specified three different ways: <ul> * <li>an Array of Canvases that will become the children of the Window's body when it is initialized; the canvases in this array should be created, but not drawn (autodraw: false).</li> * <li>a single canvas that will become a child of the Window body.</li> * <li>a string that will be set as the body's contents.</li> * </ul> * * @return items */ public Canvas[] getItems() { return Canvas.convertToCanvasArray(getAttributeAsJavaScriptObject("items")); } /** * Add a onMaximizeClick handler. * <p> * Notification method fired when the user clicks the 'maximize' button. * * @param handler the onMaximizeClick handler * @return {@link com.google.gwt.event.shared.HandlerRegistration} used to remove this handler */ public HandlerRegistration addMaximizeClickHandler(com.smartgwt.client.widgets.events.MaximizeClickHandler handler) { if(getHandlerCount(com.smartgwt.client.widgets.events.MaximizeClickEvent.getType()) == 0) setupMaximizeClickEvent(); return doAddHandler(handler, com.smartgwt.client.widgets.events.MaximizeClickEvent.getType()); } private native void setupMaximizeClickEvent() /*-{ var obj = null; var selfJ = this; if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) { obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()(); obj.addProperties({onMaximizeClick:$debox($entry(function(){ var param = {}; var event = @com.smartgwt.client.widgets.events.MaximizeClickEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param); selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); var ret = event.@com.smartgwt.client.event.Cancellable::isCancelled()(); return !ret; })) }); } else { obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()(); obj.onMaximizeClick = $debox($entry(function(){ var param = {}; var event = @com.smartgwt.client.widgets.events.MaximizeClickEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param); selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); var ret = event.@com.smartgwt.client.event.Cancellable::isCancelled()(); return !ret; })); } }-*/; /** * Add a onMinimizeClick handler. * <p> * Notification method fired when the user clicks the 'minimize' button. * * @param handler the onMinimizeClick handler * @return {@link HandlerRegistration} used to remove this handler */ public HandlerRegistration addMinimizeClickHandler(com.smartgwt.client.widgets.events.MinimizeClickHandler handler) { if(getHandlerCount(com.smartgwt.client.widgets.events.MinimizeClickEvent.getType()) == 0) setupMinimizeClickEvent(); return doAddHandler(handler, com.smartgwt.client.widgets.events.MinimizeClickEvent.getType()); } private native void setupMinimizeClickEvent() /*-{ var obj = null; var selfJ = this; if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) { obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()(); obj.addProperties({onMinimizeClick:$debox($entry(function(){ var param = {}; var event = @com.smartgwt.client.widgets.events.MinimizeClickEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param); selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); var ret = event.@com.smartgwt.client.event.Cancellable::isCancelled()(); return !ret; })) }); } else { obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()(); obj.onMinimizeClick = $debox($entry(function(){ var param = {}; var event = @com.smartgwt.client.widgets.events.MinimizeClickEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param); selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); var ret = event.@com.smartgwt.client.event.Cancellable::isCancelled()(); return !ret; })); } }-*/; /** * Add a onRestoreClick handler. * <p> * Notification method fired when the user clicks the 'restore' button. * * @param handler the onRestoreClick handler * @return {@link HandlerRegistration} used to remove this handler */ public HandlerRegistration addRestoreClickHandler(com.smartgwt.client.widgets.events.RestoreClickHandler handler) { if(getHandlerCount(com.smartgwt.client.widgets.events.RestoreClickEvent.getType()) == 0) setupRestoreClickEvent(); return doAddHandler(handler, com.smartgwt.client.widgets.events.RestoreClickEvent.getType()); } private native void setupRestoreClickEvent() /*-{ var obj = null; var selfJ = this; if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) { obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()(); obj.addProperties({onRestoreClick:$debox($entry(function(){ var param = {}; var event = @com.smartgwt.client.widgets.events.RestoreClickEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param); selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); var ret = event.@com.smartgwt.client.event.Cancellable::isCancelled()(); return !ret; })) }); } else { obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()(); obj.onRestoreClick = $debox($entry(function(){ var param = {}; var event = @com.smartgwt.client.widgets.events.RestoreClickEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param); selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); var ret = event.@com.smartgwt.client.event.Cancellable::isCancelled()(); return !ret; })); } }-*/; /** * Preload primary window skin images */ public static native void preloadImages() /*-{ var skinImgDir = $wnd.isc.Window.getInstanceProperty('skinImgDir'); var canvasSkinImgDir = $wnd.isc.Canvas.getInstanceProperty('skinImgDir'); if($wnd.isc.Window.getInstanceProperty('showEdges')) { var edgeEdgeImage = $wnd.isc.Window.getInstanceProperty('edgeImage'); @com.smartgwt.client.util.FileLoader::cacheEdgeImages(Ljava/lang/String;Ljava/lang/String;)(skinImgDir,edgeEdgeImage) } if($wnd.isc.Window.getInstanceProperty('headerIconDefaults').src) { @com.smartgwt.client.util.FileLoader::cacheImg(Ljava/lang/String;Ljava/lang/String;)(canvasSkinImgDir, $wnd.isc.Window.getInstanceProperty('headerIconDefaults').src); } if($wnd.isc.Window.getInstanceProperty('restoreButtonDefaults').src) { @com.smartgwt.client.util.FileLoader::cacheImg(Ljava/lang/String;Ljava/lang/String;)(canvasSkinImgDir,$wnd.isc.Window.getInstanceProperty('restoreButtonDefaults').src); } if($wnd.isc.Window.getInstanceProperty('closeButtonDefaults').src) { @com.smartgwt.client.util.FileLoader::cacheImg(Ljava/lang/String;Ljava/lang/String;)(canvasSkinImgDir,$wnd.isc.Window.getInstanceProperty('closeButtonDefaults').src); } if($wnd.isc.Window.getInstanceProperty('maximizeButtonDefaults').src) { @com.smartgwt.client.util.FileLoader::cacheImg(Ljava/lang/String;Ljava/lang/String;)(canvasSkinImgDir,$wnd.isc.Window.getInstanceProperty('maximizeButtonDefaults').src); } if($wnd.isc.Window.getInstanceProperty('minimizeButtonDefaults').src) { @com.smartgwt.client.util.FileLoader::cacheImg(Ljava/lang/String;Ljava/lang/String;)(canvasSkinImgDir,$wnd.isc.Window.getInstanceProperty('minimizeButtonDefaults').src); } }-*/; }