package com.idega.content.presentation;
import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import org.apache.commons.httpclient.HttpException;
import org.apache.myfaces.custom.htmlTag.HtmlTag;
import com.idega.slide.util.WebdavExtendedResource;
import com.idega.webface.WFUtil;
/**
* @author gimmi
*/
public class WebDAVFolderCreation extends ContentBlock implements ActionListener {
protected static final String PARAMETER_RESOURCE_PATH = "prp";
@Override
protected void initializeComponent(FacesContext context) {
WebdavExtendedResource res = getWebdavExtendedResource();
// Messages
HtmlTag messagesContainer = (HtmlTag) context.getApplication().createComponent(HtmlTag.COMPONENT_TYPE);
messagesContainer.setValue("div");
Boolean folderCreated = (Boolean) WFUtil.invoke("webdavfoldercreationbean", "getFolderCreated");
String errorMessage = (String) WFUtil.invoke("webdavfoldercreationbean", "getErrorMessage");
if (folderCreated == null) {
folderCreated = Boolean.FALSE;
}
if (errorMessage != null) {
HtmlOutputText txt = getBundle().getLocalizedText("folder_creation_failed");
txt.setStyleClass("wf_listtext");
messagesContainer.getChildren().add(WFUtil.getText(" = "+errorMessage, "wf_listtext"));
} else if (folderCreated.booleanValue()) {
ContentViewer viewer = (ContentViewer) getParent().getParent();
viewer.setRenderFlags(ContentViewer.ACTION_LIST);
HtmlOutputText txt = getBundle().getLocalizedText("folder_created");
txt.setStyleClass("wf_listtext");
messagesContainer.getChildren().add(txt);
}
getChildren().add(messagesContainer);
// Folder creation
HtmlTag creationContainer = (HtmlTag) context.getApplication().createComponent(HtmlTag.COMPONENT_TYPE);
creationContainer.setValue("div");
HtmlOutputText text = getBundle().getLocalizedText("name");
text.setId(getId()+"_txtN");
text.setStyleClass("wf_inputtext");
HtmlInputText folderName = (HtmlInputText) context.getApplication().createComponent(HtmlInputText.COMPONENT_TYPE);
folderName.setId(this.getId()+"_inpN");
folderName.setValueExpression("value", WFUtil.createValueExpression(context.getELContext(), "#{webdavfoldercreationbean.folderName}", String.class));
creationContainer.getChildren().add(text);
creationContainer.getChildren().add(folderName);
HtmlCommandButton save = (HtmlCommandButton) context.getApplication().createComponent(HtmlCommandButton.COMPONENT_TYPE);
save.setId(getId()+"_btnS");
save.getAttributes().put(PARAMETER_RESOURCE_PATH, res.getPath());
save = (HtmlCommandButton) getBundle().getLocalizedUIComponent("create", save);
save.addActionListener(WFUtil.getActionListener(context.getELContext(), "#{contentviewerbean.processAction}"));
creationContainer.getChildren().add(save);
getChildren().add(creationContainer);
}
private void createResource(String parentPath, String name) {
if (name != null) {
try {
if (name.charAt(0) != '/') {
name = "/"+name;
}
name = parentPath+name;
WebdavExtendedResource parent = getWebdavExentededResource(parentPath);
boolean folderCreated = parent.mkcolMethod(name);
String errorMessage = null;
if (!folderCreated) {
errorMessage = parent.getStatusMessage();
WFUtil.invoke("webdavfoldercreationbean", "setErrorMessage", errorMessage, String.class);
} else {
super.refreshList();
WFUtil.invoke("webdavfoldercreationbean", "setFolderCreated", new Boolean(folderCreated), Boolean.class);
// ContentViewer viewer = (ContentViewer) getParent().getParent();
// viewer.getFacet(ContentViewer.NEW_FOLDER).setRendered(false);
// viewer.setRenderFlags(ContentViewer.LIST);
ValueBinding vb = WFUtil.createValueBinding("#{webdavfoldercreationbean.folderName}");
vb.setValue(FacesContext.getCurrentInstance(), "");
}
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
protected boolean useFolders() {
return true;
}
public void processAction(ActionEvent event) throws AbortProcessingException {
UIComponent source = (UIComponent) event.getSource();
ContentViewer.maintainPathParameter(source.getAttributes(), PARAMETER_RESOURCE_PATH);
String newFolderName = (String) WFUtil.invoke("webdavfoldercreationbean", "getFolderName");
createResource(source.getAttributes().get(PARAMETER_RESOURCE_PATH).toString(), newFolderName);
}
}