/*
*
* 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/11/20 Set order
// ZAP: 2012/03/10 Issue 279: Flag as a core extension
// ZAP: 2012/03/17 Issue 282 Added getAuthor()
// ZAP: 2012/04/25 Added @Override annotation to all appropriate methods.
// ZAP: 2012/07/02 Added the instance variable optionsDatabasePanel and the
// method getOptionsDatabasePanel() and changed the method hook(ExtensionHook)
// to add the optionsDatabasePanel to the options panel.
// ZAP: 2015/03/16 Issue 1525: Further database independence changes
// ZAP: 2015/08/17 Issue 1795: Allow JVM options to be configured via GUI
// ZAP: 2016/04/05 Issue 2458: Fix xlint warning messages
// ZAP: 2016/06/20 Removed unnecessary/unused constructor
package org.parosproxy.paros.extension.option;
import javax.swing.JCheckBoxMenuItem;
import org.parosproxy.paros.Constant;
import org.parosproxy.paros.extension.ExtensionAdaptor;
import org.parosproxy.paros.extension.ExtensionHook;
import org.zaproxy.zap.extension.autoupdate.OptionsCheckForUpdatesPanel;
import org.zaproxy.zap.extension.lang.OptionsLangPanel;
public class ExtensionOption extends ExtensionAdaptor {
private JCheckBoxMenuItem menuViewImage = null;
private OptionsConnectionPanel optionsConnectionPanel = null;
private OptionsCertificatePanel optionsCertificatePanel = null;
private OptionsLocalProxyPanel optionsLocalProxyPanel = null;
private OptionsViewPanel optionsViewPanel = null;
private OptionsCheckForUpdatesPanel optionsCheckForUpdatesPanel = null;
private OptionsLangPanel optionsLangPanel = null;
/**
* The options database panel.
*/
// ZAP: Added the instance variable.
private OptionsDatabasePanel optionsDatabasePanel = null;
private OptionsJvmPanel optionsJvmPanel = null;
public ExtensionOption() {
super("ExtensionViewOption");
this.setOrder(2);
}
@SuppressWarnings("deprecation")
@Override
public void hook(ExtensionHook extensionHook) {
super.hook(extensionHook);
if (getView() != null) {
extensionHook.getHookMenu().addViewMenuItem(getMenuViewImage());
extensionHook.getHookView().addOptionPanel(getOptionsConnectionPanel());
extensionHook.getHookView().addOptionPanel(getOptionsLocalProxyPanel());
extensionHook.getHookView().addOptionPanel(getOptionsCertificatePanel());
extensionHook.getHookView().addOptionPanel(getOptionsViewPanel());
extensionHook.getHookView().addOptionPanel(getOptionsCheckForUpdatesPanel());
extensionHook.getHookView().addOptionPanel(getOptionsLangPanel());
// ZAP: Added the statement.
extensionHook.getHookView().addOptionPanel(getOptionsDatabasePanel());
extensionHook.getHookView().addOptionPanel(getOptionsJvmPanel());
}
}
private JCheckBoxMenuItem getMenuViewImage() {
if (menuViewImage == null) {
menuViewImage = new JCheckBoxMenuItem();
menuViewImage.setText(Constant.messages.getString("menu.view.enableImage")); // ZAP: i18n
menuViewImage.addItemListener(new java.awt.event.ItemListener() {
@Override
public void itemStateChanged(java.awt.event.ItemEvent e) {
getModel().getOptionsParam().getViewParam().setProcessImages(getMenuViewImage().getState() ? 1 : 0);
}
});
}
return menuViewImage;
}
private OptionsConnectionPanel getOptionsConnectionPanel() {
if (optionsConnectionPanel == null) {
optionsConnectionPanel = new OptionsConnectionPanel();
}
return optionsConnectionPanel;
}
private OptionsCertificatePanel getOptionsCertificatePanel() {
if (optionsCertificatePanel == null) {
optionsCertificatePanel = new OptionsCertificatePanel();
}
return optionsCertificatePanel;
}
private OptionsLocalProxyPanel getOptionsLocalProxyPanel() {
if (optionsLocalProxyPanel == null) {
optionsLocalProxyPanel = new OptionsLocalProxyPanel();
}
return optionsLocalProxyPanel;
}
private OptionsViewPanel getOptionsViewPanel() {
if (optionsViewPanel == null) {
optionsViewPanel = new OptionsViewPanel();
}
return optionsViewPanel;
}
private OptionsCheckForUpdatesPanel getOptionsCheckForUpdatesPanel() {
if (optionsCheckForUpdatesPanel == null) {
optionsCheckForUpdatesPanel = new OptionsCheckForUpdatesPanel();
}
return optionsCheckForUpdatesPanel;
}
private OptionsLangPanel getOptionsLangPanel() {
if (optionsLangPanel == null) {
optionsLangPanel = new OptionsLangPanel();
}
return optionsLangPanel;
}
/**
* Gets the database options panel.
*
* @return the database options panel
*/
// ZAP: Added the method.
private OptionsDatabasePanel getOptionsDatabasePanel() {
if (optionsDatabasePanel == null) {
optionsDatabasePanel = new OptionsDatabasePanel();
}
return optionsDatabasePanel;
}
private OptionsJvmPanel getOptionsJvmPanel() {
if (optionsJvmPanel == null) {
optionsJvmPanel = new OptionsJvmPanel();
}
return optionsJvmPanel;
}
@Override
public boolean isCore() {
// Really need this in order to configure basic functionality
return true;
}
@Override
public String getAuthor() {
return Constant.PAROS_TEAM;
}
/**
* No database tables used, so all supported
*/
@Override
public boolean supportsDb(String type) {
return true;
}
}