/*
*
* 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/01/12 Reflected the rename of the class ExtensionPopupMenu to
// ExtensionPopupMenuItem.
// ZAP: 2012/03/15 Added the method addPopupMenuItem(ExtensionPopupMenu menu).
// ZAP: 2012/05/03 Changed to only initialise the class variables MENU_SEPARATOR
// and POPUP_MENU_SEPARATOR if there is a view.
// ZAP: 2014/01/28 Issue 207: Support keyboard shortcuts
// ZAP: 2014/05/02 Fixed method links in Javadocs
// ZAP: 2014/11/11 Issue 1406: Move online menu items to an add-on
// ZAP: 2016/09/26 JavaDoc tweaks
package org.parosproxy.paros.extension;
import java.util.List;
import java.util.Vector;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import org.parosproxy.paros.view.View;
import org.zaproxy.zap.extension.ExtensionPopupMenu;
import org.zaproxy.zap.view.ZapMenuItem;
public class ExtensionHookMenu {
public static final JMenuItem MENU_SEPARATOR;
public static final ExtensionPopupMenuItem POPUP_MENU_SEPARATOR;
private Vector<JMenuItem> newMenuList = new Vector<>();
private Vector<JMenuItem> fileMenuItemList = new Vector<>();
private Vector<JMenuItem> editMenuItemList = new Vector<>();
private Vector<JMenuItem> viewMenuItemList = new Vector<>();
private Vector<JMenuItem> analyseMenuItemList = new Vector<>();
private Vector<JMenuItem> toolsMenuItemList = new Vector<>();
private Vector<JMenuItem> popupMenuList = new Vector<>();
// ZAP: Added help and reports menu extension hook
private Vector<JMenuItem> helpMenuList = new Vector<>();
private Vector<JMenuItem> reportMenuList = new Vector<>();
private Vector<JMenuItem> onlineMenuList = new Vector<>();
// ZAP: Added static block.
static {
// XXX temporary "hack" to check if ZAP is in GUI mode.
// There is no need to create view elements (subsequently initialising
// the java.awt.Toolkit) when ZAP is running in non GUI mode.
if (View.isInitialised()) {
MENU_SEPARATOR = new JMenuItem();
POPUP_MENU_SEPARATOR = new ExtensionPopupMenuItem();
} else {
MENU_SEPARATOR = null;
POPUP_MENU_SEPARATOR = null;
}
}
List<JMenuItem> getNewMenus() {
return newMenuList;
}
List<JMenuItem> getFile() {
return fileMenuItemList;
}
List<JMenuItem> getEdit() {
return editMenuItemList;
}
List<JMenuItem> getView() {
return viewMenuItemList;
}
List<JMenuItem> getAnalyse() {
return analyseMenuItemList;
}
List<JMenuItem> getTools() {
return toolsMenuItemList;
}
/**
* Gets the popup menu items used for the whole workbench.
*
* @return a {@code List} containing the popup menu items of the extension
*/
List<JMenuItem> getPopupMenus() {
return popupMenuList;
}
List<JMenuItem> getHelpMenus() {
return helpMenuList;
}
List<JMenuItem> getReportMenus() {
return reportMenuList;
}
List<JMenuItem> getOnlineMenus() {
return onlineMenuList;
}
/**
* Add a menu item to the File menu
* @param menuItem the file menu item
*
* @deprecated use {@link #addFileMenuItem(ZapMenuItem menuItem)} instead.
*/
@Deprecated
public void addFileMenuItem(JMenuItem menuItem) {
getFile().add(menuItem);
}
/**
* Add a menu item to the Edit menu
* @param menuItem the edit menu item
*
* @deprecated use {@link #addEditMenuItem(ZapMenuItem menuItem)} instead.
*/
@Deprecated
public void addEditMenuItem(JMenuItem menuItem) {
getEdit().add(menuItem);
}
/**
* Add a menu item to the View menu
* @param menuItem the view menu item
*
* @deprecated use {@link #addViewMenuItem(ZapMenuItem menuItem)} instead.
*/
@Deprecated
public void addViewMenuItem(JMenuItem menuItem) {
getView().add(menuItem);
}
/**
* Add a menu item to the Analyse menu
* @param menuItem the analyse menu item
*
* @deprecated use {@link #addAnalyseMenuItem(ZapMenuItem menuItem)} instead.
*/
@Deprecated
public void addAnalyseMenuItem(JMenuItem menuItem) {
getAnalyse().add(menuItem);
}
/**
* Add a menu item to the Tools menu
* @param menuItem the tools menu item
*
* @deprecated use {@link #addToolsMenuItem(ZapMenuItem menuItem)} instead.
*/
@Deprecated
public void addToolsMenuItem(JMenuItem menuItem) {
getTools().add(menuItem);
}
public void addFileMenuItem(ZapMenuItem menuItem) {
getFile().add(menuItem);
}
public void addEditMenuItem(ZapMenuItem menuItem) {
getEdit().add(menuItem);
}
public void addViewMenuItem(ZapMenuItem menuItem) {
getView().add(menuItem);
}
public void addAnalyseMenuItem(ZapMenuItem menuItem) {
getAnalyse().add(menuItem);
}
public void addToolsMenuItem(ZapMenuItem menuItem) {
getTools().add(menuItem);
}
public void addNewMenu(JMenu menu) {
getNewMenus().add(menu);
}
/**
* Add a popup menu item used for the whole workbench. Conditions can be set in PluginMenu
* when the popup menu can be used.
* @param menuItem the popup menu item
*/
public void addPopupMenuItem(ExtensionPopupMenuItem menuItem) {
getPopupMenus().add(menuItem);
}
// ZAP: Added the method.
public void addPopupMenuItem(ExtensionPopupMenu menu) {
getPopupMenus().add(menu);
}
/**
* Add a menu item to the Help menu
* @param menuItem the help menu item
*
* @deprecated use {@link #addHelpMenuItem(ZapMenuItem menuItem)} instead.
*/
@Deprecated
public void addHelpMenuItem(JMenuItem menuItem) {
getHelpMenus().add(menuItem);
}
/**
* Add a menu item to the Report menu
* @param menuItem the report menu item
*
* @deprecated use {@link #addReportMenuItem(ZapMenuItem menuItem)} instead.
*/
@Deprecated
public void addReportMenuItem(JMenuItem menuItem) {
getReportMenus().add(menuItem);
}
public void addHelpMenuItem(ZapMenuItem menuItem) {
getHelpMenus().add(menuItem);
}
public void addReportMenuItem(ZapMenuItem menuItem) {
getReportMenus().add(menuItem);
}
public void addOnlineMenuItem(ZapMenuItem menuItem) {
getOnlineMenus().add(menuItem);
}
public JMenuItem getMenuSeparator() {
return MENU_SEPARATOR;
}
public ExtensionPopupMenuItem getPopupMenuSeparator() {
return POPUP_MENU_SEPARATOR;
}
}