/*
*
* 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/11/30 Issue 425: Added tab index to support quick start tab
// ZAP: 2013/07/23 Issue 738: Options to hide tabs
// ZAP: 2013/12/13 Added support for remembering the old tab name, which is used for nameless tabs.
// ZAP: 2014/01/28 Issue 207: Support keyboard shortcuts
// ZAP: 2014/02/07 Issue 207: Added tabSelected method
// ZAP: 2014/08/14 Issue 1301: AbstractPanel leak through TabbedPanel2
// ZAP: 2014/10/07 Issue 1357: Hide unused tabs
package org.parosproxy.paros.extension;
import java.awt.Component;
import javax.swing.Icon;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.KeyStroke;
import org.parosproxy.paros.model.Model;
import org.zaproxy.zap.view.TabbedPanel2;
public class AbstractPanel extends JPanel {
private static final long serialVersionUID = 4076608955743534659L;
// ZAP: Added icon
private Icon icon = null;
private int tabIndex = -1;
private TabbedPanel2 parent = null;
private boolean hideable = true;
private boolean pinned = false;
private boolean locked = false;
private boolean showByDefault = false;
private KeyStroke defaultAccelerator;
private char mnemonic;
public Icon getIcon() {
return icon;
}
public void setIcon(Icon icon) {
this.icon = icon;
}
/**
* This is the default constructor
*/
public AbstractPanel() {
super();
initialize();
}
/**
* This method initializes this
*/
private void initialize() {
if (Model.getSingleton().getOptionsParam().getViewParam().getWmUiHandlingOption() == 0) {
this.setSize(300,200);
}
}
public void setTabFocus() {
if (parent != null) {
// Just in case the tab has been hidden
parent.setVisible(this, true);
}
Component c = this.getParent();
if (c instanceof JTabbedPane) {
JTabbedPane tab = (JTabbedPane) c;
tab.setSelectedComponent(this);
}
}
public boolean isTabVisible() {
if (parent != null) {
return parent.isTabVisible(this);
}
// Fall back, probably not that useful, but better than nothing?
return this.isVisible();
}
public int getTabIndex() {
return tabIndex;
}
public void setTabIndex(int tabIndex) {
this.tabIndex = tabIndex;
}
public void setParent(final TabbedPanel2 parent) {
this.parent = parent;
}
/**
* Invoked when the associated tab is selected. The method does nothing so override to act on the event
*/
public void tabSelected() {
// Do nothing
}
public boolean isHideable() {
return hideable;
}
public void setHideable(boolean hideable) {
this.hideable = hideable;
}
public boolean isPinned() {
return pinned;
}
public void setPinned(boolean pinned) {
this.pinned = pinned;
}
public boolean isLocked() {
return locked;
}
public void setLocked(boolean locked) {
this.locked = locked;
}
public boolean isShowByDefault() {
return showByDefault;
}
public void setShowByDefault(boolean showByDefault) {
this.showByDefault = showByDefault;
}
public KeyStroke getDefaultAccelerator() {
return defaultAccelerator;
}
public void setDefaultAccelerator(KeyStroke defaultAccelerator) {
this.defaultAccelerator = defaultAccelerator;
}
public char getMnemonic() {
return mnemonic;
}
public void setMnemonic(char mnemonic) {
this.mnemonic = mnemonic;
}
}