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