/*
* SoapUI, Copyright (C) 2004-2016 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/
package com.eviware.soapui.support.editor.inspectors.jms.property;
import com.eviware.soapui.impl.wsdl.panels.request.StringToStringMapTableModel;
import com.eviware.soapui.support.editor.EditorView;
import com.eviware.soapui.support.editor.inspectors.AbstractXmlInspector;
import com.eviware.soapui.support.editor.views.xml.raw.RawXmlEditorFactory;
import com.eviware.soapui.support.editor.xml.XmlDocument;
import com.eviware.soapui.support.swing.JTableFactory;
import com.eviware.soapui.support.types.StringToStringMap;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import java.awt.BorderLayout;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
public class JMSHeaderAndPropertyInspector extends AbstractXmlInspector implements PropertyChangeListener {
private StringToStringMapTableModel headersTableModel;
private final JMSHeaderAndPropertyInspectorModel model;
private JTable headersTable;
private JPanel panel;
public boolean changing;
protected JMSHeaderAndPropertyInspector(JMSHeaderAndPropertyInspectorModel model) {
super("JMS (" + (model.getJMSHeadersAndProperties() == null ? "0" : model.getJMSHeadersAndProperties().size())
+ ")", "JMS Header and Property for this message", true, JMSHeaderAndPropertyInspectorFactory.INSPECTOR_ID);
this.model = model;
model.addPropertyChangeListener(this);
model.setInspector(this);
}
public JComponent getComponent() {
if (panel != null) {
return panel;
}
headersTableModel = new StringToStringMapTableModel(model.getJMSHeadersAndProperties(), "Key", "Value",
!model.isReadOnly());
headersTableModel.addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent arg0) {
StringToStringMap map = model.getJMSHeadersAndProperties();
setTitle("JMS (" + (map == null ? "0" : map.size()) + ")");
}
});
headersTable = JTableFactory.getInstance().makeJTable(headersTableModel);
panel = new JPanel(new BorderLayout());
panel.add(new JScrollPane(headersTable), BorderLayout.CENTER);
return panel;
}
public JTable getHeadersTable() {
return headersTable;
}
@Override
public void release() {
super.release();
model.release();
model.removePropertyChangeListener(this);
}
public void propertyChange(PropertyChangeEvent evt) {
if (!changing) {
headersTableModel.setData(model.getJMSHeadersAndProperties());
}
}
public JMSHeaderAndPropertyInspectorModel getModel() {
return model;
}
public StringToStringMapTableModel getHeadersTableModel() {
return headersTableModel;
}
@Override
public boolean isEnabledFor(EditorView<XmlDocument> view) {
return !view.getViewId().equals(RawXmlEditorFactory.VIEW_ID);
}
}