1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.ui.support;
14
15 import java.awt.BorderLayout;
16 import java.beans.PropertyChangeEvent;
17 import java.beans.PropertyChangeListener;
18
19 import javax.swing.Action;
20 import javax.swing.Icon;
21 import javax.swing.JButton;
22 import javax.swing.JComponent;
23 import javax.swing.JPanel;
24 import javax.swing.tree.TreePath;
25
26 import com.eviware.soapui.SoapUI;
27 import com.eviware.soapui.model.ModelItem;
28 import com.eviware.soapui.model.tree.SoapUITreeNode;
29 import com.eviware.soapui.model.tree.nodes.support.EmptyModelItem;
30 import com.eviware.soapui.support.UISupport;
31 import com.eviware.soapui.ui.desktop.DesktopPanel;
32
33 /***
34 * Base class for DesktopPanels..
35 */
36
37 public abstract class ModelItemDesktopPanel<T extends ModelItem> extends JPanel implements DesktopPanel
38 {
39
40 private final T modelItem;
41 private InternalPropertyChangeListener propertyChangeListener;
42
43 public ModelItemDesktopPanel( T modelItem )
44 {
45 super( new BorderLayout() );
46 this.modelItem = modelItem;
47
48
49 propertyChangeListener = new InternalPropertyChangeListener();
50 ((ModelItem)modelItem).addPropertyChangeListener( propertyChangeListener );
51 }
52
53 protected boolean release()
54 {
55 modelItem.removePropertyChangeListener( propertyChangeListener );
56 return true;
57 }
58
59 public JComponent getComponent()
60 {
61 return this;
62 }
63
64 final public T getModelItem()
65 {
66 return modelItem;
67 }
68
69 public final Icon getIcon()
70 {
71 return modelItem.getIcon();
72 }
73
74 abstract public boolean dependsOn(ModelItem modelItem);
75
76 public final String getTitle()
77 {
78 return modelItem.getName();
79 }
80
81 public final String getDescription()
82 {
83 TreePath treePath = SoapUI.getNavigator().getTreePath( modelItem );
84
85 if( treePath == null )
86 {
87 return modelItem.getDescription();
88 }
89 else
90 {
91 String str = modelItem.getName() + " [";
92
93 for( int c = 1; c < treePath.getPathCount(); c++ )
94 {
95 SoapUITreeNode comp = ( SoapUITreeNode ) treePath.getPathComponent( c );
96 if( comp.getModelItem() instanceof EmptyModelItem )
97 continue;
98
99 if( c > 1 )
100 str += "/";
101
102 str += comp.toString();
103 }
104
105 str += "]";
106
107 return str;
108 }
109 }
110
111 public static JButton createActionButton(Action action, boolean enabled)
112 {
113 JButton button = UISupport.createToolbarButton(action, enabled);
114 action.putValue(Action.NAME, null);
115 return button;
116 }
117
118 public void notifyPropertyChange( String propertyName, Object oldValue, Object newValue )
119 {
120 firePropertyChange( propertyName, oldValue, newValue );
121 }
122
123 private class InternalPropertyChangeListener implements PropertyChangeListener
124 {
125 public void propertyChange(PropertyChangeEvent evt)
126 {
127 if( evt.getPropertyName().equals( ModelItem.NAME_PROPERTY ))
128 notifyPropertyChange( DesktopPanel.TITLE_PROPERTY, null, getTitle() );
129
130 if( evt.getPropertyName().equals( ModelItem.ICON_PROPERTY ))
131 notifyPropertyChange( DesktopPanel.ICON_PROPERTY, null, getIcon() );
132 }
133 }
134 }