1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.support.action.swing;
14
15 import java.awt.event.ActionEvent;
16 import java.beans.PropertyChangeEvent;
17 import java.beans.PropertyChangeListener;
18
19 import javax.swing.AbstractAction;
20 import javax.swing.Action;
21
22 import com.eviware.soapui.SoapUI;
23 import com.eviware.soapui.model.ModelItem;
24 import com.eviware.soapui.support.UISupport;
25 import com.eviware.soapui.support.action.SoapUIAction;
26 import com.eviware.soapui.support.action.SoapUIActionMapping;
27 import com.eviware.soapui.support.action.support.StandaloneActionMapping;
28
29 /***
30 * Delegates a SwingAction to a SoapUIActionMapping
31 *
32 * @author ole.matzura
33 */
34
35 public class SwingActionDelegate<T extends ModelItem> extends AbstractAction implements PropertyChangeListener
36 {
37 private final T target;
38 private final SoapUIActionMapping<T> mapping;
39
40 public SwingActionDelegate( SoapUIActionMapping<T> mapping, T target )
41 {
42 super( mapping.getName() );
43 this.mapping = mapping;
44 this.target = target;
45
46 if( mapping.getDescription() != null )
47 putValue( Action.SHORT_DESCRIPTION, mapping.getDescription() );
48
49 if( mapping.getIconPath() != null )
50 putValue( Action.SMALL_ICON, UISupport.createImageIcon( mapping.getIconPath() ) );
51
52 if( mapping.getKeyStroke() != null )
53 putValue( Action.ACCELERATOR_KEY, UISupport.getKeyStroke( mapping.getKeyStroke() ));
54
55 setEnabled( mapping.getAction().isEnabled() );
56
57
58 }
59
60 public void actionPerformed(ActionEvent e)
61 {
62 mapping.getAction().perform( target, mapping.getParam() );
63 }
64
65 public void propertyChange(PropertyChangeEvent evt)
66 {
67 if( evt.getPropertyName().equals( SoapUIAction.ENABLED_PROPERTY ))
68 setEnabled( ((Boolean)evt.getNewValue()).booleanValue() );
69 }
70
71 public SoapUIAction<T> getAction()
72 {
73 return mapping.getAction();
74 }
75
76 public T getTarget()
77 {
78 return target;
79 }
80
81 public static <T extends ModelItem> SwingActionDelegate<T> createDelegate( SoapUIAction<T> action, T target, String keyStroke, String iconPath )
82 {
83 return new SwingActionDelegate<T>( new StandaloneActionMapping<T>( action, keyStroke, iconPath ), target );
84 }
85
86 public static <T extends ModelItem> SwingActionDelegate<T> createDelegate( SoapUIAction<T> action, T target, String keyStroke )
87 {
88 return new SwingActionDelegate<T>( new StandaloneActionMapping<T>( action, keyStroke ), target );
89 }
90
91 public static <T extends ModelItem> SwingActionDelegate<T> createDelegate( SoapUIAction<T> action, T target )
92 {
93 return new SwingActionDelegate<T>( new StandaloneActionMapping<T>( action ), target );
94 }
95
96 public static <T extends ModelItem> SwingActionDelegate<T> createDelegate( SoapUIAction<T> action )
97 {
98 return new SwingActionDelegate<T>( new StandaloneActionMapping<T>( action ), null );
99 }
100
101 public static AbstractAction createDelegate( String soapUIActionId )
102 {
103 return createDelegate( SoapUI.getActionRegistry().getAction( soapUIActionId ));
104 }
105
106 public static <T extends ModelItem> AbstractAction createDelegate( String soapUIActionId, T target )
107 {
108 return createDelegate( SoapUI.getActionRegistry().getAction( soapUIActionId ), target );
109 }
110
111 public static <T extends ModelItem> AbstractAction createDelegate( String soapUIActionId, T target, String keyStroke )
112 {
113 return createDelegate( SoapUI.getActionRegistry().getAction( soapUIActionId ), target, keyStroke );
114 }
115
116 public static <T extends ModelItem> AbstractAction createDelegate( String soapUIActionId, T target, String keyStroke, String iconPath )
117 {
118 return createDelegate( SoapUI.getActionRegistry().getAction( soapUIActionId ), target, keyStroke, iconPath );
119 }
120 }