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