001 package org.springframework.richclient.widget; 002 003 import com.jgoodies.forms.layout.ColumnSpec; 004 import com.jgoodies.forms.layout.RowSpec; 005 import org.springframework.richclient.application.support.AbstractView; 006 import org.springframework.richclient.command.AbstractCommand; 007 import org.springframework.richclient.command.CommandGroup; 008 009 import javax.swing.*; 010 import java.awt.*; 011 import java.util.List; 012 013 /** 014 * View implementation to show a widget 015 */ 016 public class WidgetView extends AbstractView 017 { 018 private Widget widget; 019 020 public WidgetView() 021 { 022 } 023 024 public WidgetView(Widget widget) 025 { 026 setWidget(widget); 027 } 028 029 public void setWidget(Widget widget) 030 { 031 this.widget = widget; 032 } 033 034 public Widget getWidget() 035 { 036 return this.widget; 037 } 038 039 protected JComponent createControl() 040 { 041 JComponent widgetComponent = getWidget().getComponent(); 042 JPanel viewPanel = new JPanel(new BorderLayout()); 043 viewPanel.add(widgetComponent, BorderLayout.CENTER); 044 Widget widget = getWidget(); 045 List<? extends AbstractCommand> widgetCommands = widget.getCommands(); 046 if (widgetCommands != null) 047 { 048 JComponent widgetButtonBar = CommandGroup.createCommandGroup(widgetCommands).createButtonBar(ColumnSpec.decode("fill:pref:nogrow"), RowSpec.decode("fill:default:nogrow"), null); 049 JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 050 buttonPanel.add(widgetButtonBar); 051 buttonPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); 052 viewPanel.add(buttonPanel, BorderLayout.SOUTH); 053 } 054 return viewPanel; 055 } 056 057 public boolean canClose() 058 { 059 return getWidget().canClose(); 060 } 061 062 public void componentFocusGained() 063 { 064 getWidget().onAboutToShow(); 065 } 066 067 public void componentFocusLost() 068 { 069 getWidget().onAboutToHide(); 070 } 071 } 072