127 lines
4.4 KiB
Java
Executable File
127 lines
4.4 KiB
Java
Executable File
package com.arsdigita.cms.docmgr.ui;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import org.apache.log4j.Logger;
|
|
|
|
import com.arsdigita.bebop.ColumnPanel;
|
|
import com.arsdigita.bebop.Form;
|
|
import com.arsdigita.bebop.FormData;
|
|
import com.arsdigita.bebop.FormProcessException;
|
|
import com.arsdigita.bebop.Label;
|
|
import com.arsdigita.bebop.PageState;
|
|
import com.arsdigita.bebop.SimpleContainer;
|
|
import com.arsdigita.bebop.event.FormInitListener;
|
|
import com.arsdigita.bebop.event.FormProcessListener;
|
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
|
import com.arsdigita.bebop.event.FormValidationListener;
|
|
import com.arsdigita.bebop.form.Submit;
|
|
import com.arsdigita.bebop.form.TextArea;
|
|
import com.arsdigita.bebop.form.TextField;
|
|
import com.arsdigita.bebop.parameters.BigDecimalParameter;
|
|
import com.arsdigita.bebop.parameters.StringParameter;
|
|
import com.arsdigita.cms.docmgr.DocFolder;
|
|
|
|
/**
|
|
* @author Peter Kopunec
|
|
*/
|
|
public class BrowseFolderEdit extends Form implements FormInitListener, FormValidationListener, FormProcessListener, DMConstants {
|
|
|
|
private static final Logger s_log = Logger.getLogger(BrowseFolderEdit.class);
|
|
|
|
private StringParameter m_FolderName;
|
|
private StringParameter m_FolderDesc;
|
|
private BrowsePane m_parent;
|
|
private BigDecimalParameter m_folderID;
|
|
private Submit m_submit;
|
|
private TextField m_FolderNameTF;
|
|
private TextArea m_FolderDescTA;
|
|
|
|
public BrowseFolderEdit(BrowsePane parent, BigDecimalParameter folderID) {
|
|
super("EditFolderForm", new ColumnPanel(2));
|
|
|
|
m_parent = parent;
|
|
m_folderID = folderID;
|
|
|
|
add(FOLDER_NAME_LABEL);
|
|
m_FolderName = new StringParameter(FOLDER_NAME);
|
|
// m_FolderName.addParameterListener(new StringLengthValidationListener(200));
|
|
m_FolderNameTF = new TextField(m_FolderName);
|
|
// m_FolderNameTF.addValidationListener(new NotEmptyValidationListener());
|
|
add(m_FolderNameTF);
|
|
|
|
add(FOLDER_DESCRIPTION_LABEL);
|
|
m_FolderDesc = new StringParameter(FOLDER_DESCRIPTION);
|
|
// m_FolderDesc.addParameterListener(new StringLengthValidationListener(4000));
|
|
m_FolderDescTA = new TextArea(m_FolderDesc);
|
|
m_FolderDescTA.setRows(10);
|
|
m_FolderDescTA.setCols(40);
|
|
add(m_FolderDescTA);
|
|
|
|
SimpleContainer sc = new SimpleContainer();
|
|
m_submit = new Submit("submit");
|
|
m_submit.setButtonLabel("Save");
|
|
sc.add(m_submit);
|
|
Submit cancel = new Submit(CANCEL);
|
|
sc.add(cancel);
|
|
|
|
add(new Label()); // spacer
|
|
add(sc, ColumnPanel.LEFT);
|
|
|
|
addInitListener(this);
|
|
addValidationListener(this);
|
|
addProcessListener(this);
|
|
}
|
|
|
|
public void init(FormSectionEvent e) {
|
|
s_log.debug("init");
|
|
PageState state = e.getPageState();
|
|
BigDecimal folderID = (BigDecimal) state.getValue(m_folderID);
|
|
DocFolder f = new DocFolder(folderID);
|
|
if (s_log.isDebugEnabled()) {
|
|
s_log.debug("init widgets: name=" + f.getTitle() + "; description=" + f.getDescription());
|
|
}
|
|
m_FolderNameTF.setValue(state, f.getTitle());
|
|
m_FolderDescTA.setValue(state, f.getDescription());
|
|
// state.setValue(m_FolderName, f.getName());
|
|
// state.setValue(m_FolderDesc, f.getDescription());
|
|
}
|
|
|
|
/**
|
|
* Validate the folder.
|
|
*/
|
|
public void validate(FormSectionEvent event) throws FormProcessException {
|
|
PageState state = event.getPageState();
|
|
if (m_submit.isSelected(state)) {
|
|
FormData data = event.getFormData();
|
|
String fname = (String) data.get(FOLDER_NAME);
|
|
if (fname == null || fname.trim().length() == 0) {
|
|
data.addError(FOLDER_NAME, "This parameter is required");
|
|
}
|
|
if (fname != null && fname.length() > 200) {
|
|
data.addError(FOLDER_NAME, "This parameter is too long. It must be fewer than 200 characters.");
|
|
}
|
|
|
|
String fDesc = (String) data.get(FOLDER_DESCRIPTION);
|
|
if (fDesc != null && fDesc.length() > 4000) {
|
|
data.addError(FOLDER_DESCRIPTION, "This parameter is too long. It must be fewer than 4000 characters.");
|
|
}
|
|
}
|
|
}
|
|
|
|
public void process(FormSectionEvent e) throws FormProcessException {
|
|
PageState state = e.getPageState();
|
|
if (m_submit.isSelected(state)) {
|
|
FormData data = e.getFormData();
|
|
String fname = (String) data.get(FOLDER_NAME);
|
|
String fdesc = (String) data.get(FOLDER_DESCRIPTION);
|
|
BigDecimal folderID = (BigDecimal) state.getValue(m_folderID);
|
|
DocFolder f = new DocFolder(folderID);
|
|
f.setTitle(fname);
|
|
f.setDescription(fdesc);
|
|
f.save();
|
|
}
|
|
m_parent.displayFolderContentPanel(state);
|
|
}
|
|
}
|