Version: 2.0 Update
This commit is contained in:
117
src/main/java/burp/ui/JTabbedPaneCloseButton.java
Normal file
117
src/main/java/burp/ui/JTabbedPaneCloseButton.java
Normal file
@@ -0,0 +1,117 @@
|
||||
package burp.ui;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.plaf.metal.MetalIconFactory;
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
|
||||
/*
|
||||
* @author 6dc
|
||||
*
|
||||
* A class which creates a JTabbedPane and auto sets a close button when you add a tab
|
||||
*/
|
||||
|
||||
public class JTabbedPaneCloseButton extends JTabbedPane {
|
||||
|
||||
public JTabbedPaneCloseButton() {
|
||||
super();
|
||||
}
|
||||
|
||||
/* Override Addtab in order to add the close Button everytime */
|
||||
@Override
|
||||
public void addTab(String title, Icon icon, Component component, String tip) {
|
||||
super.addTab(title, icon, component, tip);
|
||||
int count = this.getTabCount() - 1;
|
||||
setTabComponentAt(count, new CloseButtonTab(component, title, icon));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTab(String title, Icon icon, Component component) {
|
||||
addTab(title, icon, component, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTab(String title, Component component) {
|
||||
addTab(title, null, component);
|
||||
}
|
||||
|
||||
|
||||
public void addTab(String title,Component component,Boolean closewith){
|
||||
if (closewith){
|
||||
addTab(title,component);
|
||||
}else{
|
||||
super.addTab(title,null,component,null);
|
||||
}
|
||||
}
|
||||
|
||||
/* addTabNoExit */
|
||||
public void addTabNoExit(String title, Icon icon, Component component, String tip) {
|
||||
super.addTab(title, icon, component, tip);
|
||||
}
|
||||
|
||||
public void addTabNoExit(String title, Icon icon, Component component) {
|
||||
addTabNoExit(title, icon, component, null);
|
||||
}
|
||||
|
||||
public void addTabNoExit(String title, Component component) {
|
||||
addTabNoExit(title, null, component);
|
||||
}
|
||||
|
||||
/* Button */
|
||||
public class CloseButtonTab extends JPanel {
|
||||
private Component tab;
|
||||
|
||||
public CloseButtonTab(final Component tab, String title, Icon icon) {
|
||||
this.tab = tab;
|
||||
setOpaque(false);
|
||||
FlowLayout flowLayout = new FlowLayout(FlowLayout.CENTER, 3, 3);
|
||||
setLayout(flowLayout);
|
||||
JLabel jLabel = new JLabel(title);
|
||||
jLabel.setIcon(icon);
|
||||
add(jLabel);
|
||||
JButton button = new JButton(MetalIconFactory.getInternalFrameCloseIcon(2));
|
||||
button.setMargin(new Insets(0, 0, 0, 0));
|
||||
button.addMouseListener(new CloseListener(tab));
|
||||
add(button);
|
||||
}
|
||||
}
|
||||
/* ClickListener */
|
||||
public class CloseListener implements MouseListener
|
||||
{
|
||||
private Component tab;
|
||||
|
||||
public CloseListener(Component tab){
|
||||
this.tab=tab;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
if(e.getSource() instanceof JButton){
|
||||
JButton clickedButton = (JButton) e.getSource();
|
||||
JTabbedPane tabbedPane = (JTabbedPane) clickedButton.getParent().getParent().getParent();
|
||||
tabbedPane.remove(tab);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {}
|
||||
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent e) {}
|
||||
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
if(e.getSource() instanceof JButton){
|
||||
JButton clickedButton = (JButton) e.getSource();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
if(e.getSource() instanceof JButton){
|
||||
JButton clickedButton = (JButton) e.getSource();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
347
src/main/java/burp/ui/MainUI.java
Normal file
347
src/main/java/burp/ui/MainUI.java
Normal file
@@ -0,0 +1,347 @@
|
||||
package burp.ui;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import burp.yaml.LoadConfigFile;
|
||||
import burp.yaml.LoadRule;
|
||||
import burp.yaml.SetRuleConfig;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import javax.swing.event.DocumentEvent;
|
||||
import javax.swing.event.DocumentListener;
|
||||
import javax.swing.filechooser.FileNameExtensionFilter;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.util.Map;
|
||||
|
||||
/*
|
||||
* @author LinChen
|
||||
*/
|
||||
|
||||
public class MainUI extends JPanel{
|
||||
public MainUI() {
|
||||
initComponents();
|
||||
}
|
||||
public void closeTabActionPerformed(ActionEvent e){
|
||||
if (tabbedPane1.getTabCount()>2){
|
||||
if (tabbedPane1.getSelectedIndex()!=0){
|
||||
SetRuleConfig setruleconfig = new SetRuleConfig();
|
||||
setruleconfig.deleteRules(tabbedPane1.getTitleAt(tabbedPane1.getSelectedIndex()));
|
||||
tabbedPane1.remove(tabbedPane1.getSelectedIndex());
|
||||
tabbedPane1.setSelectedIndex(tabbedPane1.getSelectedIndex()-1);
|
||||
}else{
|
||||
SetRuleConfig setruleconfig = new SetRuleConfig();
|
||||
setruleconfig.deleteRules(tabbedPane1.getTitleAt(tabbedPane1.getSelectedIndex()));
|
||||
tabbedPane1.remove(tabbedPane1.getSelectedIndex());
|
||||
tabbedPane1.setSelectedIndex(tabbedPane1.getSelectedIndex());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SelectFileMouseClicked(MouseEvent e) {
|
||||
JFileChooser chooseconfig = new JFileChooser();
|
||||
chooseconfig.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
||||
FileNameExtensionFilter filter = new FileNameExtensionFilter("Yaml File (.yml/.yaml)","yaml", "yml");
|
||||
chooseconfig.setFileFilter(filter);
|
||||
int selectframe = chooseconfig.showDialog(new JLabel(),"Select");
|
||||
if (selectframe == JFileChooser.APPROVE_OPTION){
|
||||
String configpath = chooseconfig.getSelectedFile().toString();
|
||||
reloadRule(configpath);
|
||||
loadfile.setConfigPath(configpath);
|
||||
}
|
||||
configfilepathtext.setText(loadfile.getConfigPath());
|
||||
}
|
||||
private void reloadRule(String configfile){
|
||||
tabbedPane1.removeAll();
|
||||
LoadRule loadrule = new LoadRule(configfile);
|
||||
Map<String,Object[][]> config = loadrule.getConfig();
|
||||
ruleSwitch.setListen(false);
|
||||
config.keySet().forEach(i->tabbedPane1.addTab(i,new RulePane(config.get(i),tabbedPane1)));
|
||||
tabbedPane1.addTab("...",new JLabel());
|
||||
ruleSwitch.setListen(true);
|
||||
}
|
||||
private void reloadRule(){
|
||||
tabbedPane1.removeAll();
|
||||
LoadRule loadrule = new LoadRule(loadfile.getConfigPath());
|
||||
Map<String,Object[][]> config = loadrule.getConfig();
|
||||
ruleSwitch.setListen(false);
|
||||
config.keySet().forEach(i->tabbedPane1.addTab(i,new RulePane(config.get(i),tabbedPane1))
|
||||
);
|
||||
tabbedPane1.addTab("...",new JLabel());
|
||||
ruleSwitch.setListen(true);
|
||||
}
|
||||
|
||||
private void reloadMouseClicked(MouseEvent e) {
|
||||
reloadRule();
|
||||
}
|
||||
private void ESSaveMouseClicked(MouseEvent e) {
|
||||
// TODO add your code here
|
||||
LoadConfigFile lcf = new LoadConfigFile();
|
||||
lcf.setExcludeSuffix(EStext.getText());
|
||||
}
|
||||
private void initComponents() {
|
||||
tabbedPane2 = new JTabbedPane();
|
||||
tabbedPane1 = new JTabbedPane();
|
||||
panel3 = new JPanel();
|
||||
configfilepathtext = new JTextField();
|
||||
label1 = new JLabel();
|
||||
SelectFile = new JButton();
|
||||
reload = new JButton();
|
||||
label2 = new JLabel();
|
||||
EStext = new JTextField();
|
||||
ESSave = new JButton();
|
||||
|
||||
//======== this ========
|
||||
setLayout(new GridBagLayout());
|
||||
((GridBagLayout)getLayout()).columnWidths = new int[] {0, 0};
|
||||
((GridBagLayout)getLayout()).rowHeights = new int[] {0, 0};
|
||||
((GridBagLayout)getLayout()).columnWeights = new double[] {1.0, 1.0E-4};
|
||||
((GridBagLayout)getLayout()).rowWeights = new double[] {1.0, 1.0E-4};
|
||||
|
||||
//======== tabbedPane2 ========
|
||||
{
|
||||
tabbedPane2.addTab("Rules", tabbedPane1);
|
||||
|
||||
//======== panel3 ========
|
||||
{
|
||||
panel3.setLayout(new GridBagLayout());
|
||||
((GridBagLayout)panel3.getLayout()).columnWidths = new int[] {0, 0, 0, 0, 0};
|
||||
((GridBagLayout)panel3.getLayout()).rowHeights = new int[] {0, 0, 0};
|
||||
((GridBagLayout)panel3.getLayout()).columnWeights = new double[] {0.0, 1.0, 0.0, 0.0, 1.0E-4};
|
||||
((GridBagLayout)panel3.getLayout()).rowWeights = new double[] {0.0, 0.0, 1.0E-4};
|
||||
|
||||
//---- configfilepathtext ----
|
||||
configfilepathtext.setEditable(false);
|
||||
panel3.add(configfilepathtext, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
|
||||
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
||||
new Insets(5, 0, 5, 5), 0, 0));
|
||||
|
||||
//---- label1 ----
|
||||
label1.setText("Config File Path:");
|
||||
panel3.add(label1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
|
||||
GridBagConstraints.WEST, GridBagConstraints.VERTICAL,
|
||||
new Insets(5, 5, 5, 5), 0, 0));
|
||||
|
||||
//---- SelectFile ----
|
||||
SelectFile.setText("Select File ...");
|
||||
SelectFile.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
SelectFileMouseClicked(e);
|
||||
}
|
||||
});
|
||||
panel3.add(SelectFile, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
|
||||
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
||||
new Insets(5, 0, 5, 5), 0, 0));
|
||||
|
||||
//---- reload ----
|
||||
reload.setText("Reload");
|
||||
reload.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
reloadMouseClicked(e);
|
||||
}
|
||||
});
|
||||
panel3.add(reload, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0,
|
||||
|
||||
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
||||
new Insets(5, 0, 5, 5), 0, 0));
|
||||
//---- label2 ----
|
||||
label2.setText("ExcludeSuffix:");
|
||||
panel3.add(label2, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
|
||||
GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE,
|
||||
new Insets(0, 5, 5, 5), 0, 0));
|
||||
panel3.add(EStext, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0,
|
||||
GridBagConstraints.SOUTH, GridBagConstraints.HORIZONTAL,
|
||||
new Insets(0, 0, 0, 5), 0, 0));
|
||||
|
||||
//---- ESSave ----
|
||||
ESSave.setText("Save");
|
||||
ESSave.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
ESSaveMouseClicked(e);
|
||||
}
|
||||
});
|
||||
panel3.add(ESSave, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,
|
||||
GridBagConstraints.SOUTH, GridBagConstraints.HORIZONTAL,
|
||||
new Insets(0, 0, 0, 5), 0, 0));
|
||||
}
|
||||
tabbedPane2.addTab("Config", panel3);
|
||||
}
|
||||
add(tabbedPane2, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
|
||||
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
||||
new Insets(0, 0, 0, 0), 0, 0));
|
||||
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||
|
||||
LoadRule loadRule = new LoadRule(loadfile.getConfigPath());
|
||||
Map<String,Object[][]> config = loadRule.getConfig();
|
||||
config.keySet().forEach(i->tabbedPane1.addTab(i,new RulePane(config.get(i),tabbedPane1)));
|
||||
|
||||
tabbedPane1.addTab("...",new JLabel());
|
||||
|
||||
//TabTitleEditListener ruleSwitch = new TabTitleEditListener(tabbedPane1);
|
||||
configfilepathtext.setText(loadfile.getConfigPath());
|
||||
LoadConfigFile lcf =new LoadConfigFile();
|
||||
EStext.setText(lcf.getExcludeSuffix());
|
||||
ruleSwitch = new TabTitleEditListener(tabbedPane1);
|
||||
tabbedPane1.addChangeListener(ruleSwitch);
|
||||
tabbedPane1.addMouseListener(ruleSwitch);
|
||||
closeTab.addActionListener(e -> closeTabActionPerformed(e));
|
||||
tabMenu.add(closeTab);
|
||||
}
|
||||
|
||||
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
||||
private JTabbedPane tabbedPane2;
|
||||
private JTabbedPane tabbedPane1;
|
||||
private JPanel panel3;
|
||||
private JTextField configfilepathtext;
|
||||
private JLabel label1;
|
||||
private JButton SelectFile;
|
||||
private JButton reload;
|
||||
private JLabel label2;
|
||||
private JTextField EStext;
|
||||
private JButton ESSave;
|
||||
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||
protected static JPopupMenu tabMenu = new JPopupMenu();
|
||||
private JMenuItem closeTab = new JMenuItem("Delete");
|
||||
private TabTitleEditListener ruleSwitch;
|
||||
private LoadConfigFile loadfile = new LoadConfigFile();
|
||||
}
|
||||
|
||||
class TabTitleEditListener extends MouseAdapter implements ChangeListener, DocumentListener {
|
||||
protected final JTextField editor = new JTextField();
|
||||
protected final JTabbedPane tabbedPane;
|
||||
protected int editingIdx = -1;
|
||||
protected int len = -1;
|
||||
protected Boolean listen = true;
|
||||
protected Dimension dim;
|
||||
protected Component tabComponent;
|
||||
protected Boolean isRenamesucc = false;
|
||||
protected LoadConfigFile loadfile = new LoadConfigFile();
|
||||
protected LoadRule lr = new LoadRule(loadfile.getConfigPath());
|
||||
protected SetRuleConfig setruleconfig = new SetRuleConfig();
|
||||
protected final Action startEditing = new AbstractAction() {
|
||||
@Override public void actionPerformed(ActionEvent e) {
|
||||
editingIdx = tabbedPane.getSelectedIndex();
|
||||
tabComponent = tabbedPane.getTabComponentAt(editingIdx);
|
||||
tabbedPane.setTabComponentAt(editingIdx, editor);
|
||||
isRenamesucc = true;
|
||||
editor.setVisible(true);
|
||||
editor.setText(tabbedPane.getTitleAt(editingIdx));
|
||||
editor.selectAll();
|
||||
editor.requestFocusInWindow();
|
||||
len = editor.getText().length();
|
||||
dim = editor.getPreferredSize();
|
||||
editor.setMinimumSize(dim);
|
||||
}
|
||||
};
|
||||
protected final Action renameTabTitle = new AbstractAction() {
|
||||
@Override public void actionPerformed(ActionEvent e) {
|
||||
String title = editor.getText().trim();
|
||||
if (editingIdx >= 0 && !title.isEmpty()) {
|
||||
String oldname = tabbedPane.getTitleAt(editingIdx);
|
||||
tabbedPane.setTitleAt(editingIdx, title);
|
||||
setruleconfig.rename(oldname,title);
|
||||
}
|
||||
cancelEditing.actionPerformed(null);
|
||||
}
|
||||
};
|
||||
protected final Action cancelEditing = new AbstractAction() {
|
||||
@Override public void actionPerformed(ActionEvent e) {
|
||||
if (editingIdx >= 0) {
|
||||
tabbedPane.setTabComponentAt(editingIdx, tabComponent);
|
||||
editor.setVisible(false);
|
||||
editingIdx = -1;
|
||||
len = -1;
|
||||
tabComponent = null;
|
||||
editor.setPreferredSize(null);
|
||||
tabbedPane.requestFocusInWindow();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
protected TabTitleEditListener(JTabbedPane tabbedPane) {
|
||||
super();
|
||||
this.tabbedPane = tabbedPane;
|
||||
editor.setBorder(BorderFactory.createEmptyBorder());
|
||||
editor.addFocusListener(new FocusAdapter() {
|
||||
@Override public void focusLost(FocusEvent e) {
|
||||
renameTabTitle.actionPerformed(null);
|
||||
}
|
||||
});
|
||||
InputMap im = editor.getInputMap(JComponent.WHEN_FOCUSED);
|
||||
ActionMap am = editor.getActionMap();
|
||||
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel-editing");
|
||||
am.put("cancel-editing", cancelEditing);
|
||||
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "rename-tab-title");
|
||||
am.put("rename-tab-title", renameTabTitle);
|
||||
editor.getDocument().addDocumentListener(this);
|
||||
tabbedPane.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "start-editing");
|
||||
tabbedPane.getActionMap().put("start-editing", startEditing);
|
||||
}
|
||||
@Override public void stateChanged(ChangeEvent e) {
|
||||
if (e.getSource() instanceof JTabbedPane && listen) {
|
||||
JTabbedPane pane = (JTabbedPane) e.getSource();
|
||||
if (!isRenamesucc){
|
||||
if (pane.getSelectedIndex() == pane.getComponentCount()-1){
|
||||
newTab();
|
||||
}
|
||||
}else{
|
||||
if (pane.getSelectedIndex() == pane.getComponentCount()-2){
|
||||
newTab();
|
||||
}
|
||||
}
|
||||
}
|
||||
renameTabTitle.actionPerformed(null);
|
||||
}
|
||||
public void newTab(){
|
||||
Object[][] data = new Object[][]{{false, "New Name", "(New Regex)", "gray", "any", "nfa"}};
|
||||
insertTab(tabbedPane,setruleconfig.newRules(),data);
|
||||
}
|
||||
public void insertTab(@NotNull JTabbedPane pane,String title,Object[][] data){
|
||||
pane.addTab(title,new RulePane(data,pane));
|
||||
pane.remove(pane.getSelectedIndex());
|
||||
pane.addTab("...",new JLabel());
|
||||
}
|
||||
public void setListen(Boolean listen){
|
||||
this.listen = listen;
|
||||
}
|
||||
@Override public void insertUpdate(DocumentEvent e) {
|
||||
updateTabSize();
|
||||
}
|
||||
|
||||
@Override public void removeUpdate(DocumentEvent e) {
|
||||
updateTabSize();
|
||||
}
|
||||
|
||||
@Override public void changedUpdate(DocumentEvent e) {}
|
||||
|
||||
@Override public void mouseClicked(MouseEvent e) {
|
||||
switch (e.getButton()){
|
||||
case 1:
|
||||
{
|
||||
Rectangle r = tabbedPane.getBoundsAt(tabbedPane.getSelectedIndex());
|
||||
boolean isDoubleClick = e.getClickCount() >= 2;
|
||||
if (isDoubleClick && r.contains(e.getPoint())) {
|
||||
startEditing.actionPerformed(null);
|
||||
} else {
|
||||
renameTabTitle.actionPerformed(null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:{
|
||||
MainUI.tabMenu.show(e.getComponent(),e.getX(),e.getY());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected void updateTabSize() {
|
||||
editor.setPreferredSize(editor.getText().length() > len ? null : dim);
|
||||
tabbedPane.revalidate();
|
||||
}
|
||||
}
|
||||
195
src/main/java/burp/ui/RulePane.java
Normal file
195
src/main/java/burp/ui/RulePane.java
Normal file
@@ -0,0 +1,195 @@
|
||||
package burp.ui;
|
||||
|
||||
import burp.yaml.SetRuleConfig;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.TableModelEvent;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
import javax.swing.table.TableRowSorter;
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.Vector;
|
||||
|
||||
/*
|
||||
* @author LinChen
|
||||
*/
|
||||
|
||||
public class RulePane extends JPanel {
|
||||
public RulePane(Object[][] data,JTabbedPane pane) {
|
||||
initComponents(data,pane);
|
||||
}
|
||||
private SetRuleConfig setruleconfig = new SetRuleConfig();
|
||||
private Boolean isEdit = false;
|
||||
private void RuleAddMouseClicked(MouseEvent e, JTabbedPane pane) {
|
||||
// TODO add your code here
|
||||
RuleSetting add = new RuleSetting();
|
||||
int isOk = JOptionPane.showConfirmDialog(null,add,"RuleSetting - Add Rule",JOptionPane.OK_OPTION);
|
||||
if(isOk == 0){
|
||||
model.addRow(new Object[0]);
|
||||
model.setValueAt(false,(model.getRowCount()-1),0);
|
||||
model.setValueAt(add.Name.getText(),(model.getRowCount()-1),1);
|
||||
model.setValueAt(add.Regex.getText(),(model.getRowCount()-1),2);
|
||||
model.setValueAt(add.ColorSelect.getSelectedItem().toString(),(model.getRowCount()-1),3);
|
||||
model.setValueAt(add.ScopeSelect.getSelectedItem().toString(),(model.getRowCount()-1),4);
|
||||
model.setValueAt(add.EngineSelect.getSelectedItem().toString(),(model.getRowCount()-1),5);
|
||||
model = (DefaultTableModel) table.getModel();
|
||||
int select = table.convertRowIndexToModel(table.getSelectedRow());
|
||||
setruleconfig.add((Vector) model.getDataVector().get(select),pane.getTitleAt(pane.getSelectedIndex()));
|
||||
}
|
||||
}
|
||||
private void RuleEditMouseClicked(MouseEvent e,JTabbedPane pane){
|
||||
if (table.getSelectedRowCount()>=1){
|
||||
RuleSetting edit = new RuleSetting();
|
||||
edit.Name.setText(table.getValueAt(table.getSelectedRow(),1).toString());
|
||||
edit.Regex.setText(table.getValueAt(table.getSelectedRow(),2).toString());
|
||||
edit.ColorSelect.setSelectedItem(table.getValueAt(table.getSelectedRow(),3).toString());
|
||||
edit.ScopeSelect.setSelectedItem(table.getValueAt(table.getSelectedRow(),4).toString());
|
||||
edit.EngineSelect.setSelectedItem(table.getValueAt(table.getSelectedRow(),5).toString());
|
||||
int isOk = JOptionPane.showConfirmDialog(null,edit,"RuleSetting - Edit Rule",JOptionPane.OK_OPTION);
|
||||
if (isOk ==0){
|
||||
int select = table.convertRowIndexToModel(table.getSelectedRow());
|
||||
model.setValueAt(edit.Name.getText(),select,1);
|
||||
model.setValueAt(edit.Regex.getText(),select,2);
|
||||
model.setValueAt(edit.ColorSelect.getSelectedItem().toString(),select,3);
|
||||
model.setValueAt(edit.ScopeSelect.getSelectedItem().toString(),select,4);
|
||||
model.setValueAt(edit.EngineSelect.getSelectedItem().toString(),select,5);
|
||||
model = (DefaultTableModel) table.getModel();
|
||||
setruleconfig.edit((Vector) model.getDataVector().get(select),select,pane.getTitleAt(pane.getSelectedIndex()));
|
||||
}
|
||||
}
|
||||
}
|
||||
private void RuleRemoveMouseClicked(MouseEvent e,JTabbedPane pane){
|
||||
if (table.getSelectedRowCount()>=1){
|
||||
int isOk = JOptionPane.showConfirmDialog(null,"Are your sure?","RuleSetting - Delete Rule",JOptionPane.OK_OPTION);
|
||||
if (isOk==0){
|
||||
model.removeRow(table.convertRowIndexToModel(table.getSelectedRow()));
|
||||
table.remove(table.getSelectedRow());
|
||||
model = (DefaultTableModel) table.getModel();
|
||||
int select = table.convertRowIndexToModel(table.getSelectedRow());
|
||||
setruleconfig.remove(select,pane.getTitleAt(pane.getSelectedIndex()));
|
||||
}
|
||||
}
|
||||
}
|
||||
private void RuleTableChange(TableModelEvent e,JTabbedPane pane) {
|
||||
if (e.getColumn()==0&&table.getSelectedRow()!=-1&&!isEdit){
|
||||
model = (DefaultTableModel) table.getModel();
|
||||
int select = table.convertRowIndexToModel(table.getSelectedRow());
|
||||
setruleconfig.edit((Vector) model.getDataVector().get(select),select,pane.getTitleAt(pane.getSelectedIndex()));
|
||||
}
|
||||
}
|
||||
|
||||
private void initComponents(Object[][] data,JTabbedPane pane) {
|
||||
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
||||
RuleAdd = new JButton();
|
||||
RuleEdit = new JButton();
|
||||
scrollPane = new JScrollPane();
|
||||
table = new JTable();
|
||||
Remove = new JButton();
|
||||
|
||||
//======== this ========
|
||||
setLayout(new GridBagLayout());
|
||||
((GridBagLayout)getLayout()).columnWidths = new int[] {0, 0, 0};
|
||||
((GridBagLayout)getLayout()).rowHeights = new int[] {0, 0, 0, 0, 0};
|
||||
((GridBagLayout)getLayout()).columnWeights = new double[] {0.0, 1.0, 1.0E-4};
|
||||
((GridBagLayout)getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 1.0, 1.0E-4};
|
||||
|
||||
//---- RuleAdd ----
|
||||
RuleAdd.setText("Add");
|
||||
RuleAdd.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
isEdit = true;
|
||||
RuleAddMouseClicked(e,pane);
|
||||
model = (DefaultTableModel) table.getModel();
|
||||
isEdit = false;
|
||||
}
|
||||
});
|
||||
add(RuleAdd, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
|
||||
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
||||
new Insets(15, 5, 3, 2), 0, 0));
|
||||
|
||||
//---- RuleEdit ----
|
||||
RuleEdit.setText("Edit");
|
||||
RuleEdit.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
isEdit = true;
|
||||
RuleEditMouseClicked(e,pane);
|
||||
model = (DefaultTableModel) table.getModel();
|
||||
isEdit = false;
|
||||
}
|
||||
});
|
||||
add(RuleEdit, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
|
||||
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
||||
new Insets(0, 5, 3, 2), 0, 0));
|
||||
|
||||
//======== scrollPane ========
|
||||
{
|
||||
|
||||
//---- table ----
|
||||
table.setShowVerticalLines(false);
|
||||
table.setVerifyInputWhenFocusTarget(false);
|
||||
table.setUpdateSelectionOnSort(false);
|
||||
table.setShowHorizontalLines(false);
|
||||
table.setModel(new DefaultTableModel());
|
||||
table.setSurrendersFocusOnKeystroke(true);
|
||||
scrollPane.setViewportView(table);
|
||||
}
|
||||
add(scrollPane, new GridBagConstraints(1, 0, 1, 4, 0.0, 0.0,
|
||||
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
||||
new Insets(15, 5, 5, 5), 0, 0));
|
||||
|
||||
//---- Remove ----
|
||||
Remove.setText("Remove");
|
||||
Remove.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
isEdit = true;
|
||||
RuleRemoveMouseClicked(e,pane);
|
||||
model = (DefaultTableModel) table.getModel();
|
||||
isEdit = false;
|
||||
}
|
||||
});
|
||||
add(Remove, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0,
|
||||
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
||||
new Insets(0, 5, 3, 2), 0, 0));
|
||||
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||
table.setModel(model);
|
||||
model.setDataVector(data,title);
|
||||
model.addTableModelListener(new TableModelListener() {
|
||||
@Override
|
||||
public void tableChanged(TableModelEvent e) {
|
||||
RuleTableChange(e,pane);
|
||||
}
|
||||
});
|
||||
table.setRowSorter(new TableRowSorter(model));
|
||||
}
|
||||
|
||||
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
||||
public JButton RuleAdd;
|
||||
public JButton RuleEdit;
|
||||
public JScrollPane scrollPane;
|
||||
public JTable table;
|
||||
public JButton Remove;
|
||||
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||
private final String[] title = new String[]{"Loaded", "Name", "Regex", "Color", "Scope", "Engine"};
|
||||
private DefaultTableModel model = new DefaultTableModel() {
|
||||
public Class<?> getColumnClass ( int column){
|
||||
if (column == 0) {
|
||||
return Boolean.class;
|
||||
}else{
|
||||
return String.class;
|
||||
}
|
||||
}
|
||||
public boolean isCellEditable(int row,int column){
|
||||
if (column ==0){
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
105
src/main/java/burp/ui/RuleSetting.java
Normal file
105
src/main/java/burp/ui/RuleSetting.java
Normal file
@@ -0,0 +1,105 @@
|
||||
package burp.ui;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import burp.Config;
|
||||
|
||||
/*
|
||||
* @author LinChen
|
||||
*/
|
||||
|
||||
public class RuleSetting extends JPanel {
|
||||
public RuleSetting() {
|
||||
initComponents();
|
||||
}
|
||||
|
||||
public void initComponents() {
|
||||
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
||||
label5 = new JLabel();
|
||||
label4 = new JLabel();
|
||||
Regex = new JTextField();
|
||||
label3 = new JLabel();
|
||||
label2 = new JLabel();
|
||||
Name = new JTextField();
|
||||
ScopeSelect = new JComboBox<>();
|
||||
EngineSelect = new JComboBox<>();
|
||||
label7 = new JLabel();
|
||||
ColorSelect = new JComboBox<>();
|
||||
|
||||
//======== this ========
|
||||
setLayout(null);
|
||||
|
||||
//---- label5 ----
|
||||
label5.setText("Engine:");
|
||||
add(label5);
|
||||
label5.setBounds(10, 175, 50, 17);
|
||||
|
||||
//---- label4 ----
|
||||
label4.setText("Scope:");
|
||||
add(label4);
|
||||
label4.setBounds(10, 135, 50, 17);
|
||||
add(Regex);
|
||||
Regex.setBounds(70, 50, 265, 30);
|
||||
|
||||
//---- label3 ----
|
||||
label3.setText("Regex:");
|
||||
add(label3);
|
||||
label3.setBounds(10, 55, 50, 17);
|
||||
|
||||
//---- label2 ----
|
||||
label2.setText("Name:");
|
||||
add(label2);
|
||||
label2.setBounds(10, 15, 50, 17);
|
||||
add(Name);
|
||||
Name.setBounds(70, 10, 265, 30);
|
||||
|
||||
//---- ScopeSelect ----
|
||||
ScopeSelect.setModel(new DefaultComboBoxModel<>(Config.scopeArray));
|
||||
add(ScopeSelect);
|
||||
ScopeSelect.setBounds(70, 130, 265, ScopeSelect.getPreferredSize().height);
|
||||
|
||||
//---- EngineSelect ----
|
||||
EngineSelect.setModel(new DefaultComboBoxModel<>(Config.engineArray));
|
||||
add(EngineSelect);
|
||||
EngineSelect.setBounds(70, 170, 265, EngineSelect.getPreferredSize().height);
|
||||
|
||||
//---- label7 ----
|
||||
label7.setText("Color:");
|
||||
add(label7);
|
||||
label7.setBounds(new Rectangle(new Point(10, 95), label7.getPreferredSize()));
|
||||
|
||||
//---- ColorSelect ----
|
||||
ColorSelect.setModel(new DefaultComboBoxModel<>(Config.colorArray));
|
||||
add(ColorSelect);
|
||||
ColorSelect.setBounds(70, 90, 265, ColorSelect.getPreferredSize().height);
|
||||
|
||||
{
|
||||
// compute preferred size
|
||||
Dimension preferredSize = new Dimension();
|
||||
for(int i = 0; i < getComponentCount(); i++) {
|
||||
Rectangle bounds = getComponent(i).getBounds();
|
||||
preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
|
||||
preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
|
||||
}
|
||||
Insets insets = getInsets();
|
||||
preferredSize.width += insets.right;
|
||||
preferredSize.height += insets.bottom;
|
||||
setMinimumSize(preferredSize);
|
||||
setPreferredSize(preferredSize);
|
||||
}
|
||||
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||
}
|
||||
|
||||
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
||||
private JLabel label5;
|
||||
private JLabel label4;
|
||||
public JTextField Regex;
|
||||
private JLabel label3;
|
||||
private JLabel label2;
|
||||
public JTextField Name;
|
||||
public JComboBox<String> ScopeSelect;
|
||||
public JComboBox<String> EngineSelect;
|
||||
private JLabel label7;
|
||||
public JComboBox<String> ColorSelect;
|
||||
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||
}
|
||||
Reference in New Issue
Block a user