001    package org.springframework.richclient.widget;
002    
003    import org.springframework.richclient.form.AbstractForm;
004    import org.springframework.richclient.form.ValidationResultsReporter;
005    import org.springframework.richclient.dialog.Messagable;
006    import org.springframework.richclient.command.AbstractCommand;
007    
008    import javax.swing.*;
009    import java.util.List;
010    import java.util.Collections;
011    
012    /**
013     * A decorator to add a {@link org.springframework.richclient.dialog.TitlePane} to a {@link org.springframework.richclient.form.Form}. Adds the commit command as a default widget
014     * command to show.
015     *
016     * TODO check all widget functionality
017     *
018     * @author Jan Hoskens
019     *
020     */
021    public class TitledWidgetForm extends AbstractTitledWidget
022    {
023    
024        private AbstractForm form;
025    
026        /**
027         * Set the inner form that needs decorating.
028         */
029        public void setForm(AbstractForm form)
030        {
031            this.form = form;
032        }
033    
034        /**
035         * Returns the form.
036         */
037        public AbstractForm getForm()
038        {
039            return form;
040        }
041    
042        @Override
043        public JComponent createWidgetContent()
044        {
045            newSingleLineResultsReporter(this);
046            return getForm().getControl();
047        }
048    
049        @Override
050        public List<? extends AbstractCommand> getCommands()
051        {
052            return Collections.emptyList();
053        }
054    
055        @Override
056        public ValidationResultsReporter newSingleLineResultsReporter(Messagable messagable)
057        {
058            return getForm().newSingleLineResultsReporter(this);
059        }
060    
061        @Override
062        public void onAboutToHide()
063        {
064            super.onAboutToHide();
065            // NOTE in future form should be a widget
066            if (form instanceof Widget)
067                ((Widget) form).onAboutToHide();
068        }
069    
070        @Override
071        public void onAboutToShow()
072        {
073            super.onAboutToShow();
074            // NOTE in future form should be a widget
075            if (form instanceof Widget)
076                ((Widget) form).onAboutToShow();
077        }
078    }
079