All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.owasp.jbrofuzz.ui.prefs.PrefDialog Maven / Gradle / Ivy

/**
 * JbroFuzz 2.5
 *
 * JBroFuzz - A stateless network protocol fuzzer for web applications.
 * 
 * Copyright (C) 2007 - 2010 [email protected]
 *
 * This file is part of JBroFuzz.
 * 
 * JBroFuzz is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * JBroFuzz 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
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with JBroFuzz.  If not, see .
 * Alternatively, write to the Free Software Foundation, Inc., 51 
 * Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 * 
 * Verbatim copying and distribution of this entire program file is 
 * permitted in any medium without royalty provided this notice 
 * is preserved. 
 * 
 */
package org.owasp.jbrofuzz.ui.prefs;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

import org.owasp.jbrofuzz.ui.JBroFuzzWindow;
import org.owasp.jbrofuzz.version.ImageCreator;
import org.owasp.jbrofuzz.version.JBroFuzzFormat;

/**
 * 

* The preferences main dialog. This is the panel the user sees when selecting Options * -> Preferences from the main menu bar. *

* * @author [email protected] * @version 2.4 * @since 2.0 */ public class PrefDialog extends JDialog implements TreeSelectionListener { /** * */ private static final long serialVersionUID = -6206219050510937296L; private static final int SIZE_X = 850; private static final int SIZE_Y = 800; // The tree private final JTree tree; // The main split pane private final JSplitPane splitPane; private final AbstractPrefsPanel[] panels = new AbstractPrefsPanel[7]; public enum PrefsPanel { PREFERENCES, DIRECTORIES, FUZZING, ONTHEWIRE, OUTPUT, DATABASE, UPDATE } private final JBroFuzzWindow parent; private final JButton applyBut; /** *

* The preferences dialog constructor, passing the main window as argument. *

* * @param parent * * @author [email protected] * @version 2.5 * * @author [email protected] * @version 2.4 * @since 2.0 */ public PrefDialog(final JBroFuzzWindow parent, PrefsPanel panelType) { super(parent, " JBroFuzz - Preferences ", true); setIconImage(ImageCreator.IMG_FRAME.getImage()); setLayout(new BorderLayout()); setFont(new Font("Verdana", Font.PLAIN, 12)); this.parent = parent; panels[0] = new PrefsPPanel(this); panels[1] = new DirsPPanel(this); panels[2] = new FuzzPPanel(this); panels[3] = new WirePPanel(this); panels[4] = new OutputPPanel(this); panels[5] = new DatabasePanel(this); panels[6] = new UpdatePPanel(this); // Create the nodes final DefaultMutableTreeNode top = new DefaultMutableTreeNode( panels[0].getName()); for(int i = 1; i < panels.length; i++) { top.add(panels[i].getTreeNode()); } // Create a tree that allows one selection at a time tree = new JTree(top); tree.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); // Selection can only contain one path at a time tree.getSelectionModel().setSelectionMode(1); // Listen for when the selection changes. tree.addTreeSelectionListener(this); // Create the scroll pane and add the tree to it. final JScrollPane leftScrollPane = new JScrollPane(tree); // Create the top split pane, showing the treeView and the Preferences splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); splitPane.setLeftComponent(leftScrollPane); splitPane.setRightComponent(panels[0]); splitPane.setOneTouchExpandable(false); splitPane.setDividerLocation(150); // Set the minimum size for all components leftScrollPane.setMinimumSize(JBroFuzzFormat.ZERO_DIM); for (final JPanel jp : panels) { jp.setMinimumSize(JBroFuzzFormat.ZERO_DIM); } splitPane.setDividerLocation(150); // Traverse tree from root final TreeNode root = (TreeNode) tree.getModel().getRoot(); parent.getPanelPayloads().expandAll(tree, new TreePath(root), true); // Select the row specified by the enum switch(panelType) { case PREFERENCES: tree.setSelectionRow(0); break; case DIRECTORIES: tree.setSelectionRow(1); break; case FUZZING: tree.setSelectionRow(2); break; case ONTHEWIRE: tree.setSelectionRow(3); break; case OUTPUT: tree.setSelectionRow(4); break; case UPDATE: tree.setSelectionRow(5); break; default: tree.setSelectionRow(0); break; } // Bottom three buttons JButton okBut, cancelBut; okBut = new JButton(" OK "); cancelBut = new JButton("Cancel"); applyBut = new JButton(" Apply "); okBut.setEnabled(true); cancelBut.setEnabled(true); applyBut.setEnabled(false); final JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 15, 15)); buttonPanel.add(okBut); buttonPanel.add(cancelBut); buttonPanel.add(applyBut); // Action Listeners for all three buttons okBut.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent okEvent) { SwingUtilities.invokeLater(new Runnable() { public void run() { for(final AbstractPrefsPanel p : panels) { p.apply(); } PrefDialog.this.dispose(); } }); } }); cancelBut.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent cancelEvent) { SwingUtilities.invokeLater(new Runnable() { public void run() { PrefDialog.this.dispose(); } }); } }); applyBut.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent applyEvent) { SwingUtilities.invokeLater(new Runnable() { public void run() { for(final AbstractPrefsPanel p : panels) { p.apply(); } applyBut.setEnabled(false); } }); } }); // Keyboard listener on the treeView for escape to cancel tree.addKeyListener(new KeyAdapter() { @Override public void keyPressed(final KeyEvent kEvent) { if (kEvent.getKeyCode() == 27) { PrefDialog.this.dispose(); } } }); // Add the split pane to this panel getContentPane().add(splitPane, BorderLayout.CENTER); getContentPane().add(buttonPanel, BorderLayout.SOUTH); // Where to show the preferences box this.setLocation( parent.getLocation().x + (parent.getWidth() - SIZE_X) / 2, parent.getLocation().y + (parent.getHeight() - SIZE_Y) / 2 ); this.setSize(SIZE_X, SIZE_Y); setMinimumSize(new Dimension(SIZE_X, SIZE_Y)); setResizable(true); setVisible(true); } public void valueChanged(final TreeSelectionEvent tEvent) { final DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree .getLastSelectedPathComponent(); if (node == null) { return; } for (int i = 0; i < panels.length; i++) { if (node.toString().equalsIgnoreCase(panels[i].getName())) { splitPane.setRightComponent(panels[i]); splitPane.setDividerLocation(splitPane.getDividerLocation()); } } // for loop if(applyBut != null) { applyBut.setEnabled(true); } } protected JBroFuzzWindow getJBroFuzzWindow() { return this.parent; } protected void setApplyEnabled(final boolean applyOn) { applyBut.setEnabled(applyOn); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy