package com.idega.content.presentation; import java.io.IOException; import java.util.Collection; import java.util.Iterator; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import org.apache.myfaces.custom.savestate.UISaveState; import com.idega.content.bean.ContentPathBean; import com.idega.content.business.ContentConstants; import com.idega.presentation.IWBaseComponent; import com.idega.util.CoreConstants; import com.idega.webface.WFList; import com.idega.webface.WFUtil; /** * @author gimmi * * Component that lists up a content of a WebDAV folder */ public class WebDAVList extends IWBaseComponent { public final static String WEB_DAV_LIST_BEAN_ID = "WebDAVListBean"; private String startFolder = null; private String rootFolder = null; private String iconTheme = null; private boolean showFolders = true; private boolean showPublicFolder = true; private boolean showDropboxFolder = true; private Collection<String> columnsToHide = null; private boolean useVersionControl = true; private String onFileClickEvent = null; public WebDAVList() { } @Override protected void initializeComponent(FacesContext context) { Object o = WFUtil.invoke(ContentPathBean.BEAN_ID, "getPath"); String pathFromContent = null; if (o instanceof String) { pathFromContent = (String) o; if (!ContentConstants.EMPTY.equals(pathFromContent)) { setStartFolder(pathFromContent); } } WebDAVListManagedBean bean = getWebDAVListManagedBean(); if (this.startFolder != null) { bean.setStartFolder(this.startFolder); } else { bean.setStartFolder(CoreConstants.EMPTY); } if (this.rootFolder != null) { bean.setRootFolder(this.rootFolder); } else { bean.setRootFolder(CoreConstants.EMPTY); } if (this.iconTheme != null) { bean.setIconTheme(this.iconTheme); } else { bean.setIconTheme(CoreConstants.EMPTY); } if (this.onFileClickEvent != null) { bean.setOnFileClickEvent(this.onFileClickEvent); } else { bean.setOnFileClickEvent(CoreConstants.EMPTY); } bean.setShowFolders(new Boolean(this.showFolders)); bean.setShowPublicFolder(new Boolean(this.showPublicFolder)); bean.setShowDropboxFolder(new Boolean(this.showDropboxFolder)); if (this.columnsToHide != null) { bean.addColumnsToHide(this.columnsToHide); } bean.setUseVersionControl(new Boolean(this.useVersionControl)); this.setId(this.getId()); WFList list = new WFList(WEB_DAV_LIST_BEAN_ID, 0, 0); list.setBodyScrollable(true); list.setId(this.getId()+"_l"); add(list); // To make this object request safe, extension from myfaces. Ask Tryggvi UISaveState beanSaveState = new UISaveState(); beanSaveState.setValueExpression("value", WFUtil.createValueExpression(context.getELContext(), "#{".concat(WEB_DAV_LIST_BEAN_ID).concat(".dataModel}"), Object.class)); beanSaveState.setId("WebDavListBeanSaveState"); add(beanSaveState); } protected WebDAVListManagedBean getWebDAVListManagedBean(){ return WFUtil.getBeanInstance(WEB_DAV_LIST_BEAN_ID, WebDAVListManagedBean.class); } public void setStartFolder(String start) { this.startFolder = start; } public void setRootFolder(String root) { this.rootFolder = root; } public void setIconTheme(String theme) { this.iconTheme = theme; } public void setShowFolders(boolean showFolders) { this.showFolders = showFolders; } public void setShowPublicFolder(boolean showPublicFolder){ this.showPublicFolder = showPublicFolder; } public void setShowDropboxFolder(boolean showDropboxFolder){ this.showDropboxFolder = showDropboxFolder; } public void setColumnsToHide(Collection<String> columns) { this.columnsToHide = columns; } public void setUseVersionControl(boolean useVersionControl) { this.useVersionControl = useVersionControl; } public void setOnFileClickEvent(String event) { this.onFileClickEvent = event; } @Override public void encodeChildren(FacesContext context) throws IOException{ super.encodeChildren(context); for (Iterator<UIComponent> iter = getChildren().iterator(); iter.hasNext();) { UIComponent child = iter.next(); renderChild(context,child); } } @Override public boolean getRendersChildren() { return true; } }