/*
*
* 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: 2013/03/03 Issue 546: Remove all template Javadoc comments
// ZAP: 2013/11/28 Issue 923: Allow individual rule thresholds and strengths to be set via GUI
// ZAP: 2014/11/19 Issue 1412: Manage scan policies
// ZAP: 2017/01/09 Remove method no longer needed.
package org.zaproxy.zap.extension.ascan;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowSorter;
import javax.swing.SortOrder;
import javax.swing.table.TableColumn;
import org.parosproxy.paros.Constant;
import org.parosproxy.paros.core.scanner.Plugin.AlertThreshold;
import org.parosproxy.paros.core.scanner.Plugin.AttackStrength;
import org.parosproxy.paros.core.scanner.PluginFactory;
import org.parosproxy.paros.view.AbstractParamPanel;
import org.zaproxy.zap.utils.DisplayUtils;
public class PolicyCategoryPanel extends AbstractParamPanel {
private static final long serialVersionUID = 1L;
private JTable tableTest = null;
private JScrollPane jScrollPane = null;
private CategoryTableModel categoryTableModel = null; // @jve:decl-index=0:parse,visual-constraint="294,249"
private static final int[] width = {300,100, 100, 200};
private int category;
public PolicyCategoryPanel(int category, PluginFactory pluginFactory, AlertThreshold defaultThreshold) {
super();
this.category = category;
initialize();
getCategoryTableModel().setTable(category, pluginFactory, defaultThreshold);
}
/**
* This method initializes this
*/
private void initialize() {
java.awt.GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
this.setLayout(new GridBagLayout());
this.setSize(375, 204);
this.setName("categoryPanel");
gridBagConstraints11.weightx = 1.0;
gridBagConstraints11.weighty = 1.0;
gridBagConstraints11.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints11.gridx = 0;
gridBagConstraints11.gridy = 1;
gridBagConstraints11.insets = new java.awt.Insets(0,0,0,0);
gridBagConstraints11.anchor = java.awt.GridBagConstraints.NORTHWEST;
this.add(getJScrollPane(), gridBagConstraints11);
}
/**
* This method initializes tableTest
*
* @return javax.swing.JTable
*/
private JTable getTableTest() {
if (tableTest == null) {
tableTest = new JTable();
tableTest.setModel(getCategoryTableModel());
tableTest.setRowHeight(DisplayUtils.getScaledSize(18));
tableTest.setIntercellSpacing(new java.awt.Dimension(1,1));
tableTest.setAutoCreateRowSorter(true);
//Default sort by name (column 0)
List <RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>(1);
sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
tableTest.getRowSorter().setSortKeys(sortKeys);
for (int i = 0; i < tableTest.getColumnCount()-1; i++) {
TableColumn column = tableTest.getColumnModel().getColumn(i);
column.setPreferredWidth(width[i]);
}
JComboBox<String> jcb1 = new JComboBox<>();
for (AlertThreshold level : AlertThreshold.values()) {
jcb1.addItem(Constant.messages.getString("ascan.policy.level." + level.name().toLowerCase()));
}
tableTest.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(jcb1));
JComboBox<String> jcb2 = new JComboBox<>();
for (AttackStrength level : AttackStrength.values()) {
jcb2.addItem(Constant.messages.getString("ascan.policy.level." + level.name().toLowerCase()));
}
tableTest.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(jcb2));
}
return tableTest;
}
@Override
public void initParam(Object obj) {
}
@Override
public void saveParam(Object obj) throws Exception {
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setViewportView(getTableTest());
jScrollPane.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
}
return jScrollPane;
}
/**
* This method initializes categoryTableModel
*
* @return org.parosproxy.paros.plugin.scanner.CategoryTableModel
*/
private CategoryTableModel getCategoryTableModel() {
if (categoryTableModel == null) {
categoryTableModel = new CategoryTableModel();
}
return categoryTableModel;
}
public void setPluginFactory(PluginFactory pluginFactory, AlertThreshold defaultThreshold) {
getCategoryTableModel().setTable(category, pluginFactory, defaultThreshold);
this.modelChanged();
}
@Override
public String getHelpIndex() {
return "ui.dialogs.scanpolicy";
}
public void modelChanged() {
this.getCategoryTableModel().fireTableDataChanged();
}
}