/* * Zed Attack Proxy (ZAP) and its related class files. * * ZAP is an HTTP/HTTPS proxy for assessing web application security. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.zaproxy.zap.extension.encoder2; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.border.TitledBorder; import org.parosproxy.paros.Constant; import org.parosproxy.paros.model.OptionsParam; import org.parosproxy.paros.view.AbstractParamPanel; import org.zaproxy.zap.utils.FontUtils; public class EncodeDecodeParamPanel extends AbstractParamPanel { private static final long serialVersionUID = -6357927982804314157L; private static final String NAME = Constant.messages.getString("enc2.optionspanel.name"); private static final String NAME_BASE64 = Constant.messages.getString("enc2.optionspanel.base64"); private static final String CHARSET_LABEL = Constant.messages.getString("enc2.optionspanel.base64.charset"); private static final String BREAK_LINES_LABEL = Constant.messages.getString("enc2.optionspanel.base64.breaklines"); private static final String[] CHARSETS = {"ISO-8859-1", "US-ASCII", "UTF-8"}; private JComboBox<String> comboBoxBase64Charset; private JCheckBox checkBoxBase64DoBreakLines; private JPanel base64Panel; public EncodeDecodeParamPanel() { super(); setName(NAME); setLayout(new BorderLayout(0, 0)); final JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(new EmptyBorder(2, 2, 2, 2)); panel.add(getBase64Panel(), BorderLayout.NORTH); add(panel); } private JPanel getBase64Panel() { if (base64Panel == null) { base64Panel = new JPanel(); base64Panel.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); base64Panel.setBorder(BorderFactory.createTitledBorder(null, NAME_BASE64, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, FontUtils.getFont(FontUtils.Size.standard), java.awt.Color.black)); gbc.gridx = 0; gbc.gridy = 0; gbc.insets = new java.awt.Insets(2,2,2,2); gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.weightx = 0.5D; base64Panel.add(new JLabel(CHARSET_LABEL), gbc); gbc.gridx = 1; gbc.gridy = 0; gbc.ipadx = 50; base64Panel.add(getComboBoxBase64Charset(), gbc); gbc.gridx = 0; gbc.gridy = 1; gbc.ipadx = 0; base64Panel.add(new JLabel(BREAK_LINES_LABEL), gbc); gbc.gridx = 1; gbc.gridy = 1; gbc.ipadx = 50; base64Panel.add(getCheckBoxBoxBase64DoBreakLines(), gbc); } return base64Panel; } private JComboBox<String> getComboBoxBase64Charset() { if (comboBoxBase64Charset == null) { comboBoxBase64Charset = new JComboBox<>(new DefaultComboBoxModel<>(CHARSETS)); } return comboBoxBase64Charset; } private JCheckBox getCheckBoxBoxBase64DoBreakLines() { if (checkBoxBase64DoBreakLines == null) { checkBoxBase64DoBreakLines = new JCheckBox(); } return checkBoxBase64DoBreakLines; } @Override public void initParam(Object obj) { final OptionsParam options = (OptionsParam) obj; final EncodeDecodeParam param = options.getParamSet(EncodeDecodeParam.class); comboBoxBase64Charset.setSelectedItem(param.getBase64Charset()); checkBoxBase64DoBreakLines.setSelected(param.isBase64DoBreakLines()); } @Override public void saveParam(Object obj) throws Exception { final OptionsParam options = (OptionsParam) obj; final EncodeDecodeParam param = options.getParamSet(EncodeDecodeParam.class); param.setBase64Charset((String)comboBoxBase64Charset.getSelectedItem()); param.setBase64DoBreakLines(checkBoxBase64DoBreakLines.isSelected()); } @Override public String getHelpIndex() { return null; // TODO } }