From: <mb...@re...> - 2004-12-15 23:42:28
|
Author: mbooth Date: 2004-12-16 00:33:49 +0100 (Thu, 16 Dec 2004) New Revision: 153 Modified: ccm-core/trunk/src/com/arsdigita/formbuilder/PersistentFormSection.java ccm-core/trunk/src/com/arsdigita/formbuilder/ui/ProcessListenerEditor.java Log: Fix a bug when deleting form actions. Somebody already wrote the code to recalculate action positions, but it wasn't being called. Modified: ccm-core/trunk/src/com/arsdigita/formbuilder/PersistentFormSection.java =================================================================== --- ccm-core/trunk/src/com/arsdigita/formbuilder/PersistentFormSection.java 2004-12-15 22:33:54 UTC (rev 152) +++ ccm-core/trunk/src/com/arsdigita/formbuilder/PersistentFormSection.java 2004-12-15 23:33:49 UTC (rev 153) @@ -343,6 +343,9 @@ remove("listeners", listener); m_listeners.remove(position); + + if( s_log.isDebugEnabled() ) + s_log.debug( "Removing process listener at position " + position ); DataAssociation listeners = (DataAssociation)get("listeners"); DataAssociationCursor cursor = listeners.cursor(); @@ -351,6 +354,10 @@ while (cursor.next()) { DataObject link = cursor.getLink(); BigDecimal current = (BigDecimal)link.get("position"); + if( s_log.isDebugEnabled() ) { + s_log.debug( "Position " + current ); + } + if (current.intValue() > position) { link.set("position", new BigDecimal(current.intValue() - 1)); } Modified: ccm-core/trunk/src/com/arsdigita/formbuilder/ui/ProcessListenerEditor.java =================================================================== --- ccm-core/trunk/src/com/arsdigita/formbuilder/ui/ProcessListenerEditor.java 2004-12-15 22:33:54 UTC (rev 152) +++ ccm-core/trunk/src/com/arsdigita/formbuilder/ui/ProcessListenerEditor.java 2004-12-15 23:33:49 UTC (rev 153) @@ -21,35 +21,33 @@ import com.arsdigita.formbuilder.util.GlobalizationUtil ; -import com.arsdigita.bebop.event.FormProcessListener; +import com.arsdigita.formbuilder.PersistentFormSection; +import com.arsdigita.formbuilder.PersistentProcessListener; +import com.arsdigita.formbuilder.util.FormBuilderUtil; + +import com.arsdigita.bebop.BoxPanel; +import com.arsdigita.bebop.Component; +import com.arsdigita.bebop.ControlLink; +import com.arsdigita.bebop.FormProcessException; import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.event.FormSectionEvent; -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.Table; -import com.arsdigita.formbuilder.ui.ProcessListenerProperties; -import com.arsdigita.domain.DataObjectNotFoundException; -import com.arsdigita.domain.DomainObjectFactory; -import com.arsdigita.persistence.OID; -import com.arsdigita.util.UncheckedWrapperException; +import com.arsdigita.bebop.Link; import com.arsdigita.bebop.Page; -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.table.TableCellRenderer; import com.arsdigita.bebop.PageState; -import com.arsdigita.formbuilder.PersistentProcessListener; -import com.arsdigita.formbuilder.ui.NewAction; -import com.arsdigita.formbuilder.ui.ProcessListenerTableModelBuilder; -import com.arsdigita.formbuilder.util.FormBuilderUtil; import com.arsdigita.bebop.SimpleContainer; -import com.arsdigita.bebop.ControlLink; import com.arsdigita.bebop.SingleSelectionModel; +import com.arsdigita.bebop.Table; +import com.arsdigita.bebop.event.FormProcessListener; +import com.arsdigita.bebop.event.FormSectionEvent; import com.arsdigita.bebop.event.TableActionEvent; import com.arsdigita.bebop.event.TableActionListener; +import com.arsdigita.bebop.table.TableCellRenderer; +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.persistence.OID; +import com.arsdigita.util.UncheckedWrapperException; + import java.math.BigDecimal; -import com.arsdigita.bebop.Link; -import com.arsdigita.bebop.Label; - /** * This class provides a pluggable widget for editing the * persistent process listeners for a persistent form. It @@ -190,11 +188,17 @@ BigDecimal action_id = (BigDecimal)m_action.getSelectedKey(state); try { + BigDecimal formID = (BigDecimal) + m_form.getSelectedKey( state ); + PersistentFormSection form = + new PersistentFormSection( formID ); + PersistentProcessListener l = (PersistentProcessListener) DomainObjectFactory.newInstance( new OID(PersistentProcessListener.BASE_DATA_OBJECT_TYPE, action_id)); - l.delete(); + //l.delete(); + form.removeProcessListener( l ); } catch (DataObjectNotFoundException ex) { throw new UncheckedWrapperException("cannot find listener", ex); } |