package com.idega.presentation.web2;
import java.util.ArrayList;
import java.util.List;
import javax.faces.component.UIComponent;
import com.idega.block.web2.business.Web2Business;
import com.idega.presentation.Block;
import com.idega.presentation.IWContext;
import com.idega.presentation.Layer;
import com.idega.presentation.text.ListItem;
import com.idega.presentation.text.Lists;
import com.idega.util.CoreUtil;
import com.idega.util.ListUtil;
import com.idega.util.PresentationUtil;
import com.idega.util.expression.ELUtil;
public class DynamicTree extends Block {
private boolean usesXmlDataTypes;
private boolean usesMetadataRules;
private boolean usesCookies;
private UIComponent rootNode;
private List<UIComponent> treeNodes;
@Override
public void main(IWContext iwc) {
Layer container = new Layer();
add(container);
Layer treeContainer = new Layer();
container.add(treeContainer);
String treeContainerId = treeContainer.getId();
StringBuilder initAction = new StringBuilder("jQuery('#").append(treeContainerId).append("').tree(").append(getOptions()).append(");");
if (!CoreUtil.isSingleComponentRenderingProcess(iwc)) {
initAction = new StringBuilder("jQuery(window).load(function() {").append(initAction.toString()).append("});");
}
PresentationUtil.addJavaScriptActionToBody(iwc, initAction.toString());
addRequiredLibraries(iwc);
renderTree(iwc, treeContainer);
}
private void renderTree(IWContext iwc, Layer container) {
if (rootNode == null) {
return;
}
Lists list = new Lists();
container.add(list);
ListItem root = new ListItem();
list.add(root);
root.add(rootNode);
if (ListUtil.isEmpty(treeNodes)) {
return;
}
Lists childNodes = new Lists();
root.add(childNodes);
ListItem childNode = null;
for (UIComponent treeNode: treeNodes) {
childNode = new ListItem();
childNodes.add(childNode);
childNode.add(treeNode);
}
}
private String getOptions() {
StringBuilder options = new StringBuilder("[{}]");
// TODO
return options.toString();
}
public void addTreeNode(UIComponent component) {
if (component == null) {
return;
}
if (treeNodes == null) {
treeNodes = new ArrayList<UIComponent>();
}
treeNodes.add(component);
}
private void addRequiredLibraries(IWContext iwc) {
Web2Business web2 = ELUtil.getInstance().getBean(Web2Business.SPRING_BEAN_IDENTIFIER);
PresentationUtil.addStyleSheetToHeader(iwc, web2.getBundleURIToJSTreeStyleFile());
PresentationUtil.addJavaScriptSourcesLinesToHeader(iwc, web2.getBundleURIsToJSTreeScriptFiles(isUsesXmlDataTypes(), isUsesMetadataRules(), isUsesCookies()));
}
public boolean isUsesXmlDataTypes() {
return usesXmlDataTypes;
}
public void setUsesXmlDataTypes(boolean usesXmlDataTypes) {
this.usesXmlDataTypes = usesXmlDataTypes;
}
public boolean isUsesMetadataRules() {
return usesMetadataRules;
}
public void setUsesMetadataRules(boolean usesMetadataRules) {
this.usesMetadataRules = usesMetadataRules;
}
public boolean isUsesCookies() {
return usesCookies;
}
public void setUsesCookies(boolean usesCookies) {
this.usesCookies = usesCookies;
}
public UIComponent getRootNode() {
return rootNode;
}
public void setRootNode(UIComponent rootNode) {
this.rootNode = rootNode;
}
public List<UIComponent> getTreeNodes() {
return treeNodes;
}
public void setTreeNodes(List<UIComponent> treeNodes) {
this.treeNodes = treeNodes;
}
}