001 package org.springframework.richclient.command.support;
002
003 import org.springframework.beans.BeansException;
004 import org.springframework.context.ApplicationContext;
005 import org.springframework.context.ApplicationContextAware;
006 import org.springframework.richclient.util.RcpSupport;
007 import org.springframework.richclient.widget.Widget;
008
009 import javax.swing.*;
010
011 /**
012 * Base class for commands that use widgets. The widget can be injected or found in the context through its id.
013 */
014 public abstract class AbstractWidgetCommand extends ApplicationWindowAwareCommand
015 implements
016 ApplicationContextAware
017 {
018
019 private String widgetBeanId = null;
020
021 private Widget widget;
022
023 private ApplicationContext applicationContext;
024
025 public void setWidget(Widget widget)
026 {
027 this.widget = widget;
028 }
029
030 protected Widget getWidget()
031 {
032 if (this.widget == null && this.widgetBeanId != null)
033 this.widget = RcpSupport.getBean(widgetBeanId);
034 return this.widget;
035 }
036
037 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
038 {
039 this.applicationContext = applicationContext;
040 }
041
042 public ApplicationContext getApplicationContext()
043 {
044 return applicationContext;
045 }
046
047 protected final JComponent getWidgetComponent()
048 {
049 if (getWidget() == null)
050 return RcpSupport.createDummyPanel("No widget set for command:" + getId());
051 return getWidget().getComponent();
052 }
053
054 public String getWidgetBeanId()
055 {
056 return widgetBeanId;
057 }
058
059 public void setWidgetBeanId(String widgetBeanId)
060 {
061 this.widgetBeanId = widgetBeanId;
062 }
063 }
064