/*
* � Copyright IBM Corp. 2010
*
* 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 com.ibm.xsp.extlib.component.outline;
import java.util.ArrayList;
import java.util.List;
import javax.faces.component.UIComponentBase;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import com.ibm.xsp.dojo.DojoAttribute;
import com.ibm.xsp.dojo.FacesDojoComponent;
import com.ibm.xsp.extlib.tree.ITree;
import com.ibm.xsp.extlib.tree.ITreeNode;
import com.ibm.xsp.extlib.tree.impl.TreeUtil;
import com.ibm.xsp.stylekit.StyleKitDefault;
import com.ibm.xsp.stylekit.ThemeControl;
import com.ibm.xsp.util.StateHolderUtil;
/**
*
* @author Philippe Riand
*/
public abstract class AbstractOutline extends UIComponentBase implements ThemeControl, FacesDojoComponent, ITree {
public static final String COMPONENT_TYPE = "com.ibm.xsp.extlib.outline.AbstractOutline"; //$NON-NLS-1$
public static final String COMPONENT_FAMILY = "com.ibm.xsp.extlib.Outline"; //$NON-NLS-1$
private String onItemClick;
private String style;
private String styleClass;
// Dynamic Dojo attributes
private String dojoType;
private List<DojoAttribute> dojoAttributes;
// Tree
private List<ITreeNode> treeNodes;
public AbstractOutline() {
}
public String getStyle() {
if (null != this.style) {
return this.style;
}
ValueBinding _vb = getValueBinding("style"); //$NON-NLS-1$
if (_vb != null) {
return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance());
} else {
return null;
}
}
public void setStyle(String style) {
this.style = style;
}
public String getStyleClass() {
if (null != this.styleClass) {
return this.styleClass;
}
ValueBinding _vb = getValueBinding("styleClass"); //$NON-NLS-1$
if (_vb != null) {
return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance());
} else {
return null;
}
}
public void setStyleClass(String styleClass) {
this.styleClass = styleClass;
}
public ITree findTree() {
return this;
}
/*
* (non-Javadoc)
*
* @see javax.faces.component.UIPanel#getFamily()
*/
@Override
public String getFamily() {
return COMPONENT_FAMILY;
}
/*
* (non-Javadoc)
*
* @see com.ibm.xsp.stylekit.ThemeControl#getStyleKitFamily()
*/
public String getStyleKitFamily() {
return (StyleKitDefault.OUTLINE);
}
public ITreeNode.NodeIterator iterateChildren(int start, int count) {
return TreeUtil.getIterator(treeNodes, start, count);
}
public List<ITreeNode> getTreeNodes() {
return treeNodes;
}
public void addNode(ITreeNode node) {
if(treeNodes==null) {
treeNodes = new ArrayList<ITreeNode>();
}
treeNodes.add(node);
}
public String getOnItemClick() {
if (null != this.onItemClick) {
return this.onItemClick;
}
ValueBinding _vb = getValueBinding("onItemClick"); //$NON-NLS-1$
if (_vb != null) {
return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance());
} else {
return null;
}
}
public void setOnItemClick(String onItemClick) {
this.onItemClick = onItemClick;
}
public java.lang.String getDojoType() {
if (null != this.dojoType) {
return this.dojoType;
}
ValueBinding _vb = getValueBinding("dojoType"); //$NON-NLS-1$
if (_vb != null) {
return (java.lang.String) _vb.getValue(getFacesContext());
} else {
return null;
}
}
public void setDojoType(java.lang.String dojoType) {
this.dojoType = dojoType;
}
public List<DojoAttribute> getDojoAttributes() {
return this.dojoAttributes;
}
public void addDojoAttribute(DojoAttribute attribute) {
if(dojoAttributes==null) {
dojoAttributes = new ArrayList<DojoAttribute>();
}
dojoAttributes.add(attribute);
}
public void setDojoAttributes(List<DojoAttribute> dojoAttributes) {
this.dojoAttributes = dojoAttributes;
}
/*
* (non-Javadoc)
*
* @see
* javax.faces.component.UIComponentBase#restoreState(javax.faces.context
* .FacesContext, java.lang.Object)
*/
@Override
public void restoreState(FacesContext _context, Object _state) {
Object _values[] = (Object[]) _state;
super.restoreState(_context, _values[0]);
this.style = (java.lang.String) _values[1];
this.styleClass = (java.lang.String) _values[2];
this.onItemClick = (java.lang.String) _values[3];
this.treeNodes = StateHolderUtil.restoreList(_context, this, _values[4]);
this.dojoType = (java.lang.String) _values[5];
this.dojoAttributes = StateHolderUtil.restoreList(_context, this, _values[6]);
}
/*
* (non-Javadoc)
*
* @seejavax.faces.component.UIComponentBase#saveState(javax.faces.context.
* FacesContext)
*/
@Override
public Object saveState(FacesContext _context) {
Object _values[] = new Object[8];
_values[0] = super.saveState(_context);
_values[1] = style;
_values[2] = styleClass;
_values[3] = onItemClick;
_values[4] = StateHolderUtil.saveList(_context, treeNodes);
_values[5] = dojoType;
_values[6] = StateHolderUtil.saveList(_context, dojoAttributes);
return _values;
}
}