1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.support.editor.inspectors.jms.property;
14
15 import java.awt.BorderLayout;
16 import java.beans.PropertyChangeEvent;
17 import java.beans.PropertyChangeListener;
18
19 import javax.swing.JComponent;
20 import javax.swing.JPanel;
21 import javax.swing.JScrollPane;
22 import javax.swing.JTable;
23 import javax.swing.event.TableModelEvent;
24 import javax.swing.event.TableModelListener;
25
26 import com.eviware.soapui.impl.wsdl.panels.request.StringToStringMapTableModel;
27 import com.eviware.soapui.support.editor.EditorView;
28 import com.eviware.soapui.support.editor.inspectors.AbstractXmlInspector;
29 import com.eviware.soapui.support.editor.views.xml.raw.RawXmlEditorFactory;
30 import com.eviware.soapui.support.editor.xml.XmlDocument;
31 import com.eviware.soapui.support.types.StringToStringMap;
32
33 public class JMSHeaderAndPropertyInspector extends AbstractXmlInspector implements PropertyChangeListener
34 {
35 private StringToStringMapTableModel headersTableModel;
36 private final JMSHeaderAndPropertyInspectorModel model;
37 private JTable headersTable;
38
39
40 private JPanel panel;
41 public boolean changing;
42
43 protected JMSHeaderAndPropertyInspector( JMSHeaderAndPropertyInspectorModel model )
44 {
45 super( "JMS (" + ( model.getJMSHeadersAndProperties() == null ? "0" : model.getJMSHeadersAndProperties().size() ) + ")",
46 "JMS Header and Property for this message", true, JMSHeaderAndPropertyInspectorFactory.INSPECTOR_ID );
47
48 this.model = model;
49
50 model.addPropertyChangeListener( this );
51 model.setInspector(this);
52 }
53
54
55 public JComponent getComponent()
56 {
57 if( panel != null )
58 return panel;
59
60 headersTableModel = new StringToStringMapTableModel( model.getJMSHeadersAndProperties(), "Key", "Value", !model.isReadOnly() );
61 headersTableModel.addTableModelListener( new TableModelListener()
62 {
63 public void tableChanged( TableModelEvent arg0 )
64 {
65 StringToStringMap map = model.getJMSHeadersAndProperties() ;
66 setTitle( "JMS (" + (map == null ? "0" : map.size() ) + ")" );
67 }
68 } );
69 headersTable = new JTable( headersTableModel );
70
71 panel = new JPanel( new BorderLayout() );
72 panel.add( new JScrollPane( headersTable ), BorderLayout.CENTER );
73
74 return panel;
75 }
76
77 public JTable getHeadersTable()
78 {
79 return headersTable;
80 }
81
82 @Override
83 public void release()
84 {
85 super.release();
86 model.release();
87 model.removePropertyChangeListener( this );
88 }
89
90 public void propertyChange( PropertyChangeEvent evt )
91 {
92 if( !changing )
93 headersTableModel.setData( model.getJMSHeadersAndProperties() );
94 }
95
96 public JMSHeaderAndPropertyInspectorModel getModel()
97 {
98 return model;
99 }
100
101
102 public StringToStringMapTableModel getHeadersTableModel()
103 {
104 return headersTableModel;
105 }
106
107
108
109 @Override
110 public boolean isEnabledFor( EditorView<XmlDocument> view )
111 {
112 return !view.getViewId().equals( RawXmlEditorFactory.VIEW_ID );
113 }
114 }