/* * * Paros and its related class files. * * Paros is an HTTP/HTTPS proxy for assessing web application security. * Copyright (C) 2003-2005 Chinotec Technologies Company * * This program is free software; you can redistribute it and/or * modify it under the terms of the Clarified Artistic License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * Clarified Artistic License for more details. * * You should have received a copy of the Clarified Artistic License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // ZAP: 2012/04/25 Added type argument to generic type and added @Override // annotation to all appropriate methods. // ZAP: 2013/01/23 Clean up of exception handling/logging. // ZAP: 2013/03/03 Issue 547: Deprecate unused classes and methods // ZAP: 2016/04/05 Issue 2458: Fix xlint warning messages package org.parosproxy.paros.extension.history; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Frame; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Rectangle; import java.awt.Robot; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.io.File; import java.net.URL; import java.util.Vector; import javax.imageio.ImageIO; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.filechooser.FileFilter; import org.apache.log4j.Logger; import org.parosproxy.paros.control.Control; import org.parosproxy.paros.extension.AbstractDialog; import org.parosproxy.paros.model.Model; /** * @deprecated No longer used/needed. It will be removed in a future release. */ @Deprecated public class BrowserDialog extends AbstractDialog { private static final long serialVersionUID = 1L; private static final String TITLE = "View in Browser: "; private static final Logger logger = Logger.getLogger(BrowserDialog.class); private JPanel jContentPane = null; private JPanel jPanelBottom = null; private JLabel jLabel = null; private JButton btnCapture = null; private JButton btnStop = null; private JButton btnClose = null; // ZAP: Added type argument. private Vector<URL> URLs = new Vector<>(); private JPanel jPanel = null; // ZAP: Disabled the platform specific browser //private EmbeddedBrowser embeddedBrowser = null; /** * This is the default constructor */ public BrowserDialog() { super(); initialize(); } public BrowserDialog(Frame frame, boolean modal) { super(frame, modal); initialize(); } /** * This method initializes this */ private void initialize() { this.setContentPane(getJContentPane()); this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); this.setTitle(TITLE); this.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(WindowEvent winEvt) { stop(); BrowserDialog.this.setVisible(false); } }); pack(); if (Model.getSingleton().getOptionsParam().getViewParam().getWmUiHandlingOption() == 0) { this.setSize(640,480); } } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (jContentPane == null) { jContentPane = new JPanel(); jContentPane.setLayout(new BorderLayout()); jContentPane.add(getJPanel(), java.awt.BorderLayout.CENTER); jContentPane.add(getJPanelBottom(), java.awt.BorderLayout.SOUTH); } return jContentPane; } /** * This method initializes jPanelBottom * * @return javax.swing.JPanel */ private JPanel getJPanelBottom() { if (jPanelBottom == null) { GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); gridBagConstraints2.insets = new java.awt.Insets(5,3,5,5); gridBagConstraints2.gridy = 0; gridBagConstraints2.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints2.gridx = 2; GridBagConstraints gridBagConstraints3 = new GridBagConstraints(); gridBagConstraints3.insets = new java.awt.Insets(5,3,5,2); gridBagConstraints3.gridy = 0; gridBagConstraints3.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints3.gridx = 3; GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.insets = new java.awt.Insets(5,3,5,2); gridBagConstraints1.gridy = 0; gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints1.gridx = 1; GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(10,5,10,2); gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weighty = 1.0D; gridBagConstraints.weightx = 1.0D; gridBagConstraints.gridx = 0; jLabel = new JLabel(); jLabel.setText(" "); jLabel.setComponentOrientation(java.awt.ComponentOrientation.UNKNOWN); jPanelBottom = new JPanel(); jPanelBottom.setLayout(new GridBagLayout()); jPanelBottom.add(jLabel, gridBagConstraints); jPanelBottom.add(getBtnCapture(), gridBagConstraints1); jPanelBottom.add(getBtnStop(), gridBagConstraints2); jPanelBottom.add(getBtnClose(), gridBagConstraints3); } return jPanelBottom; } /** * This method initializes jButton * * @return javax.swing.JButton */ private JButton getBtnCapture() { if (btnCapture == null) { btnCapture = new JButton(); btnCapture.setText("Capture"); btnCapture.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); btnCapture.setHorizontalTextPosition(javax.swing.SwingConstants.TRAILING); // btnCapture.setPreferredSize(new java.awt.Dimension(73,28)); btnCapture.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent e) { capture(); } }); } return btnCapture; } private JButton getBtnStop() { if (btnStop == null) { btnStop = new JButton(); btnStop.setText("Stop"); btnStop.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); btnStop.setHorizontalTextPosition(javax.swing.SwingConstants.TRAILING); // btnStop.setPreferredSize(new java.awt.Dimension(73,28)); btnStop.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent e) { /* int i=0; for (i=0;i<URLs.size();i++){ System.out.println(URLs.get(i)); } */ URLs.clear(); stop(); } }); } return btnStop; } private void stop() { // ZAP: Disabled the platform specific browser // getEmbeddedBrowser().stop(); Control.getSingleton().getProxy().setEnableCacheProcessing(false); } private void capture(){ try { // this.setAlwaysOnTop(true); BufferedImage screencapture = new Robot().createScreenCapture( new Rectangle( this.getX(), this.getY(), this.getWidth(), this.getHeight() - this.jPanelBottom.getHeight()) ); // Save as JPEG JFileChooser chooser = new JFileChooser(); chooser.addChoosableFileFilter(new FileFilter() { @Override public boolean accept(File file) { String filename = file.getName(); return filename.endsWith(".png"); } @Override public String getDescription() { return "*.png"; } } ); chooser.showSaveDialog(this); File file = chooser.getSelectedFile(); if (file!=null) ImageIO.write(screencapture, "png", file); } catch (Exception e) { logger.error(e.getMessage(), e); } // this.setAlwaysOnTop(false); } /** * This method initializes jButton1 * * @return javax.swing.JButton */ private JButton getBtnClose() { if (btnClose == null) { btnClose = new JButton(); btnClose.setText("Close"); btnClose.setVisible(false); btnClose.addActionListener(new ActionListener() { // Close this window @Override public void actionPerformed(ActionEvent arg0) { stop(); } }); } return btnClose; } public void addURL(URL arg){ URLs.add(arg); } /** * This method initializes jPanel * * @return javax.swing.JPanel */ private JPanel getJPanel() { if (jPanel == null) { jPanel = new JPanel(); jPanel.setLayout(new CardLayout()); jPanel.setPreferredSize(new java.awt.Dimension(400,300)); // ZAP: Disabled the platform specific browser //jPanel.add(getEmbeddedBrowser(), getEmbeddedBrowser().getName()); } return jPanel; } void setURLTitle(String url) { setTitle(TITLE + url); } }