/* * * 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: 2012/03/15 Removed the options to change the display of the ManualRequestEditorDialog, // now they are changed dynamically. // ZAP: 2012/04/25 Added @Override annotation to all appropriate methods. // ZAP: 2013/12/13 Added support for a new option 'show tab names'. // ZAP: 2014/04/25 Issue 642: Add timestamps to Output tab(s) // ZAP: 2014/10/09 Issue 1359: Options for splash screen // ZAP: 2014/12/16 Issue 1466: Config option for 'large display' size // ZAP: 2016/04/04 Do not require a restart to show/hide the tool bar // ZAP: 2016/04/06 Fix layouts' issues // ZAP: 2017/01/09 Remove method no longer needed. package org.parosproxy.paros.extension.option; import java.awt.CardLayout; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.GraphicsEnvironment; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import javax.swing.BorderFactory; import javax.swing.DefaultListCellRenderer; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.plaf.basic.BasicComboBoxRenderer; import org.parosproxy.paros.Constant; import org.parosproxy.paros.model.Model; import org.parosproxy.paros.model.OptionsParam; import org.parosproxy.paros.view.AbstractParamPanel; import org.parosproxy.paros.view.WorkbenchPanel; import org.zaproxy.zap.extension.httppanel.view.largerequest.LargeRequestUtil; import org.zaproxy.zap.extension.httppanel.view.largeresponse.LargeResponseUtil; import org.zaproxy.zap.utils.FontUtils; import org.zaproxy.zap.utils.TimeStampUtils; import org.zaproxy.zap.utils.ZapNumberSpinner; import org.zaproxy.zap.view.LayoutHelper; // ZAP: 2011: added more configuration options public class OptionsViewPanel extends AbstractParamPanel { private static final long serialVersionUID = 1L; private static final String TIME_STAMP_FORMAT_COMBOBOX_TOOL_TIP = Constant.messages.getString("options.display.timestamp.format.combobox.tooltip"); private static final String TIME_STAMP_FORMAT_DATETIME = Constant.messages.getString("timestamp.format.datetime"); private static final String TIME_STAMP_FORMAT_ISO8601 = Constant.messages.getString("timestamp.format.iso8601"); private static final String TIME_STAMP_FORMAT_TIMEONLY = Constant.messages.getString("timestamp.format.timeonly"); private JPanel panelMisc = null; private JCheckBox chkShowTabNames = null; private JCheckBox chkProcessImages = null; private JCheckBox chkShowMainToolbar = null; private JCheckBox chkAdvancedView = null; private JCheckBox chkAskOnExit = null; private JCheckBox chkWmUiHandling = null; private JCheckBox chkOutputTabTimeStamping = null; private JCheckBox chkShowSplashScreen = null; private JCheckBox scaleImages = null; private JCheckBox showLocalConnectRequestsCheckbox; private JComboBox<String> brkPanelViewSelect = null; private JComboBox<String> displaySelect = null; private JComboBox<ResponsePanelPositionUI> responsePanelPositionComboBox; private JComboBox<String> timeStampsFormatSelect = null; private JComboBox<String> fontName = null; private ZapNumberSpinner largeRequestSize = null; private ZapNumberSpinner largeResponseSize = null; private ZapNumberSpinner fontSize = null; private JLabel brkPanelViewLabel = null; private JLabel advancedViewLabel = null; private JLabel wmUiHandlingLabel = null; private JLabel askOnExitLabel = null; private JLabel displayLabel = null; private JLabel showMainToolbarLabel = null; private JLabel processImagesLabel = null; private JLabel showTabNamesLabel = null; private JLabel outputTabTimeStampLabel = null; private JLabel outputTabTimeStampExampleLabel = null; private JLabel showSplashScreenLabel = null; private JLabel largeRequestLabel = null; private JLabel largeResponseLabel = null; private JLabel fontExampleLabel = null; public OptionsViewPanel() { super(); initialize(); } /** * This method initializes this */ private void initialize() { this.setLayout(new CardLayout()); this.setName(Constant.messages.getString("view.options.title")); this.add(getPanelMisc(), getPanelMisc().getName()); } /** * This method initializes panelMisc * * @return javax.swing.JPanel */ private JPanel getPanelMisc() { if (panelMisc == null) { panelMisc = new JPanel(); panelMisc.setLayout(new GridBagLayout()); if (Model.getSingleton().getOptionsParam().getViewParam().getWmUiHandlingOption() == 0) { panelMisc.setSize(114, 132); } panelMisc.setName(Constant.messages.getString("view.options.misc.title")); displayLabel = new JLabel(Constant.messages.getString("view.options.label.display")); brkPanelViewLabel = new JLabel(Constant.messages.getString("view.options.label.brkPanelView")); advancedViewLabel = new JLabel(Constant.messages.getString("view.options.label.advancedview")); wmUiHandlingLabel = new JLabel(Constant.messages.getString("view.options.label.wmuihandler")); askOnExitLabel = new JLabel(Constant.messages.getString("view.options.label.askonexit")); showMainToolbarLabel = new JLabel(Constant.messages.getString("view.options.label.showMainToolbar")); processImagesLabel = new JLabel(Constant.messages.getString("view.options.label.processImages")); showTabNamesLabel = new JLabel(Constant.messages.getString("view.options.label.showTabNames")); outputTabTimeStampLabel = new JLabel(Constant.messages.getString("options.display.timestamp.format.outputtabtimestamps.label")); largeRequestLabel = new JLabel(Constant.messages.getString("view.options.label.largeRequestSize")); largeResponseLabel = new JLabel(Constant.messages.getString("view.options.label.largeResponseSize")); outputTabTimeStampExampleLabel = new JLabel(TimeStampUtils.currentDefaultFormattedTimeStamp()); showSplashScreenLabel = new JLabel(Constant.messages.getString("view.options.label.showSplashScreen")); int row = 0; displayLabel.setLabelFor(getDisplaySelect()); panelMisc.add(displayLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getDisplaySelect(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; JLabel responsePanelPositionLabel = new JLabel(Constant.messages.getString("view.options.label.responsepanelpos")); panelMisc.add(responsePanelPositionLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getResponsePanelPositionComboBox(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; brkPanelViewLabel.setLabelFor(getBrkPanelViewSelect()); panelMisc.add(brkPanelViewLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getBrkPanelViewSelect(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; largeRequestLabel.setLabelFor(getLargeRequestSize()); panelMisc.add(largeRequestLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getLargeRequestSize(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; largeResponseLabel.setLabelFor(getLargeResponseSize()); panelMisc.add(largeResponseLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getLargeResponseSize(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; advancedViewLabel.setLabelFor(getChkAdvancedView()); panelMisc.add(advancedViewLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getChkAdvancedView(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; wmUiHandlingLabel.setLabelFor(getChkWmUiHandling()); panelMisc.add(wmUiHandlingLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getChkWmUiHandling(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; askOnExitLabel.setLabelFor(getChkAskOnExit()); panelMisc.add(askOnExitLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getChkAskOnExit(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; showMainToolbarLabel.setLabelFor(getChkShowMainToolbar()); panelMisc.add(showMainToolbarLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getChkShowMainToolbar(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; processImagesLabel.setLabelFor(getChkProcessImages()); panelMisc.add(processImagesLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getChkProcessImages(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; Insets insets = new Insets(2, 2, 2, 2); String labelText = Constant.messages.getString("view.options.label.showlocalconnectrequests"); JLabel showConnectRequestLabel = new JLabel(labelText); showConnectRequestLabel.setLabelFor(getShowLocalConnectRequestsCheckbox()); panelMisc.add(showConnectRequestLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, insets)); panelMisc.add(getShowLocalConnectRequestsCheckbox(), LayoutHelper.getGBC(1, row, 1, 1.0D, insets)); row++; showTabNamesLabel.setLabelFor(getShowTabNames()); panelMisc.add(showTabNamesLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getShowTabNames(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; showSplashScreenLabel.setLabelFor(getShowSplashScreen()); panelMisc.add(showSplashScreenLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getShowSplashScreen(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; outputTabTimeStampLabel.setLabelFor(getChkOutputTabTimeStamps()); panelMisc.add(outputTabTimeStampLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getChkOutputTabTimeStamps(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; outputTabTimeStampExampleLabel.setLabelFor(getTimeStampsFormatSelect()); panelMisc.add(getTimeStampsFormatSelect(), LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(outputTabTimeStampExampleLabel, LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; JLabel fontNameLabel = new JLabel(Constant.messages.getString("view.options.label.fontName")); fontNameLabel.setLabelFor(getFontName()); panelMisc.add(fontNameLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getFontName(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; JLabel fontSizeLabel = new JLabel(Constant.messages.getString("view.options.label.fontSize")); fontSizeLabel.setLabelFor(getFontSize()); panelMisc.add(fontSizeLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getFontSize(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; JLabel fontExampleLabel = new JLabel(Constant.messages.getString("view.options.label.fontExample")); fontExampleLabel.setLabelFor(getFontExampleLabel()); panelMisc.add(fontExampleLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getFontExampleLabel(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; JLabel scaleImagesLabel = new JLabel(Constant.messages.getString("view.options.label.scaleImages")); fontExampleLabel.setLabelFor(getScaleImages()); panelMisc.add(scaleImagesLabel, LayoutHelper.getGBC(0, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); panelMisc.add(getScaleImages(), LayoutHelper.getGBC(1, row, 1, 1.0D, new java.awt.Insets(2,2,2,2))); row++; panelMisc.add(new JLabel(""), LayoutHelper.getGBC(0, row, 1, 1.0D, 1.0D)); } return panelMisc; } private JCheckBox getShowTabNames() { if (chkShowTabNames == null) { chkShowTabNames = new JCheckBox(); chkShowTabNames.setVerticalAlignment(javax.swing.SwingConstants.TOP); chkShowTabNames.setVerticalTextPosition(javax.swing.SwingConstants.TOP); } return chkShowTabNames; } private JCheckBox getShowSplashScreen() { if (chkShowSplashScreen == null) { chkShowSplashScreen = new JCheckBox(); chkShowSplashScreen.setVerticalAlignment(javax.swing.SwingConstants.TOP); chkShowSplashScreen.setVerticalTextPosition(javax.swing.SwingConstants.TOP); } return chkShowSplashScreen; } private JCheckBox getChkProcessImages() { if (chkProcessImages == null) { chkProcessImages = new JCheckBox(); chkProcessImages.setVerticalAlignment(javax.swing.SwingConstants.TOP); chkProcessImages.setVerticalTextPosition(javax.swing.SwingConstants.TOP); } return chkProcessImages; } private JCheckBox getChkShowMainToolbar() { if (chkShowMainToolbar == null) { chkShowMainToolbar = new JCheckBox(); chkShowMainToolbar.setVerticalAlignment(javax.swing.SwingConstants.TOP); chkShowMainToolbar.setVerticalTextPosition(javax.swing.SwingConstants.TOP); } return chkShowMainToolbar; } private JCheckBox getChkWmUiHandling() { if (chkWmUiHandling == null) { chkWmUiHandling = new JCheckBox(); chkWmUiHandling.setVerticalAlignment(javax.swing.SwingConstants.TOP); chkWmUiHandling.setVerticalTextPosition(javax.swing.SwingConstants.TOP); } return chkWmUiHandling; } private JCheckBox getChkAskOnExit() { if (chkAskOnExit == null) { chkAskOnExit = new JCheckBox(); chkAskOnExit.setVerticalAlignment(javax.swing.SwingConstants.TOP); chkAskOnExit.setVerticalTextPosition(javax.swing.SwingConstants.TOP); } return chkAskOnExit; } private JComboBox<String> getDisplaySelect() { if (displaySelect == null) { displaySelect = new JComboBox<>(); displaySelect.addItem(Constant.messages.getString("view.options.label.display.left")); displaySelect.addItem(Constant.messages.getString("view.options.label.display.bottom")); displaySelect.addItem(Constant.messages.getString("view.options.label.display.full")); } return displaySelect; } private JComboBox<ResponsePanelPositionUI> getResponsePanelPositionComboBox() { if (responsePanelPositionComboBox == null) { responsePanelPositionComboBox = new JComboBox<>(); responsePanelPositionComboBox.addItem( new ResponsePanelPositionUI( Constant.messages.getString("view.options.label.responsepanelpos.tabs"), WorkbenchPanel.ResponsePanelPosition.TABS_SIDE_BY_SIDE)); responsePanelPositionComboBox.addItem( new ResponsePanelPositionUI( Constant.messages.getString("view.options.label.responsepanelpos.sideBySide"), WorkbenchPanel.ResponsePanelPosition.PANELS_SIDE_BY_SIDE)); responsePanelPositionComboBox.addItem( new ResponsePanelPositionUI( Constant.messages.getString("view.options.label.responsepanelpos.above"), WorkbenchPanel.ResponsePanelPosition.PANEL_ABOVE)); } return responsePanelPositionComboBox; } private JComboBox<String> getBrkPanelViewSelect() { if (brkPanelViewSelect == null) { brkPanelViewSelect = new JComboBox<>(); brkPanelViewSelect.addItem(Constant.messages.getString("view.options.label.brkPanelView.toolbaronly")); brkPanelViewSelect.addItem(Constant.messages.getString("view.options.label.brkPanelView.breakonly")); brkPanelViewSelect.addItem(Constant.messages.getString("view.options.label.brkPanelView.both")); } return brkPanelViewSelect; } private JCheckBox getChkAdvancedView() { if (chkAdvancedView == null) { chkAdvancedView = new JCheckBox(); chkAdvancedView.setVerticalAlignment(javax.swing.SwingConstants.TOP); chkAdvancedView.setVerticalTextPosition(javax.swing.SwingConstants.TOP); } return chkAdvancedView; } private JCheckBox getChkOutputTabTimeStamps() { if (chkOutputTabTimeStamping == null) { chkOutputTabTimeStamping = new JCheckBox(); chkOutputTabTimeStamping.setVerticalAlignment(javax.swing.SwingConstants.TOP); chkOutputTabTimeStamping.setVerticalTextPosition(javax.swing.SwingConstants.TOP); chkOutputTabTimeStamping.addItemListener(new java.awt.event.ItemListener(){ @Override public void itemStateChanged(ItemEvent e) { timeStampsFormatSelect.setEnabled(e.getStateChange() == ItemEvent.SELECTED); }; }); } return chkOutputTabTimeStamping; } private JComboBox<String> getTimeStampsFormatSelect() { if (timeStampsFormatSelect == null) { String[] timeStampFormatStrings = {TIME_STAMP_FORMAT_DATETIME, TIME_STAMP_FORMAT_ISO8601, TIME_STAMP_FORMAT_TIMEONLY}; timeStampsFormatSelect = new JComboBox<String>(timeStampFormatStrings); timeStampsFormatSelect.setToolTipText(TIME_STAMP_FORMAT_COMBOBOX_TOOL_TIP); timeStampsFormatSelect.setSelectedItem(getTimeStampsFormatSelect().getSelectedItem()); timeStampsFormatSelect.setEditable(true); if (chkOutputTabTimeStamping.isSelected()) //The drop-down should only be enabled if time stamping is turned on timeStampsFormatSelect.setEnabled(true); else timeStampsFormatSelect.setEnabled(false); timeStampsFormatSelect.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent e) { String selectedDateFormat = (String)getTimeStampsFormatSelect().getSelectedItem(); outputTabTimeStampExampleLabel.setText(TimeStampUtils.currentFormattedTimeStamp(selectedDateFormat)); }; }); } return timeStampsFormatSelect; } private JCheckBox getShowLocalConnectRequestsCheckbox() { if (showLocalConnectRequestsCheckbox == null) { showLocalConnectRequestsCheckbox = new JCheckBox(); } return showLocalConnectRequestsCheckbox; } private ZapNumberSpinner getLargeRequestSize() { if (largeRequestSize == null) { largeRequestSize = new ZapNumberSpinner(-1, LargeRequestUtil.DEFAULT_MIN_CONTENT_LENGTH, Integer.MAX_VALUE); } return largeRequestSize; } private ZapNumberSpinner getLargeResponseSize() { if (largeResponseSize == null) { largeResponseSize = new ZapNumberSpinner(-1, LargeResponseUtil.DEFAULT_MIN_CONTENT_LENGTH, Integer.MAX_VALUE); } return largeResponseSize; } private ZapNumberSpinner getFontSize() { if (fontSize == null) { fontSize = new ZapNumberSpinner(-1, 8, 100); if (! FontUtils.canChangeSize()) { fontSize.setEnabled(false); } fontSize.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { // Show what the default font will look like setExampleFont(); }}); } return fontSize; } private void setExampleFont() { String name; if (getFontName().getSelectedItem() == null) { name = ""; } else { name = (String)getFontName().getSelectedItem(); } Font font = FontUtils.getFont(name); int size = getFontSize().getValue(); if (size == -1) { size = FontUtils.getSystemDefaultFont().getSize(); } getFontExampleLabel().setFont(font.deriveFont((float)size)); } @SuppressWarnings("unchecked") private JComboBox<String> getFontName() { if (fontName == null) { fontName = new JComboBox<String>(); fontName.setRenderer(new JComboBoxFontRenderer()); String fonts[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); fontName.addItem(" "); // Default to system font for (String font : fonts) { fontName.addItem(font); } if (! FontUtils.canChangeSize()) { fontName.setEnabled(false); } fontName.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // Show what the default font will look like setExampleFont(); }}); } return fontName; } private JLabel getFontExampleLabel() { if (fontExampleLabel == null) { fontExampleLabel = new JLabel(Constant.messages.getString("view.options.label.exampleText")); fontExampleLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK)); } return fontExampleLabel; } private JCheckBox getScaleImages() { if (scaleImages == null) { scaleImages = new JCheckBox(); if (! FontUtils.canChangeSize()) { scaleImages.setEnabled(false); } } return scaleImages; } @Override public void initParam(Object obj) { OptionsParam options = (OptionsParam) obj; getShowTabNames().setSelected(options.getViewParam().getShowTabNames()); getShowSplashScreen().setSelected(options.getViewParam().isShowSplashScreen()); getChkProcessImages().setSelected(options.getViewParam().getProcessImages() > 0); displaySelect.setSelectedIndex(options.getViewParam().getDisplayOption()); selectResponstPanelPosition(options.getViewParam().getResponsePanelPosition()); brkPanelViewSelect.setSelectedIndex(options.getViewParam().getBrkPanelViewOption()); getChkShowMainToolbar().setSelected(options.getViewParam().isShowMainToolbar()); chkAdvancedView.setSelected(options.getViewParam().getAdvancedViewOption() > 0); chkAskOnExit.setSelected(options.getViewParam().getAskOnExitOption() > 0); chkWmUiHandling.setSelected(options.getViewParam().getWmUiHandlingOption() > 0); getChkOutputTabTimeStamps().setSelected(options.getViewParam().isOutputTabTimeStampingEnabled()); timeStampsFormatSelect.setSelectedItem(options.getViewParam().getOutputTabTimeStampsFormat()); getShowLocalConnectRequestsCheckbox().setSelected(options.getViewParam().isShowLocalConnectRequests()); largeRequestSize.setValue(options.getViewParam().getLargeRequestSize()); largeResponseSize.setValue(options.getViewParam().getLargeResponseSize()); getFontSize().setValue(options.getViewParam().getFontSize()); getFontName().setSelectedItem(options.getViewParam().getFontName()); getScaleImages().setSelected(options.getViewParam().isScaleImages()); } private void selectResponstPanelPosition(String positionName) { for (int i = 0; i < getResponsePanelPositionComboBox().getItemCount(); i++) { ResponsePanelPositionUI item = getResponsePanelPositionComboBox().getItemAt(i); if (item.getPosition().name().equals(positionName)) { getResponsePanelPositionComboBox().setSelectedIndex(i); break; } } if (getResponsePanelPositionComboBox().getSelectedIndex() == -1) { getResponsePanelPositionComboBox().setSelectedIndex(0); } } @Override public void saveParam (Object obj) throws Exception { OptionsParam options = (OptionsParam) obj; options.getViewParam().setShowTabNames(getShowTabNames().isSelected()); options.getViewParam().setShowSplashScreen(getShowSplashScreen().isSelected()); options.getViewParam().setProcessImages((getChkProcessImages().isSelected()) ? 1 : 0); options.getViewParam().setDisplayOption(displaySelect.getSelectedIndex()); ResponsePanelPositionUI selectedItem = (ResponsePanelPositionUI) getResponsePanelPositionComboBox().getSelectedItem(); options.getViewParam().setResponsePanelPosition(selectedItem.getPosition().name()); options.getViewParam().setBrkPanelViewOption(brkPanelViewSelect.getSelectedIndex()); options.getViewParam().setShowMainToolbar(getChkShowMainToolbar().isSelected()); options.getViewParam().setAdvancedViewOption(getChkAdvancedView().isSelected() ? 1 : 0); options.getViewParam().setAskOnExitOption(getChkAskOnExit().isSelected() ? 1 : 0); options.getViewParam().setWmUiHandlingOption(getChkWmUiHandling().isSelected() ? 1 : 0); options.getViewParam().setOutputTabTimeStampingEnabled(getChkOutputTabTimeStamps().isSelected()); options.getViewParam().setOutputTabTimeStampsFormat((String) getTimeStampsFormatSelect().getSelectedItem()); options.getViewParam().setShowLocalConnectRequests(getShowLocalConnectRequestsCheckbox().isSelected()); options.getViewParam().setLargeRequestSize(getLargeRequestSize().getValue()); options.getViewParam().setLargeResponseSize(getLargeResponseSize().getValue()); options.getViewParam().setFontSize(getFontSize().getValue()); options.getViewParam().setFontName((String)getFontName().getSelectedItem()); options.getViewParam().setScaleImages(getScaleImages().isSelected()); } @Override public String getHelpIndex() { // ZAP: added help index return "ui.dialogs.options.view"; } @SuppressWarnings("serial") private class JComboBoxFontRenderer extends BasicComboBoxRenderer { protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer(); @Override @SuppressWarnings("rawtypes") public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index, isSelected,cellHasFocus); Font font = FontUtils.getFont((String)value); if (font != null) { renderer.setFont(FontUtils.getFont((String)value)); } else { renderer.setFont(FontUtils.getFont(FontUtils.Size.standard)); } return renderer; } } private static class ResponsePanelPositionUI { private final String name; private final WorkbenchPanel.ResponsePanelPosition position; public ResponsePanelPositionUI(String name, WorkbenchPanel.ResponsePanelPosition position) { this.name = name; this.position = position; } public WorkbenchPanel.ResponsePanelPosition getPosition() { return position; } @Override public String toString() { return name; } } }