001    package org.springframework.richclient.widget;
002    
003    import org.springframework.richclient.dialog.TitlePane;
004    import org.springframework.richclient.core.Severity;
005    import org.springframework.richclient.core.DefaultMessage;
006    import org.springframework.richclient.core.Message;
007    import org.springframework.richclient.util.GuiStandardUtils;
008    import org.springframework.richclient.util.RcpSupport;
009    import org.springframework.richclient.command.AbstractCommand;
010    import org.springframework.binding.form.FormModel;
011    
012    import javax.swing.*;
013    import java.beans.PropertyChangeListener;
014    import java.util.Collections;
015    import java.awt.*;
016    
017    public abstract class AbstractTitledWidgetForm extends AbstractWidgetForm implements
018                    TitledWidget {
019            private Message description = new DefaultMessage(RcpSupport.getMessage(
020                            "titledWidget", "defaultMessage", RcpSupport.TEXT), Severity.INFO);
021    
022            private TitlePane titlePane = new TitlePane(2);
023    
024            public AbstractTitledWidgetForm(FormModel model) {
025                    super(model);
026            }
027    
028            public AbstractTitledWidgetForm(FormModel model, String formId) {
029                    super(model, formId);
030            }
031    
032            public void setTitle(String title) {
033                    this.titlePane.setTitle(title);
034            }
035    
036            public void setImage(Image image) {
037                    this.titlePane.setImage(image);
038            }
039    
040            public void setMessage(Message message) {
041                    if (message != null)
042                            titlePane.setMessage(message);
043                    else
044                            titlePane.setMessage(getDescription());
045            }
046    
047            protected Message getDescription() {
048                    return description;
049            }
050    
051            public void setDescription(String longDescription) {
052                    this.description = new DefaultMessage(longDescription);
053                    setMessage(this.description);
054            }
055    
056            public JComponent getComponent() {
057                    JPanel titlePaneContainer = new JPanel(new BorderLayout());
058                    titlePaneContainer.add(titlePane.getControl());
059                    titlePaneContainer.add(new JSeparator(), BorderLayout.SOUTH);
060    
061                    JPanel pageControl = new JPanel(new BorderLayout());
062                    pageControl.add(titlePaneContainer, BorderLayout.NORTH);
063                    JComponent content = createFormControl();
064                    GuiStandardUtils.attachDialogBorder(content);
065                    pageControl.add(content);
066    
067                    setMessage(getDescription());
068    
069                    return pageControl;
070            }
071    
072            public void addPropertyChangeListener(PropertyChangeListener listener) {
073                    this.titlePane.addPropertyChangeListener(listener);
074            }
075    
076            public void addPropertyChangeListener(String txt,
077                            PropertyChangeListener listener) {
078                    this.titlePane.addPropertyChangeListener(txt, listener);
079            }
080    
081            public void removePropertyChangeListener(PropertyChangeListener listener) {
082                    this.titlePane.removePropertyChangeListener(listener);
083            }
084    
085            public void removePropertyChangeListener(String txt,
086                            PropertyChangeListener listener) {
087                    this.titlePane.removePropertyChangeListener(txt, listener);
088            }
089    
090            public boolean canClose() {
091                    return true;
092            }
093    
094            public java.util.List<? extends AbstractCommand> getCommands() {
095                    return Collections.emptyList();
096            }
097    
098            public void onAboutToHide() {
099            }
100    
101            public void onAboutToShow() {
102            }
103    
104            public void setCaption(String shortDescription) {
105                    setTitle(shortDescription);
106            }
107    
108            public void setBeanName(String name) {
109                    setId(name);
110            }
111    }
112