From: <pb...@fe...> - 2012-12-16 17:47:15
|
Author: pboy Date: 2012-12-16 17:47:04 +0000 (Sun, 16 Dec 2012) New Revision: 2377 Added: trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageComponentAttachListener.java trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentAbstractListener.java Removed: trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentAttachListener.java Modified: trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStep.java trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStepEdit.java trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentSelectListener.java trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageSelectPage.java trunk/ccm-cms/src/com/arsdigita/cms/ui/ImagesPane.java trunk/ccm-cms/src/com/arsdigita/cms/ui/SecurityPropertyEditor.java Log: ImageSelectPage & ImagePane: Various fixes (on behalf of quasimodo) Added: trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentAbstractListener.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentAbstractListener.java (rev 0) +++ trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentAbstractListener.java 2012-12-16 17:47:04 UTC (rev 2377) @@ -0,0 +1,92 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.ui; + +import com.arsdigita.bebop.Component; +import com.arsdigita.bebop.FormProcessException; +import com.arsdigita.bebop.MapComponentSelectionModel; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.event.FormInitListener; +import com.arsdigita.bebop.event.FormProcessListener; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.cms.ReusableImageAsset; +import java.util.Iterator; +import java.util.Map; +import org.apache.log4j.Logger; + +/** + * + * @author Sören Bernstein (quasimodo) <sbe...@ze...> + */ +public abstract class ImageComponentAbstractListener implements FormInitListener, FormProcessListener { + + private static final Logger s_log = Logger.getLogger(ImageComponentSelectListener.class); + MapComponentSelectionModel m_imageComponent; + + public ImageComponentAbstractListener(MapComponentSelectionModel imageComponent) { + super(); + m_imageComponent = imageComponent; + } + + public void init(FormSectionEvent event) + throws FormProcessException { + PageState ps = event.getPageState(); + if (!m_imageComponent.isSelected(ps)) { + setImageComponent(ps, ImageComponent.LIBRARY); + } + } + + public void process(FormSectionEvent event) throws FormProcessException { + PageState ps = event.getPageState(); + ImageComponent component = getImageComponent(ps); + + if (!component.getSaveCancelSection().getSaveButton().isSelected(ps)) { + return; + } + + ReusableImageAsset image = component.getImage(event); + + processImage(event, ps, component, image); + } + + protected abstract void processImage(FormSectionEvent event, PageState ps, ImageComponent component, ReusableImageAsset image); + + protected ImageComponent getImageComponent(PageState ps) { + if (!m_imageComponent.isSelected(ps)) { + if (s_log.isDebugEnabled()) { + s_log.debug("No component selected"); + s_log.debug("Selected: " + m_imageComponent.getComponent(ps)); + } + + m_imageComponent.setSelectedKey(ps, ImageComponent.UPLOAD); + } + + return (ImageComponent) m_imageComponent.getComponent(ps); + + } + + protected void setImageComponent(PageState ps, final String activeKey) { + m_imageComponent.setSelectedKey(ps, activeKey); + + if (s_log.isDebugEnabled()) { + s_log.debug("Selected component: " + activeKey); + } + + Map componentsMap = m_imageComponent.getComponentsMap(); + Iterator i = componentsMap.keySet().iterator(); + while (i.hasNext()) { + Object key = i.next(); + Component component = (Component) componentsMap.get(key); + + boolean isVisible = activeKey.equals(key); + + if (s_log.isDebugEnabled()) { + s_log.debug("Key: " + key + "; Visibility: " + isVisible); + } + + ps.setVisible(component, isVisible); + } + } +} Deleted: trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentAttachListener.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentAttachListener.java 2012-12-16 09:35:50 UTC (rev 2376) +++ trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentAttachListener.java 2012-12-16 17:47:04 UTC (rev 2377) @@ -1,116 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.arsdigita.cms.ui; - -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.MapComponentSelectionModel; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.event.FormInitListener; -import com.arsdigita.bebop.event.FormProcessListener; -import com.arsdigita.bebop.event.FormSectionEvent; -import com.arsdigita.cms.ReusableImageAsset; -import java.util.Iterator; -import java.util.Map; -import org.apache.log4j.Logger; - -/** - * - * @author Sören Bernstein (quasimodo) <sbe...@ze...> - */ -public class ImageComponentAttachListener implements FormInitListener, FormProcessListener { - - private static final Logger s_log = Logger.getLogger(ImageComponentSelectListener.class); - MapComponentSelectionModel m_imageComponent; - - public ImageComponentAttachListener(MapComponentSelectionModel imageComponent) { - super(); - m_imageComponent = imageComponent; - } - - public void init(FormSectionEvent event) - throws FormProcessException { - PageState ps = event.getPageState(); - setImageComponent(ps, ImageComponent.LIBRARY); - -// ItemImageAttachment attachment = m_imageStep.getAttachment(ps); -// if (null == attachment) { - // XXX: Do something -// } - } - - public void process(FormSectionEvent event) throws FormProcessException { - PageState ps = event.getPageState(); - ImageComponent component = getImageComponent(ps); - - if (!component.getSaveCancelSection().getSaveButton().isSelected(ps)) { - return; - } - - ReusableImageAsset image = component.getImage(event); - - -// ContentItem item = m_imageStep.getItem(ps); -// if (null == item) { -// s_log.error("No item selected in ImageStepEdit", -// new RuntimeException()); -// return; -// } - -// ItemImageAttachment attachment = m_imageStep.getAttachment(ps); -// if (null == attachment) { -// attachment = new ItemImageAttachment(item, image); -// } -// attachment.setCaption(component.getCaption(event)); - - // We only set the description and title based on the UI in - // the case where getIsImageStepDescriptionAndTitleShown is true. - // Otherwise, we leave this as the default value. This means - // existing values are not overwritten if the image is edited when - // isImageStepDescriptionAndTitleShown is false. -// if (ItemImageAttachment.getConfig().getIsImageStepDescriptionAndTitleShown()) { -// attachment.setDescription(component.getDescription(event)); -// attachment.setTitle(component.getTitle(event)); -// } -// attachment.setUseContext(component.getUseContext(event)); - } - - private ImageComponent getImageComponent(PageState ps) { - if (!m_imageComponent.isSelected(ps)) { - if (s_log.isDebugEnabled()) { - s_log.debug("No component selected"); - s_log.debug("Selected: " + m_imageComponent.getComponent(ps)); - } - - m_imageComponent.setSelectedKey(ps, ImageComponent.UPLOAD); - } - - return (ImageComponent) m_imageComponent.getComponent(ps); - - } - - private void setImageComponent(PageState ps, final String activeKey) { - m_imageComponent.setSelectedKey(ps, activeKey); - - if (s_log.isDebugEnabled()) { - s_log.debug("Selected component: " + activeKey); - } - - Map componentsMap = m_imageComponent.getComponentsMap(); - Iterator i = componentsMap.keySet().iterator(); - while (i.hasNext()) { - Object key = i.next(); - Component component = (Component) componentsMap.get(key); - - boolean isVisible = activeKey.equals(key); - - if (s_log.isDebugEnabled()) { - s_log.debug("Key: " + key + "; Visibility: " + isVisible); - } - - ps.setVisible(component, isVisible); - } - } -} Modified: trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentSelectListener.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentSelectListener.java 2012-12-16 09:35:50 UTC (rev 2376) +++ trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageComponentSelectListener.java 2012-12-16 17:47:04 UTC (rev 2377) @@ -4,51 +4,26 @@ */ package com.arsdigita.cms.ui; -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.FormProcessException; import com.arsdigita.bebop.MapComponentSelectionModel; import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.event.FormInitListener; -import com.arsdigita.bebop.event.FormProcessListener; import com.arsdigita.bebop.event.FormSectionEvent; import com.arsdigita.cms.ReusableImageAsset; import java.math.BigDecimal; -import java.util.Iterator; -import java.util.Map; import org.apache.log4j.Logger; /** * * @author Sören Bernstein (quasimodo) <sbe...@ze...> */ -public class ImageComponentSelectListener implements FormInitListener, FormProcessListener { +public class ImageComponentSelectListener extends ImageComponentAbstractListener { private static final Logger s_log = Logger.getLogger(ImageComponentSelectListener.class); - MapComponentSelectionModel m_imageComponent; public ImageComponentSelectListener(MapComponentSelectionModel imageComponent) { - super(); - m_imageComponent = imageComponent; + super(imageComponent); } - public void init(FormSectionEvent event) - throws FormProcessException { - PageState ps = event.getPageState(); - - this.m_imageComponent.getComponent(ps); - setImageComponent(ps, ImageComponent.LIBRARY); - } - - public void process(FormSectionEvent event) throws FormProcessException { - PageState ps = event.getPageState(); - ImageComponent component = getImageComponent(ps); - - if (!component.getSaveCancelSection().getSaveButton().isSelected(ps)) { - return; - } - - ReusableImageAsset image = component.getImage(event); - + protected void processImage(FormSectionEvent event, PageState ps, ImageComponent component, ReusableImageAsset image) { // SELECT { String name = image.getDisplayName(); BigDecimal id = image.getID(); @@ -56,41 +31,4 @@ BigDecimal height = image.getHeight(); // SELECT } } - - private ImageComponent getImageComponent(PageState ps) { - if (!m_imageComponent.isSelected(ps)) { - if (s_log.isDebugEnabled()) { - s_log.debug("No component selected"); - s_log.debug("Selected: " + m_imageComponent.getComponent(ps)); - } - - m_imageComponent.setSelectedKey(ps, ImageComponent.UPLOAD); - } - - return (ImageComponent) m_imageComponent.getComponent(ps); - - } - - private void setImageComponent(PageState ps, final String activeKey) { - m_imageComponent.setSelectedKey(ps, activeKey); - - if (s_log.isDebugEnabled()) { - s_log.debug("Selected component: " + activeKey); - } - - Map componentsMap = m_imageComponent.getComponentsMap(); - Iterator i = componentsMap.keySet().iterator(); - while (i.hasNext()) { - Object key = i.next(); - Component component = (Component) componentsMap.get(key); - - boolean isVisible = activeKey.equals(key); - - if (s_log.isDebugEnabled()) { - s_log.debug("Key: " + key + "; Visibility: " + isVisible); - } - - ps.setVisible(component, isVisible); - } - } } Modified: trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java 2012-12-16 09:35:50 UTC (rev 2376) +++ trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java 2012-12-16 17:47:04 UTC (rev 2377) @@ -10,6 +10,7 @@ import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Page; import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.Resettable; import com.arsdigita.bebop.SaveCancelSection; import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.bebop.event.ActionListener; @@ -27,7 +28,7 @@ * * @author Sören Bernstein (quasimodo) <sbe...@ze...> */ -public class ImageLibraryComponent extends SimpleContainer implements ImageComponent { +public class ImageLibraryComponent extends SimpleContainer implements ImageComponent, Resettable { private final ImageChooser m_chooser; private final ItemSelectionModel m_imageModel; @@ -158,4 +159,11 @@ add(upload, ColumnPanel.FULL_WIDTH); } } + + // Reset this component + public void reset(PageState ps) { + // clear selection + m_imageModel.clearSelection(ps); + m_chooser.clearKeyword(ps); + } } Modified: trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageSelectPage.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageSelectPage.java 2012-12-16 09:35:50 UTC (rev 2376) +++ trunk/ccm-cms/src/com/arsdigita/cms/ui/ImageSelectPage.java 2012-12-16 17:47:04 UTC (rev 2377) @@ -6,9 +6,14 @@ import com.arsdigita.bebop.Component; import com.arsdigita.bebop.MapComponentSelectionModel; +import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.ParameterSingleSelectionModel; import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.bebop.TabbedPane; +import com.arsdigita.bebop.event.ActionEvent; +import com.arsdigita.bebop.event.ActionListener; +import com.arsdigita.bebop.event.RequestEvent; +import com.arsdigita.bebop.event.RequestListener; import com.arsdigita.bebop.parameters.BigDecimalParameter; import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.cms.CMSConfig; @@ -31,6 +36,7 @@ private BigDecimalParameter m_sectionId; private final StringParameter m_imageComponentKey; private final MapComponentSelectionModel m_imageComponent; + private final ImageComponentSelectListener m_selectListener; private static final CMSConfig s_conf = CMSConfig.getInstance(); private static final boolean LIMIT_TO_CONTENT_SECTION = false; public static final String CONTENT_SECTION = "section_id"; @@ -49,20 +55,35 @@ new ParameterSingleSelectionModel(m_imageComponentKey); m_imageComponent = new MapComponentSelectionModel(componentModel, new HashMap()); + m_selectListener = new ImageComponentSelectListener(m_imageComponent); m_tabbedPane = createTabbedPane(); m_tabbedPane.setIdAttr("page-body"); add(m_tabbedPane); + // ActionListener to change the image component state param to the right value + addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent event) { + final PageState ps = event.getPageState(); + + if (m_tabbedPane.getCurrentPane(ps).equals(m_imageLibrary)) { + m_imageComponent.setSelectedKey(ps, ImageComponent.LIBRARY); + } + if (m_tabbedPane.getCurrentPane(ps).equals(m_imageUpload)) { + m_imageComponent.setSelectedKey(ps, ImageComponent.UPLOAD); + } + + } + }); addGlobalStateParam(m_imageComponentKey); } protected ImageLibraryComponent getImageLibraryPane() { if (m_imageLibrary == null) { m_imageLibrary = new ImageLibraryComponent(ImageComponent.SELECT_IMAGE); - m_imageLibrary.getForm().addInitListener(new ImageComponentSelectListener(m_imageComponent)); - m_imageLibrary.getForm().addProcessListener(new ImageComponentSelectListener(m_imageComponent)); + m_imageLibrary.getForm().addInitListener(m_selectListener); + m_imageLibrary.getForm().addProcessListener(m_selectListener); m_imageComponent.getComponentsMap().put(ImageComponent.LIBRARY, m_imageLibrary); } return m_imageLibrary; @@ -72,8 +93,8 @@ if (m_imageUpload == null) { m_imageUpload = new ImageUploadComponent(ImageComponent.SELECT_IMAGE); - m_imageUpload.getForm().addInitListener(new ImageComponentSelectListener(m_imageComponent)); - m_imageUpload.getForm().addProcessListener(new ImageComponentSelectListener(m_imageComponent)); + m_imageUpload.getForm().addInitListener(m_selectListener); + m_imageUpload.getForm().addProcessListener(m_selectListener); m_imageComponent.getComponentsMap().put(ImageComponent.UPLOAD, m_imageUpload); } return m_imageUpload; @@ -83,8 +104,8 @@ TabbedPane pane = new TabbedPane(); pane.setClassAttr(XSL_CLASS); - addToPane(pane, "library", getImageLibraryPane()); - addToPane(pane, "upload", getImageUploadPane()); + addToPane(pane, ImageComponent.LIBRARY, getImageLibraryPane()); + addToPane(pane, ImageComponent.UPLOAD, getImageUploadPane()); pane.setDefaultPane(m_imageLibrary); return pane; Modified: trunk/ccm-cms/src/com/arsdigita/cms/ui/ImagesPane.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/ui/ImagesPane.java 2012-12-16 09:35:50 UTC (rev 2376) +++ trunk/ccm-cms/src/com/arsdigita/cms/ui/ImagesPane.java 2012-12-16 17:47:04 UTC (rev 2377) @@ -32,6 +32,7 @@ //private ImageChooser imageChooser; private final StringParameter m_imageComponentKey; private final MapComponentSelectionModel m_imageComponent; +// private final ImageComponentAdminListener m_adminListener; public ImagesPane() { // Left column is empty, this is only to provide the same layout for all @@ -47,20 +48,21 @@ m_imageComponent = new MapComponentSelectionModel(componentModel, new HashMap()); Map selectors = m_imageComponent.getComponentsMap(); - +// m_adminListener = new ImageComponentAdminListener(m_imageComponent); + ImageUploadComponent upload = new ImageUploadComponent(ImageComponent.ADMIN_IMAGES); - //upload.getForm().addInitListener(new ImageComponentAdminListener(m_imageComponent)); // For future use - // upload.addProcessListener(new ImageComponentAdminListener(m_imageComponent)); + //upload.getForm().addInitListener(m_adminListener); + // upload.addProcessListener(m_adminListener); selectors.put(ImageComponent.UPLOAD, upload); body.addSegment( new Label(GlobalizationUtil.globalize("cms.ui.image_upload")), upload); ImageLibraryComponent library = new ImageLibraryComponent(ImageComponent.ADMIN_IMAGES); - //library.getForm().addInitListener(new ImageComponentAdminListener(m_imageComponent)); // For future use - // library.getForm().addProcessListener(new ImageComponentAdminListener); + //library.getForm().addInitListener(m_adminListener); + // library.getForm().addProcessListener(m_adminListener); // library.addUploadLink(new ActionListener() { // // public void actionPerformed(ActionEvent ev) { Modified: trunk/ccm-cms/src/com/arsdigita/cms/ui/SecurityPropertyEditor.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/ui/SecurityPropertyEditor.java 2012-12-16 09:35:50 UTC (rev 2376) +++ trunk/ccm-cms/src/com/arsdigita/cms/ui/SecurityPropertyEditor.java 2012-12-16 17:47:04 UTC (rev 2377) @@ -225,6 +225,7 @@ * @param form The form * @param cancelButton the "Cancel" button on the form */ + @Override public void addListeners(FormSection form, Submit cancelButton) { addSecurityListener(form); super.addListeners(form, cancelButton); @@ -247,6 +248,7 @@ super(); } + @Override public PropertyEditorModel makeModel(PropertyEditor p, PageState s) { return new AccessListModel ( getProperties(p), @@ -273,16 +275,19 @@ m_manager = Utilities.getSecurityManager(m_state); } + @Override public boolean next() { while(super.next()) { Object key = getKey(); ComponentAccess ca = (ComponentAccess)m_access.get(key); - if(ca == null) // No access restricitons + if(ca == null) { return true; + } - if ( ca.canAccess(m_state, m_manager) ) // Access checks out + if ( ca.canAccess(m_state, m_manager) ) { return true; + } // Otherwise, skip the property } Added: trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageComponentAttachListener.java =================================================================== --- trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageComponentAttachListener.java (rev 0) +++ trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageComponentAttachListener.java 2012-12-16 17:47:04 UTC (rev 2377) @@ -0,0 +1,48 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms.contentassets.ui; + +import com.arsdigita.bebop.MapComponentSelectionModel; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ReusableImageAsset; +import com.arsdigita.cms.contentassets.ItemImageAttachment; +import com.arsdigita.cms.ui.ImageComponent; +import com.arsdigita.cms.ui.ImageComponentAbstractListener; +import org.apache.log4j.Logger; + +/** + * + * @author Sören Bernstein (quasimodo) <sbe...@ze...> + */ +public class ImageComponentAttachListener extends ImageComponentAbstractListener { + + private final ImageStep m_imageStep; + private static final Logger s_log = Logger.getLogger(ImageComponentAttachListener.class); + + public ImageComponentAttachListener(MapComponentSelectionModel imageComponent, ImageStep imageStep) { + super(imageComponent); + m_imageStep = imageStep; + } + + @Override + protected void processImage(FormSectionEvent event, PageState ps, ImageComponent component, ReusableImageAsset image) { + ContentItem item = m_imageStep.getItem(ps); + if (null == item) { + s_log.error("No item selected in ImageStepEdit", + new RuntimeException()); + return; + } + ItemImageAttachment attachment = m_imageStep.getAttachment(ps); + if (null == attachment) { + attachment = new ItemImageAttachment(item, image); + } + + attachment.setCaption(component.getCaption(event)); + +// setImageComponent(ps, ImageComponent.LIBRARY); + } +} Modified: trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStep.java =================================================================== --- trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStep.java 2012-12-16 09:35:50 UTC (rev 2376) +++ trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStep.java 2012-12-16 17:47:04 UTC (rev 2377) @@ -75,7 +75,6 @@ new WorkflowLockedComponentAccess( m_add, m_itemSelection ); addComponent( "add", "Add Image", addCA ); - m_display = new ImageStepDisplay( this ); setDisplayComponent(m_display); @@ -175,4 +174,10 @@ return m_attachmentOID; } } + + @Override + public void showDisplayPane(PageState state) { + super.showDisplayPane(state); + m_add.reset(state); + } } Modified: trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStepEdit.java =================================================================== --- trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStepEdit.java 2012-12-16 09:35:50 UTC (rev 2376) +++ trunk/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStepEdit.java 2012-12-16 17:47:04 UTC (rev 2377) @@ -27,15 +27,11 @@ import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.bebop.event.ActionEvent; import com.arsdigita.bebop.event.ActionListener; -import com.arsdigita.bebop.event.FormInitListener; -import com.arsdigita.bebop.event.FormProcessListener; -import com.arsdigita.bebop.event.FormSectionEvent; import com.arsdigita.bebop.event.ParameterEvent; import com.arsdigita.bebop.event.ParameterListener; import com.arsdigita.bebop.parameters.ParameterData; import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.cms.ContentItem; -import com.arsdigita.cms.ReusableImageAsset; import com.arsdigita.cms.contentassets.ItemImageAttachment; import com.arsdigita.cms.ui.ImageComponent; import com.arsdigita.cms.ui.ImageLibraryComponent; @@ -47,16 +43,18 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; - import org.apache.log4j.Logger; public class ImageStepEdit extends SimpleContainer - implements Resettable, FormProcessListener, FormInitListener { + implements Resettable/* + * , FormProcessListener, FormInitListener + */ { private static final Logger s_log = Logger.getLogger(ImageStepEdit.class); private final ImageStep m_imageStep; private final StringParameter m_imageComponentKey; private final MapComponentSelectionModel m_imageComponent; + private final ImageComponentAttachListener m_attachListener; public ImageStepEdit(ImageStep step) { m_imageStep = step; @@ -69,10 +67,11 @@ new MapComponentSelectionModel(componentModel, new HashMap()); Map selectors = m_imageComponent.getComponentsMap(); + m_attachListener = new ImageComponentAttachListener(m_imageComponent, m_imageStep); ImageLibraryComponent library = new ImageLibraryComponent(); - library.getForm().addInitListener(this); - library.getForm().addProcessListener(this); + library.getForm().addInitListener(m_attachListener); + library.getForm().addProcessListener(m_attachListener); library.addUploadLink(new ActionListener() { public void actionPerformed(ActionEvent ev) { @@ -81,10 +80,10 @@ }); selectors.put(ImageComponent.LIBRARY, library); add(library); - + ImageUploadComponent upload = new ImageUploadComponent(); - upload.getForm().addInitListener(this); - upload.getForm().addProcessListener(this); + upload.getForm().addInitListener(m_attachListener); + upload.getForm().addProcessListener(m_attachListener); selectors.put(ImageComponent.UPLOAD, upload); add(upload); @@ -110,20 +109,6 @@ return m_imageComponent.getComponentsMap().values().iterator(); } - private ImageComponent getImageComponent(PageState ps) { - if (!m_imageComponent.isSelected(ps)) { - if (s_log.isDebugEnabled()) { - s_log.debug("No component selected"); - s_log.debug("Selected: " + m_imageComponent.getComponent(ps)); - } - - m_imageComponent.setSelectedKey(ps, ImageComponent.UPLOAD); - } - - return (ImageComponent) m_imageComponent.getComponent(ps); - - } - private void setImageComponent(PageState ps, final String activeKey) { m_imageComponent.setSelectedKey(ps, activeKey); @@ -147,64 +132,34 @@ } } - public void init(FormSectionEvent event) - throws FormProcessException { - PageState ps = event.getPageState(); - - ItemImageAttachment attachment = m_imageStep.getAttachment(ps); - if (null == attachment) { - // XXX: Do something - } - } - - public void process(FormSectionEvent event) throws FormProcessException { - PageState ps = event.getPageState(); - ImageComponent component = getImageComponent(ps); - - if (!component.getSaveCancelSection().getSaveButton().isSelected(ps)) { - return; - } - - ContentItem item = m_imageStep.getItem(ps); - if (null == item) { - s_log.error("No item selected in ImageStepEdit", - new RuntimeException()); - return; - } - - ReusableImageAsset image = component.getImage(event); - - ItemImageAttachment attachment = m_imageStep.getAttachment(ps); - if (null == attachment) { - attachment = new ItemImageAttachment(item, image); - } - attachment.setCaption(component.getCaption(event)); - - // We only set the description and title based on the UI in - // the case where getIsImageStepDescriptionAndTitleShown is true. - // Otherwise, we leave this as the default value. This means - // existing values are not overwritten if the image is edited when - // isImageStepDescriptionAndTitleShown is false. - if (ItemImageAttachment.getConfig().getIsImageStepDescriptionAndTitleShown()) { - attachment.setDescription(component.getDescription(event)); - attachment.setTitle(component.getTitle(event)); - } - attachment.setUseContext(component.getUseContext(event)); - } - - public void reset(PageState state) { - Page p = state.getPage(); - + // Reset this component and all of it's resettable childs + public void reset(PageState ps) { Map componentsMap = m_imageComponent.getComponentsMap(); + m_imageComponent.setSelectedKey(ps, ImageComponent.LIBRARY); Iterator i = componentsMap.keySet().iterator(); while (i.hasNext()) { Object key = i.next(); Component component = (Component) componentsMap.get(key); - p.setVisibleDefault(component, ImageComponent.LIBRARY.equals(key)); + ps.setVisible(component, ImageComponent.LIBRARY.equals(key)); + + // Reset all components if they are of type Resettable + if (component instanceof Resettable) { + ((Resettable) component).reset(ps); + } } } + // We only set the description and title based on the UI in + // the case where getIsImageStepDescriptionAndTitleShown is true. + // Otherwise, we leave this as the default value. This means + // existing values are not overwritten if the image is edited when + // isImageStepDescriptionAndTitleShown is false. +// if (ItemImageAttachment.getConfig().getIsImageStepDescriptionAndTitleShown()) { +// attachment.setDescription(component.getDescription(event)); +// attachment.setTitle(component.getTitle(event)); +// } +// attachment.setUseContext(component.getUseContext(event)); private class UniqueUseContextListener implements ParameterListener { public void validate(ParameterEvent ev) |