JAL-3141 Added warning/confirmation when suffixReverse is changed without changing...
[jalview.git] / src / jalview / jbgui / GPreferences.java
index 8c60b36..dedcd10 100755 (executable)
@@ -24,7 +24,9 @@ import jalview.bin.Cache;
 import jalview.fts.core.FTSDataColumnPreferences;
 import jalview.fts.core.FTSDataColumnPreferences.PreferenceSource;
 import jalview.fts.service.pdb.PDBFTSRestClient;
+import jalview.gui.Desktop;
 import jalview.gui.JalviewBooleanRadioButtons;
+import jalview.gui.JvOptionPane;
 import jalview.gui.JvSwingUtils;
 import jalview.gui.StructureViewer.ViewerType;
 import jalview.io.BackupFilenameParts;
@@ -1716,6 +1718,23 @@ public class GPreferences extends JPanel
     updateBackupFilesExampleLabel();
   }
 
+  private boolean warnAboutSuffixReverseChange()
+  {
+    boolean savedSuffixReverse = Cache.getDefault(BackupFiles.REVERSE_ORDER,
+            false);
+    int savedSuffixDigits = Cache.getDefault(BackupFiles.SUFFIX_DIGITS, 3);
+    String savedSuffixTemplate = Cache.getDefault(BackupFiles.SUFFIX,
+            ".bak" + BackupFiles.NUM_PLACEHOLDER);
+
+    boolean nowSuffixReverse = suffixReverse.isSelected();
+    int nowSuffixDigits = getSpinnerInt(suffixDigitsSpinner, 3);
+    String nowSuffixTemplate = suffixTemplate.getText();
+    return nowSuffixReverse != savedSuffixReverse
+            && nowSuffixDigits == savedSuffixDigits
+            && nowSuffixTemplate != null
+            && nowSuffixTemplate.equals(savedSuffixTemplate);
+  }
+
   /**
    * Initialises the Backups tabbed panel.
    * 
@@ -2054,7 +2073,22 @@ public class GPreferences extends JPanel
       @Override
       public void actionPerformed(ActionEvent e)
       {
-        updateBackupFilesExampleLabel();
+        boolean okay = true;
+        if (warnAboutSuffixReverseChange())
+        {
+          // Warning popup
+          okay = confirmSuffixReverseChange();
+        }
+        if (okay)
+        {
+          updateBackupFilesExampleLabel();
+        }
+        else
+        {
+          boolean savedSuffixReverse = Cache
+                  .getDefault(BackupFiles.REVERSE_ORDER, false);
+          suffixReverse.setSelected(savedSuffixReverse);
+        }
       }
     });
 
@@ -2099,6 +2133,20 @@ public class GPreferences extends JPanel
     return suffixPanel;
   }
 
+  private boolean confirmSuffixReverseChange()
+  {
+    boolean ret = false;
+    String warningMessage = MessageManager
+            .getString("label.warning_confirm_change_reverse");
+    int confirm = JvOptionPane.showConfirmDialog(Desktop.desktop,
+            warningMessage,
+            MessageManager.getString("label.change_increment_decrement"),
+            JvOptionPane.YES_NO_OPTION, JvOptionPane.WARNING_MESSAGE);
+
+    ret = (confirm == JvOptionPane.YES_OPTION);
+    return ret;
+  }
+
   private JPanel initBackupsTabKeepFilesPanel()
   {
     keepfilesPanel.setBorder(
@@ -2224,32 +2272,16 @@ public class GPreferences extends JPanel
       return;
     }
 
-    try
-    {
-      backupfilesRollMaxSpinner.commitEdit();
-      rollMax = (Integer) backupfilesRollMaxSpinner.getValue();
-      rollMax = rollMax < 1 ? 1 : rollMax;
-    } catch (Exception e)
-    {
-      System.out.println(
-              "Failed casting (Integer) backupfilesRollMaxSpinner.getValue()");
-    }
+    rollMax = getSpinnerInt(backupfilesRollMaxSpinner, 4);
+    rollMax = rollMax < 1 ? 1 : rollMax;
 
     if (suffix.indexOf(BackupFiles.NUM_PLACEHOLDER) == -1)
     {
       rollMax = 1;
     }
 
-    try
-    {
-      suffixDigitsSpinner.commitEdit();
-      digits = (Integer) suffixDigitsSpinner.getValue();
-      digits = digits < 1 ? 1 : digits;
-    } catch (Exception e)
-    {
-      System.out.println(
-              "Failed casting (Integer) suffixTemplateSpinner.getValue()");
-    }
+    digits = getSpinnerInt(suffixDigitsSpinner, 3);
+    digits = digits < 1 ? 1 : digits;
 
     int lowersurround = 2;
     int uppersurround = 0;