001: /*
002: * GWT-Ext Widget Library
003: * Copyright(c) 2007-2008, GWT-Ext.
004: * licensing@gwt-ext.com
005: *
006: * http://www.gwt-ext.com/license
007: */
008: package com.gwtext.client.widgets.layout;
009:
010: import com.google.gwt.core.client.JavaScriptObject;
011: import com.gwtext.client.util.JavaScriptObjectHelper;
012:
013: /**
014: * This is a layout that contains multiple panels in an expandable accordion style such that only one panel can be open
015: * at any given time. Each panel has built-in support for expanding and collapsing.
016: * <br>
017: * <b>Note that child Panels added to a Panel with an AccordionLayout must have a title.</b>
018: */
019: public class AccordionLayout extends FitLayout {
020:
021: /**
022: * Create a new Accordion.
023: */
024: public AccordionLayout() {
025: }
026:
027: /**
028: * Create a new Accordion.
029: *
030: * @param animate true to animate
031: */
032: public AccordionLayout(boolean animate) {
033: setAnimate(animate);
034: }
035:
036: /**
037: * True to swap the position of each panel as it is expanded so that it becomes the first item in the container, false to keep the panels in the rendered order. This is NOT compatible with "animate:true" (defaults to false).
038: *
039: * @param activeOnTop true to swap the position of each panel as it is expanded
040: */
041: public void setActiveOnTop(boolean activeOnTop) {
042: JavaScriptObjectHelper.setAttribute(configJS, "activeOnTop",
043: activeOnTop);
044: }
045:
046: /**
047: * True to slide the contained panels open and closed during expand/collapse using animation, false to open and close
048: * directly with no animation (defaults to false). Note: to defer to the specific config setting of each contained panel
049: * for this property, set this to undefined at the layout level.
050: *
051: * @param animate true to animate
052: */
053: public void setAnimate(boolean animate) {
054: JavaScriptObjectHelper.setAttribute(configJS, "animate",
055: animate);
056: }
057:
058: /**
059: * True to set each contained item's width to 'auto', false to use the item's current width (defaults to true).
060: *
061: * @param autoWidth true to set each contained item's width to 'auto'
062: */
063: public void setAutoWidth(boolean autoWidth) {
064: JavaScriptObjectHelper.setAttribute(configJS, "autoWidth",
065: autoWidth);
066: }
067:
068: /**
069: * True to make sure the collapse/expand toggle button always renders first (to the left of) any other tools in the
070: * contained panels' title bars, false to render it last (defaults to false).
071: *
072: * @param collapseFirst true to make sure the collapse/expand toggle button always renders first
073: */
074: public void setCollapseFirst(boolean collapseFirst) {
075: JavaScriptObjectHelper.setAttribute(configJS, "collapseFirst",
076: collapseFirst);
077: }
078:
079: /**
080: * True to adjust the active item's height to fill the available space in the container, false to use the item's
081: * current height, or auto height if not explicitly set (defaults to true).
082: *
083: * @param fill true to adjust the active item's height to fill the available space in the container
084: */
085: public void setFill(boolean fill) {
086: JavaScriptObjectHelper.setAttribute(configJS, "fill", fill);
087: }
088:
089: /**
090: * True to hide the contained panels' collapse/expand toggle buttons, false to display them (defaults to false).
091: * When set to true, {@link #setTitleCollapse} should be true also.
092: *
093: * @param hideCollapseTool true to hide the contained panels' collapse/expand toggle buttons
094: */
095: public void setHideCollapseTool(boolean hideCollapseTool) {
096: JavaScriptObjectHelper.setAttribute(configJS,
097: "hideCollapseTool", hideCollapseTool);
098: }
099:
100: /**
101: * If animate is set to true, this will result in each animation running in sequence.
102: *
103: * @param sequence if animate is set to true, this will result in each animation running in sequence.
104: */
105: public void setSequence(boolean sequence) {
106: JavaScriptObjectHelper.setAttribute(configJS, "sequence",
107: sequence);
108: }
109:
110: /**
111: * True to allow expand/collapse of each contained panel by clicking anywhere on the title bar, false to allow expand/collapse
112: * only when the toggle tool button is clicked (defaults to true). When set to false, {@link #setHideCollapseTool} should be false also.
113: *
114: * @param titleCollapse true to allow expand/collapse of each contained panel by clicking anywhere on the title bar
115: */
116: public void setTitleCollapse(boolean titleCollapse) {
117: JavaScriptObjectHelper.setAttribute(configJS, "titleCollapse",
118: titleCollapse);
119: }
120:
121: protected native JavaScriptObject create(JavaScriptObject config) /*-{
122: return new $wnd.Ext.layout.Accordion(config);
123: }-*/;
124: }
|