Package com.eviware.soapui.impl.wsdl.mock

Source Code of com.eviware.soapui.impl.wsdl.mock.ViewWsdlMockResultAction

/*
* Copyright 2004-2014 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.impl.wsdl.mock;

import com.eviware.soapui.SoapUI;
import com.eviware.soapui.impl.wsdl.panels.request.StringToStringsMapTableModel;
import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.swing.JTableFactory;
import com.eviware.soapui.support.xml.SyntaxEditorUtil;
import com.eviware.soapui.support.xml.XmlUtils;
import com.eviware.soapui.ui.desktop.DesktopPanel;
import com.eviware.soapui.ui.support.DefaultDesktopPanel;
import com.jgoodies.forms.builder.ButtonBarBuilder;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rtextarea.RTextScrollPane;

import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.util.Date;

/**
* Shows a desktop-panel with the MessageExchange for a WsdlMockResult
*
* @author Ole.Matzura
*/

public class ViewWsdlMockResultAction extends AbstractAction {
    private final WsdlMockResult result;
    private DefaultDesktopPanel desktopPanel;

    public ViewWsdlMockResultAction(WsdlMockResult result) {
        super("Show Results");

        this.result = result;
    }

    public void actionPerformed(ActionEvent e) {
        try {
            if (result.isDiscarded()) {
                UISupport.showInfoMessage("Request has been discarded..");
            } else {
                UISupport.showDesktopPanel(buildFrame());
            }
        } catch (Exception ex) {
            SoapUI.logError(ex);
        }
    }

    private DesktopPanel buildFrame() {
        if (desktopPanel == null) {
            String title = "Mock Result for [" + result.getMockResponse().getName() + "]";
            desktopPanel = new DefaultDesktopPanel(title, title, buildContent());
        }

        return desktopPanel;
    }

    private JComponent buildContent() {
        JTabbedPane messageTabs = new JTabbedPane();
        messageTabs.addTab("Request", buildRequestTab());
        messageTabs.addTab("Response", buildResponseTab());
        messageTabs.setPreferredSize(new Dimension(500, 400));

        JPanel panel = new JPanel(new BorderLayout());
        panel.add(UISupport.createTabPanel(messageTabs, true), BorderLayout.CENTER);

        ButtonBarBuilder builder = new ButtonBarBuilder();
        builder.addFixed(new JLabel("Mock Request handled at " + new Date(result.getTimestamp()) + ", time taken: "
                + result.getTimeTaken() + "ms"));
        builder.addGlue();
        builder.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
        panel.add(builder.getPanel(), BorderLayout.PAGE_START);

        return panel;
    }

    private Component buildResponseTab() {
        RSyntaxTextArea responseArea = SyntaxEditorUtil.createDefaultXmlSyntaxTextArea();
        responseArea.setText(XmlUtils.prettyPrintXml(result.getResponseContent()));
        responseArea.setEditable(false);
        responseArea.setToolTipText("Response Content");
        responseArea.setFont(UISupport.getEditorFont());
        RTextScrollPane scrollPane = new RTextScrollPane(responseArea);
        scrollPane.setFoldIndicatorEnabled(true);
        scrollPane.setLineNumbersEnabled(true);

        JSplitPane split = UISupport.createVerticalSplit(new JScrollPane(JTableFactory.getInstance().makeJTable(new StringToStringsMapTableModel(
                result.getResponseHeaders(), "Header", "Value", false))), scrollPane);
        split.setDividerLocation(150);
        return split;
    }

    private Component buildRequestTab() {
        RSyntaxTextArea resultArea = SyntaxEditorUtil.createDefaultXmlSyntaxTextArea();
        resultArea.setFont(UISupport.getEditorFont());
        resultArea.setText(XmlUtils.prettyPrintXml(result.getMockRequest().getRequestContent()));
        resultArea.setEditable(false);
        resultArea.setToolTipText("Request Content");

        RTextScrollPane scrollPane = new RTextScrollPane(resultArea);
        scrollPane.setFoldIndicatorEnabled(true);
        scrollPane.setLineNumbersEnabled(true);
        JSplitPane split = UISupport.createVerticalSplit(new JScrollPane(JTableFactory.getInstance().makeJTable(new StringToStringsMapTableModel(
                result.getMockRequest().getRequestHeaders(), "Header", "Value", false))), scrollPane);
        split.setDividerLocation(150);
        return split;
    }
}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.mock.ViewWsdlMockResultAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.