/*
* 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.form.fields;
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;
/**
* Header item for a collapsible section in a {@link com.smartgwt.client.widgets.form.DynamicForm}. Each
* <code>SectionItem</code> is associated with a number of other <code>item</code>s in the form, which will be shown or
* hidden as a group when the section is expanded or collapsed. Clicking on a <code>SectionItem</code> will expand or
* collapse the section. <P> To make a form where only one section is expanded at a time, set {@link
* com.smartgwt.client.widgets.form.DynamicForm#getSectionVisibilityMode sectionVisibilityMode} to "mutex".
* @see com.smartgwt.client.widgets.form.DynamicForm#getSectionVisibilityMode
*/
public class SectionItem extends CanvasItem {
public static SectionItem getOrCreateRef(JavaScriptObject jsObj) {
if(jsObj == null) return null;
RefDataClass obj = RefDataClass.getRef(jsObj);
if(obj != null) {
obj.setJsObj(jsObj);
return (SectionItem) obj;
} else {
return new SectionItem(jsObj);
}
}
public SectionItem(){
setAttribute("editorType", "SectionItem");
}
public SectionItem(JavaScriptObject jsObj){
super(jsObj);
}
public SectionItem(String name) {
setName(name);
setAttribute("editorType", "SectionItem");
}
public SectionItem(String name, String title) {
setName(name);
setTitle(title);
setAttribute("editorType", "SectionItem");
}
// ********************* Properties / Attributes ***********************
/**
* Whether this section header can be collapsed. If set false, suppresses open/close state icon
*
* @param canCollapse canCollapse Default value is true
*/
public void setCanCollapse(Boolean canCollapse) {
setAttribute("canCollapse", canCollapse);
}
/**
* Whether this section header can be collapsed. If set false, suppresses open/close state icon
*
*
* @return Boolean
*/
public Boolean getCanCollapse() {
return getAttributeAsBoolean("canCollapse");
}
/**
* If true, the header for this Section will be included in the page's tab order for accessibility. May also be set at the
* {@link com.smartgwt.client.widgets.form.DynamicForm} level via {@link
* com.smartgwt.client.widgets.form.DynamicForm#getCanTabToSectionHeaders canTabToSectionHeaders}. <P> See {@link
* com.smartgwt.client.docs.Accessibility}.
*
* @param canTabToHeader canTabToHeader Default value is null
*/
public void setCanTabToHeader(Boolean canTabToHeader) {
setAttribute("canTabToHeader", canTabToHeader);
}
/**
* If true, the header for this Section will be included in the page's tab order for accessibility. May also be set at the
* {@link com.smartgwt.client.widgets.form.DynamicForm} level via {@link
* com.smartgwt.client.widgets.form.DynamicForm#getCanTabToSectionHeaders canTabToSectionHeaders}. <P> See {@link
* com.smartgwt.client.docs.Accessibility}.
*
*
* @return Boolean
*/
public Boolean getCanTabToHeader() {
return getAttributeAsBoolean("canTabToHeader");
}
/**
* Whether this form section should be initially collapsed. Can be set programmatically via {@link
* com.smartgwt.client.widgets.form.fields.SectionItem#expandSection SectionItem.expandSection} and {@link
* com.smartgwt.client.widgets.form.fields.SectionItem#collapseSection SectionItem.collapseSection}.
*
* @param sectionExpanded sectionExpanded Default value is true
* @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_form_sections" target="examples">Sections Example</a>
*/
public void setSectionExpanded(Boolean sectionExpanded) {
setAttribute("sectionExpanded", sectionExpanded);
}
/**
* Whether this form section should be initially collapsed. Can be set programmatically via {@link
* com.smartgwt.client.widgets.form.fields.SectionItem#expandSection SectionItem.expandSection} and {@link
* com.smartgwt.client.widgets.form.fields.SectionItem#collapseSection SectionItem.collapseSection}.
*
*
* @return Boolean
* @see <a href="http://www.smartclient.com/smartgwt/showcase/#layout_form_sections" target="examples">Sections Example</a>
*/
public Boolean getSectionExpanded() {
return getAttributeAsBoolean("sectionExpanded");
}
/**
* Name of the Canvas subclass to use as a header that labels the section and allows showing and hiding. The default class
* be skinned, or trivial subclasses created to allow different appearances for SectionItems in different forms. Very
* advanced developers can use the following information to create custom header classes.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param sectionHeaderClass sectionHeaderClass Default value is "SectionHeader"
*/
public void setSectionHeaderClass(String sectionHeaderClass) {
setAttribute("sectionHeaderClass", sectionHeaderClass);
}
/**
* Name of the Canvas subclass to use as a header that labels the section and allows showing and hiding. The default class
* be skinned, or trivial subclasses created to allow different appearances for SectionItems in different forms. Very
* advanced developers can use the following information to create custom header classes.
*
*
* @return String
*/
public String getSectionHeaderClass() {
return getAttributeAsString("sectionHeaderClass");
}
// ********************* Methods ***********************
/**
* Collapse a sectionItem, and hide all the items within the section (not including the header).
*/
public native void collapseSection() /*-{
var self = this.@com.smartgwt.client.core.DataClass::getJsObj()();
self.collapseSection();
}-*/;
/**
* Expands a section, showing all the items contained within the section.
*/
public native void expandSection() /*-{
var self = this.@com.smartgwt.client.core.DataClass::getJsObj()();
self.expandSection();
}-*/;
/**
* Returns a boolean indicating whether this SectionItem is expanded.
*
* @return true if the section is expanded false if not
*/
public native Boolean isExpanded() /*-{
var self = this.@com.smartgwt.client.core.DataClass::getJsObj()();
var retVal =self.isExpanded();
if(retVal == null || retVal === undefined) {
return null;
} else {
return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal);
}
}-*/;
// ********************* Static Methods ***********************
// ***********************************************************
/**
* IDs of the items that should be considered a member of this section.
*
* @param itemIds itemIds Default value is null
*/
public void setItemIds(String... itemIds) {
setAttribute("itemIds", itemIds);
}
}