@@ -51,12 +51,11 @@ public BurpToolBar(final MontoyaApi api) {
5151 private void initComponents () {
5252
5353 popupSetting = new javax .swing .JPopupMenu ();
54- mnuUserSettings = new javax .swing .JMenu ();
54+ mnuLoadProjectSettings = new javax .swing .JMenuItem ();
55+ mnuSaveProjectSettings = new javax .swing .JMenuItem ();
56+ jSeparator0 = new javax .swing .JPopupMenu .Separator ();
5557 mnuLoadUserSettings = new javax .swing .JMenuItem ();
5658 mnuSaveUserSettings = new javax .swing .JMenuItem ();
57- mnuProjectSettings = new javax .swing .JMenu ();
58- mnuLoadProjectSettings = new javax .swing .JMenuItem ();
59- saveSaveProjectSettings = new javax .swing .JMenuItem ();
6059 toolBar = new javax .swing .JToolBar ();
6160 tglIntercept = new javax .swing .JToggleButton ();
6261 jSeparator1 = new javax .swing .JToolBar .Separator ();
@@ -67,8 +66,23 @@ private void initComponents() {
6766 btnScrollTabLayout = new javax .swing .JButton ();
6867 btnSetting = new javax .swing .JButton ();
6968
70- mnuUserSettings .setText ("User Settings" );
71- mnuUserSettings .setToolTipText ("" );
69+ mnuLoadProjectSettings .setText ("Load project settings" );
70+ mnuLoadProjectSettings .setToolTipText ("" );
71+ mnuLoadProjectSettings .addActionListener (new java .awt .event .ActionListener () {
72+ public void actionPerformed (java .awt .event .ActionEvent evt ) {
73+ mnuLoadProjectSettingsActionPerformed (evt );
74+ }
75+ });
76+ popupSetting .add (mnuLoadProjectSettings );
77+
78+ mnuSaveProjectSettings .setText ("Save project settings" );
79+ mnuSaveProjectSettings .addActionListener (new java .awt .event .ActionListener () {
80+ public void actionPerformed (java .awt .event .ActionEvent evt ) {
81+ mnuSaveProjectSettingsActionPerformed (evt );
82+ }
83+ });
84+ popupSetting .add (mnuSaveProjectSettings );
85+ popupSetting .add (jSeparator0 );
7286
7387 mnuLoadUserSettings .setText ("Load user settings" );
7488 mnuLoadUserSettings .setToolTipText ("" );
@@ -77,7 +91,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
7791 mnuLoadUserSettingsActionPerformed (evt );
7892 }
7993 });
80- mnuUserSettings .add (mnuLoadUserSettings );
94+ popupSetting .add (mnuLoadUserSettings );
8195
8296 mnuSaveUserSettings .setText ("Save user settings" );
8397 mnuSaveUserSettings .setToolTipText ("" );
@@ -86,31 +100,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
86100 mnuSaveUserSettingsActionPerformed (evt );
87101 }
88102 });
89- mnuUserSettings .add (mnuSaveUserSettings );
90-
91- popupSetting .add (mnuUserSettings );
92-
93- mnuProjectSettings .setText ("Project Settings" );
94- mnuProjectSettings .setToolTipText ("" );
95-
96- mnuLoadProjectSettings .setText ("Load project settings" );
97- mnuLoadProjectSettings .setToolTipText ("" );
98- mnuLoadProjectSettings .addActionListener (new java .awt .event .ActionListener () {
99- public void actionPerformed (java .awt .event .ActionEvent evt ) {
100- mnuLoadProjectSettingsActionPerformed (evt );
101- }
102- });
103- mnuProjectSettings .add (mnuLoadProjectSettings );
104-
105- saveSaveProjectSettings .setText ("Save project settings" );
106- saveSaveProjectSettings .addActionListener (new java .awt .event .ActionListener () {
107- public void actionPerformed (java .awt .event .ActionEvent evt ) {
108- saveSaveProjectSettingsActionPerformed (evt );
109- }
110- });
111- mnuProjectSettings .add (saveSaveProjectSettings );
112-
113- popupSetting .add (mnuProjectSettings );
103+ popupSetting .add (mnuSaveUserSettings );
114104
115105 setLayout (new java .awt .BorderLayout ());
116106
@@ -293,7 +283,7 @@ private void btnScrollTabLayoutActionPerformed(java.awt.event.ActionEvent evt) {
293283 }//GEN-LAST:event_btnScrollTabLayoutActionPerformed
294284
295285 private void btnSettingActionPerformed (java .awt .event .ActionEvent evt ) {//GEN-FIRST:event_btnSettingActionPerformed
296- this .popupSetting .show (this , this .btnSetting .getX ()+ this .btnSetting .getWidth (), this .btnSetting .getY ());
286+ this .popupSetting .show (this , this .btnSetting .getX (), this .btnSetting .getY ()+ this .btnSetting .getHeight ());
297287 }//GEN-LAST:event_btnSettingActionPerformed
298288
299289 private File userSetting ;
@@ -302,23 +292,35 @@ private void btnSettingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
302292 private void mnuLoadUserSettingsActionPerformed (java .awt .event .ActionEvent evt ) {//GEN-FIRST:event_mnuLoadUserSettingsActionPerformed
303293 JFileChooser filechooser = new JFileChooser ();
304294 filechooser .setFileSelectionMode (JFileChooser .FILES_ONLY );
295+ filechooser .addChoosableFileFilter (BurpConfig .BURP_CONFIG_FILTER );
296+ filechooser .setFileFilter (BurpConfig .BURP_CONFIG_FILTER );
305297 filechooser .setCurrentDirectory (this .userSetting );
306- int selected = filechooser .showSaveDialog (this );
298+ int selected = filechooser .showOpenDialog (this );
307299 if (selected == JFileChooser .APPROVE_OPTION ) {
308- File file = filechooser .getSelectedFile ();
309- this .userSetting = file .getParentFile ();
310- this .api .burpSuite ().importUserOptionsFromJson (file .getAbsolutePath ());
300+ try {
301+ File file = filechooser .getSelectedFile ();
302+ this .userSetting = file .getParentFile ();
303+ String config = StringUtil .getStringUTF8 (FileUtil .bytesFromFile (file .getAbsoluteFile ()));
304+ this .api .burpSuite ().importUserOptionsFromJson (config );
305+ } catch (IOException ex ) {
306+ JOptionPane .showMessageDialog (this , ex .getMessage (), "User Settings" , JOptionPane .OK_OPTION );
307+ }
311308 }
312309 }//GEN-LAST:event_mnuLoadUserSettingsActionPerformed
313310
314311 private void mnuSaveUserSettingsActionPerformed (java .awt .event .ActionEvent evt ) {//GEN-FIRST:event_mnuSaveUserSettingsActionPerformed
315312 JFileChooser filechooser = new JFileChooser ();
316313 filechooser .setFileSelectionMode (JFileChooser .FILES_ONLY );
314+ filechooser .addChoosableFileFilter (BurpConfig .BURP_CONFIG_FILTER );
315+ filechooser .setFileFilter (BurpConfig .BURP_CONFIG_FILTER );
317316 filechooser .setCurrentDirectory (this .userSetting );
318- int selected = filechooser .showOpenDialog (this );
317+ int selected = filechooser .showSaveDialog (this );
319318 if (selected == JFileChooser .APPROVE_OPTION ) {
320319 try {
321320 File file = filechooser .getSelectedFile ();
321+ if (!BurpConfig .BURP_CONFIG_FILTER .accept (file )) {
322+ file = new File (file .getAbsolutePath () + ".json" );
323+ }
322324 this .userSetting = file .getParentFile ();
323325 String config = this .api .burpSuite ().exportUserOptionsAsJson ();
324326 FileUtil .bytesToFile (StringUtil .getBytesUTF8 (config ), file );
@@ -331,47 +333,58 @@ private void mnuSaveUserSettingsActionPerformed(java.awt.event.ActionEvent evt)
331333 private void mnuLoadProjectSettingsActionPerformed (java .awt .event .ActionEvent evt ) {//GEN-FIRST:event_mnuLoadProjectSettingsActionPerformed
332334 JFileChooser filechooser = new JFileChooser ();
333335 filechooser .setFileSelectionMode (JFileChooser .FILES_ONLY );
336+ filechooser .addChoosableFileFilter (BurpConfig .BURP_CONFIG_FILTER );
337+ filechooser .setFileFilter (BurpConfig .BURP_CONFIG_FILTER );
334338 filechooser .setCurrentDirectory (this .projectSetting );
335- int selected = filechooser .showSaveDialog (this );
339+ int selected = filechooser .showOpenDialog (this );
336340 if (selected == JFileChooser .APPROVE_OPTION ) {
337- File file = filechooser .getSelectedFile ();
338- this .projectSetting = file .getParentFile ();
339- this .api .burpSuite ().importProjectOptionsFromJson (file .getAbsolutePath ());
341+ try {
342+ File file = filechooser .getSelectedFile ();
343+ this .projectSetting = file .getParentFile ();
344+ String config = StringUtil .getStringUTF8 (FileUtil .bytesFromFile (file .getAbsoluteFile ()));
345+ this .api .burpSuite ().importProjectOptionsFromJson (config );
346+ } catch (IOException ex ) {
347+ JOptionPane .showMessageDialog (this , ex .getMessage (), "Project Settings" , JOptionPane .OK_OPTION );
348+ }
340349 }
341350 }//GEN-LAST:event_mnuLoadProjectSettingsActionPerformed
342351
343- private void saveSaveProjectSettingsActionPerformed (java .awt .event .ActionEvent evt ) {//GEN-FIRST:event_saveSaveProjectSettingsActionPerformed
352+ private void mnuSaveProjectSettingsActionPerformed (java .awt .event .ActionEvent evt ) {//GEN-FIRST:event_mnuSaveProjectSettingsActionPerformed
344353 JFileChooser filechooser = new JFileChooser ();
345354 filechooser .setFileSelectionMode (JFileChooser .FILES_ONLY );
355+ filechooser .addChoosableFileFilter (BurpConfig .BURP_CONFIG_FILTER );
356+ filechooser .setFileFilter (BurpConfig .BURP_CONFIG_FILTER );
346357 filechooser .setCurrentDirectory (this .projectSetting );
347- int selected = filechooser .showOpenDialog (this );
358+ int selected = filechooser .showSaveDialog (this );
348359 if (selected == JFileChooser .APPROVE_OPTION ) {
349360 try {
350361 File file = filechooser .getSelectedFile ();
362+ if (!BurpConfig .BURP_CONFIG_FILTER .accept (file )) {
363+ file = new File (file .getAbsolutePath () + ".json" );
364+ }
351365 this .projectSetting = file .getParentFile ();
352366 String config = this .api .burpSuite ().exportProjectOptionsAsJson ();
353367 FileUtil .bytesToFile (StringUtil .getBytesUTF8 (config ), file );
354368 } catch (IOException ex ) {
355369 JOptionPane .showMessageDialog (this , ex .getMessage (), "Project Settings" , JOptionPane .OK_OPTION );
356370 }
357371 }
358- }//GEN-LAST:event_saveSaveProjectSettingsActionPerformed
372+ }//GEN-LAST:event_mnuSaveProjectSettingsActionPerformed
359373
360374 // Variables declaration - do not modify//GEN-BEGIN:variables
361375 private javax .swing .JButton btnOpenBrowser ;
362376 private javax .swing .JButton btnScrollTabLayout ;
363377 private javax .swing .JButton btnSetting ;
364378 private javax .swing .JButton btnWrapTabLayout ;
365379 private javax .swing .JComboBox <String > cmbProfile ;
380+ private javax .swing .JPopupMenu .Separator jSeparator0 ;
366381 private javax .swing .JToolBar .Separator jSeparator1 ;
367382 private javax .swing .JToolBar .Separator jSeparator2 ;
368383 private javax .swing .JMenuItem mnuLoadProjectSettings ;
369384 private javax .swing .JMenuItem mnuLoadUserSettings ;
370- private javax .swing .JMenu mnuProjectSettings ;
385+ private javax .swing .JMenuItem mnuSaveProjectSettings ;
371386 private javax .swing .JMenuItem mnuSaveUserSettings ;
372- private javax .swing .JMenu mnuUserSettings ;
373387 private javax .swing .JPopupMenu popupSetting ;
374- private javax .swing .JMenuItem saveSaveProjectSettings ;
375388 private javax .swing .JToggleButton tglIntercept ;
376389 private javax .swing .JToolBar toolBar ;
377390 // End of variables declaration//GEN-END:variables
0 commit comments