/* * * Paros and its related class files. * * Paros is an HTTP/HTTPS proxy for assessing web application security. * Copyright (C) 2003-2004 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: 2011/05/15 i19n // ZAP: 2012/02/18 Rationalised session handling // ZAP: 2012/04/14 Changed the method initParam to discard all edits. // ZAP: 2012/04/23 Added @Override annotation to all appropriate methods. // ZAP: 2012/10/02 Issue 385: Added support for Contexts // ZAP: 2015/02/05 Issue 1524: New Persist Session dialog // ZAP: 2015/02/10 Issue 1528: Support user defined font size // ZAP: 2017/01/09 Remove method no longer needed. package org.parosproxy.paros.view; import java.awt.CardLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JLabel; import javax.swing.JPanel; import org.parosproxy.paros.Constant; import org.parosproxy.paros.control.Control; import org.parosproxy.paros.model.Model; import org.parosproxy.paros.model.Session; import org.zaproxy.zap.utils.ZapTextArea; import org.zaproxy.zap.utils.ZapTextField; import org.zaproxy.zap.view.LayoutHelper; public class SessionGeneralPanel extends AbstractParamPanel { private static final long serialVersionUID = -8337361808959321380L; private JPanel panelSession = null; // @jve:decl-index=0:visual-constraint="10,320" private ZapTextField txtSessionName = null; private ZapTextArea txtDescription = null; private ZapTextArea location = null; public SessionGeneralPanel() { super(); initialize(); } /** * This method initializes this */ private void initialize() { this.setLayout(new CardLayout()); this.setName(Constant.messages.getString("session.general")); this.add(getPanelSession(), getPanelSession().getName()); } /** * This method initializes panelSession * * @return javax.swing.JPanel */ private JPanel getPanelSession() { if (panelSession == null) { panelSession = new JPanel(); panelSession.setLayout(new GridBagLayout()); panelSession.setName(Constant.messages.getString("session.general")); if (Model.getSingleton().getOptionsParam().getViewParam().getWmUiHandlingOption() == 0) { panelSession.setSize(180, 101); } panelSession.add(new JLabel(Constant.messages.getString("session.label.name")), LayoutHelper.getGBC(0, 0, 1, 1.0D)); panelSession.add(getTxtSessionName(), LayoutHelper.getGBC(0, 1, 1, 1.0D, new Insets(2,0,2,0))); panelSession.add(new JLabel(Constant.messages.getString("session.label.loc")), LayoutHelper.getGBC(0, 2, 1, 1.0D)); panelSession.add(getSessionLocation(), LayoutHelper.getGBC(0, 3, 1, 1.0D)); panelSession.add(new JLabel(Constant.messages.getString("session.label.desc")), LayoutHelper.getGBC(0, 4, 1, 1.0D, new Insets(2,0,2,0))); panelSession.add(getTxtDescription(), LayoutHelper.getGBC(0, 5, 1, 1.0D, 1.0D, GridBagConstraints.BOTH, new Insets(2,0,2,0))); } return panelSession; } /** * This method initializes txtSessionName * * @return org.zaproxy.zap.utils.ZapTextField */ private ZapTextField getTxtSessionName() { if (txtSessionName == null) { txtSessionName = new ZapTextField(); } return txtSessionName; } /** * This method initializes txtDescription * * @return org.zaproxy.zap.utils.ZapTextArea */ private ZapTextArea getTxtDescription() { if (txtDescription == null) { txtDescription = new ZapTextArea(); txtDescription.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED)); txtDescription.setLineWrap(true); } return txtDescription; } private ZapTextArea getSessionLocation() { if (location == null) { location = new ZapTextArea(); location.setEditable(false); } return location; } @Override public void initParam(Object obj) { Session session = (Session) obj; getTxtSessionName().setText(session.getSessionName()); getTxtSessionName().discardAllEdits(); getTxtDescription().setText(session.getSessionDesc()); getTxtDescription().discardAllEdits(); if (session.getFileName() != null) { getSessionLocation().setText(session.getFileName()); getSessionLocation().setToolTipText(session.getFileName()); // In case its really long } } @Override public void saveParam (Object obj) throws Exception { Session session = (Session) obj; boolean changed = false; if (! getTxtSessionName().getText().equals(session.getSessionName())) { session.setSessionName(getTxtSessionName().getText()); changed = true; } if (! getTxtDescription().getText().equals(session.getSessionDesc())) { session.setSessionDesc(getTxtDescription().getText()); changed = true; } // ZAP Save session details if (changed && ! session.isNewState()) { // TODO need to work out if this is really necessary, or if we can send a less 'dramatic' event ;) Control.getSingleton().saveSession(session.getFileName()); } } @Override public String getHelpIndex() { // ZAP: added help index support return "ui.dialogs.sessprop"; } } // @jve:decl-index=0:visual-constraint="10,10"