From: <mb...@re...> - 2004-11-05 23:48:12
|
Author: mbooth Date: 2004-11-06 00:41:13 +0100 (Sat, 06 Nov 2004) New Revision: 85 Modified: ccm-core/trunk/src/com/arsdigita/formbuilder/PersistentProcessListener.java ccm-core/trunk/src/com/arsdigita/formbuilder/ui/editors/TemplateEmailForm.java Log: Display a list of available substitution values in templated email form. Modified: ccm-core/trunk/src/com/arsdigita/formbuilder/PersistentProcessListener.java =================================================================== --- ccm-core/trunk/src/com/arsdigita/formbuilder/PersistentProcessListener.java 2004-11-05 23:38:51 UTC (rev 84) +++ ccm-core/trunk/src/com/arsdigita/formbuilder/PersistentProcessListener.java 2004-11-05 23:41:13 UTC (rev 85) @@ -20,10 +20,11 @@ import com.arsdigita.kernel.ACSObject; +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; -import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.metadata.ObjectType; -import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.bebop.event.FormProcessListener; @@ -39,6 +40,7 @@ public static final String NAME = "name"; public static final String DESCRIPTION = "description"; public static final String LISTENER_CLASS = "listenerClass"; + public static final String FORM = "form"; public PersistentProcessListener(String typeName) { super(typeName); @@ -115,4 +117,12 @@ public String getDescription() { return (String)get(DESCRIPTION); } + + /** + * Return the PersistentFormSection associated with this listener + */ + public PersistentFormSection getForm() { + DataObject obj = (DataObject) get( FORM ); + return (PersistentFormSection) DomainObjectFactory.newInstance( obj ); + } } Modified: ccm-core/trunk/src/com/arsdigita/formbuilder/ui/editors/TemplateEmailForm.java =================================================================== --- ccm-core/trunk/src/com/arsdigita/formbuilder/ui/editors/TemplateEmailForm.java 2004-11-05 23:38:51 UTC (rev 84) +++ ccm-core/trunk/src/com/arsdigita/formbuilder/ui/editors/TemplateEmailForm.java 2004-11-05 23:41:13 UTC (rev 85) @@ -18,48 +18,56 @@ */ package com.arsdigita.formbuilder.ui.editors; - +import com.arsdigita.formbuilder.PersistentComponent; +import com.arsdigita.formbuilder.PersistentFormSection; +import com.arsdigita.formbuilder.PersistentProcessListener; +import com.arsdigita.formbuilder.PersistentWidget; +import com.arsdigita.formbuilder.actions.TemplateEmailListener; import com.arsdigita.formbuilder.util.GlobalizationUtil ; - -import com.arsdigita.formbuilder.actions.TemplateEmailListener; - +import com.arsdigita.bebop.ColumnPanel; import com.arsdigita.bebop.FormData; import com.arsdigita.bebop.FormProcessException; import com.arsdigita.bebop.FormSection; import com.arsdigita.bebop.Label; import com.arsdigita.bebop.PageState; - +import com.arsdigita.bebop.SingleSelectionModel; import com.arsdigita.bebop.event.FormSectionEvent; - +import com.arsdigita.bebop.event.PrintEvent; +import com.arsdigita.bebop.event.PrintListener; import com.arsdigita.bebop.form.TextArea; import com.arsdigita.bebop.form.TextField; - +import com.arsdigita.bebop.parameters.EmailParameter; +import com.arsdigita.bebop.parameters.NotNullValidationListener; +import com.arsdigita.bebop.parameters.StringInRangeValidationListener; import com.arsdigita.bebop.parameters.StringParameter; - import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.persistence.OID; +import com.arsdigita.util.Assert; - - import java.math.BigDecimal; +import java.util.Iterator; -import com.arsdigita.bebop.SingleSelectionModel; -import com.arsdigita.formbuilder.PersistentProcessListener; -import com.arsdigita.bebop.parameters.NotNullValidationListener; -import com.arsdigita.bebop.parameters.StringInRangeValidationListener; -import com.arsdigita.bebop.parameters.EmailParameter; -import com.arsdigita.bebop.ColumnPanel; +import org.apache.log4j.Logger; - public class TemplateEmailForm extends ProcessListenerForm { private TextField m_to; private TextField m_subject; private TextArea m_body; + private Label m_bodyLabel; + private SingleSelectionModel m_form; + + private static final Logger s_log = + Logger.getLogger( TemplateEmailForm.class ); + public TemplateEmailForm(String name, SingleSelectionModel form, SingleSelectionModel action) { super(name, form, action); + + m_form = form; } protected void addWidgets(FormSection section) { @@ -84,7 +92,45 @@ m_body.setRows(20); m_body.addValidationListener(new NotNullValidationListener()); m_body.addValidationListener(new StringInRangeValidationListener(1, 4000)); - section.add(new Label(GlobalizationUtil.globalize("formbuilder.ui.editors.body")), ColumnPanel.RIGHT); + + m_bodyLabel = new Label(new PrintListener() { + public void prepare( PrintEvent ev ) { + PageState state = ev.getPageState(); + Label target = (Label) ev.getTarget(); + + BigDecimal formID = (BigDecimal) m_form.getSelectedKey( state ); + Assert.exists( formID, BigDecimal.class ); + + OID formOID = new OID( PersistentFormSection.BASE_DATA_OBJECT_TYPE, + formID ); + + PersistentFormSection form = (PersistentFormSection) + DomainObjectFactory.newInstance( formOID ); + + StringBuffer buf = new StringBuffer(); + buf.append( GlobalizationUtil.globalize("formbuilder.ui.editors.body").localize( state.getRequest() ) ); + buf.append( "<ul>" ); + + Iterator components = form.getComponents().iterator(); + while( components.hasNext() ) { + PersistentComponent c = (PersistentComponent) components.next(); + + if( c instanceof PersistentWidget ) { + PersistentWidget w = (PersistentWidget) c; + + buf.append( "<li>::form." ); + buf.append( w.getParameterName() ); + buf.append( "::</li>" ); + } + } + buf.append( "</ul>" ); + + target.setLabel( buf.toString() ); + } + }); + m_bodyLabel.setOutputEscaping( false ); + + section.add(m_bodyLabel, ColumnPanel.RIGHT); section.add(m_body); } |