/* * 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.impl.wsdl.actions.iface.tools.wsi; import com.eviware.soapui.SoapUI; import com.eviware.soapui.support.DefaultHyperlinkListener; import com.eviware.soapui.support.UISupport; import com.eviware.soapui.support.components.JXToolBar; import com.eviware.soapui.support.xml.XmlUtils; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.JEditorPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTextArea; import javax.swing.text.html.HTMLEditorKit; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.io.File; import java.io.FileWriter; /** * Panel for displaying a WS-I Report * * @author ole.matzura */ public class WSIReportPanel extends JPanel { private File reportFile; private JEditorPane editorPane; private final String configFile; private final File logFile; private SaveReportAction saveReportAction; // private BrowserComponent browser; public WSIReportPanel(File reportFile, String configFile, File logFile, boolean addToolbar) throws Exception { super(new BorderLayout()); this.reportFile = reportFile; this.configFile = configFile; this.logFile = logFile; saveReportAction = new SaveReportAction(); if (addToolbar) { add(buildToolbar(), BorderLayout.NORTH); } add(buildContent(), BorderLayout.CENTER); } public SaveReportAction getSaveReportAction() { return saveReportAction; } private JComponent buildToolbar() { JXToolBar toolbar = UISupport.createToolbar(); toolbar.addFixed(UISupport.createToolbarButton(saveReportAction)); toolbar.addGlue(); toolbar.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); return toolbar; } private JComponent buildContent() throws Exception { JTabbedPane tabs = new JTabbedPane(JTabbedPane.BOTTOM); editorPane = new JEditorPane(); editorPane.setEditorKit(new HTMLEditorKit()); editorPane.setEditable(false); editorPane.setPage(reportFile.toURI().toURL()); editorPane.addHyperlinkListener(new DefaultHyperlinkListener(editorPane)); JTextArea configContent = new JTextArea(); configContent.setEditable(false); configContent.setText(configFile); // browser = new BrowserComponent( false ); // browser.navigate( reportFile.toURI().toURL().toString(), null ); JScrollPane scrollPane = new JScrollPane(editorPane); UISupport.addPreviewCorner(scrollPane, true); tabs.addTab("Report", scrollPane); tabs.addTab("Config", new JScrollPane(configContent)); if (logFile != null) { // String logFileContent = XmlObject.Factory.parse( logFile // ).toString(); String logFileContent = XmlUtils.createXmlObject(logFile).toString(); JTextArea logContent = new JTextArea(); logContent.setEditable(false); logContent.setText(logFileContent); tabs.addTab("Log", new JScrollPane(logContent)); } return UISupport.createTabPanel(tabs, true); } public class SaveReportAction extends AbstractAction { public SaveReportAction() { putValue(Action.SMALL_ICON, UISupport.createImageIcon("/export.png")); putValue(Action.SHORT_DESCRIPTION, "Saves this report to a file"); } public void actionPerformed(ActionEvent e) { File file = UISupport.getFileDialogs().saveAs(this, "Save Report", "html", "HTML files", null); if (file == null) { return; } try { FileWriter writer = new FileWriter(file); writer.write(editorPane.getText()); writer.close(); UISupport.showInfoMessage("Report saved to [" + file.getAbsolutePath() + "]"); } catch (Exception e1) { SoapUI.logError(e1); } } } }