View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2010 eviware.com 
3    *
4    *  soapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of version 2.1 of the GNU Lesser General Public License as published by 
6    *  the Free Software Foundation.
7    *
8    *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
10   *  See the GNU Lesser General Public License for more details at gnu.org.
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 }