JAL-3141 Added warning/confirmation when suffixReverse is changed without changing...
authorBen Soares <bsoares@dundee.ac.uk>
Thu, 14 Feb 2019 15:52:03 +0000 (15:52 +0000)
committerBen Soares <bsoares@dundee.ac.uk>
Thu, 14 Feb 2019 15:52:03 +0000 (15:52 +0000)
resources/lang/Messages.properties
resources/lang/Messages_es.properties
src/jalview/io/BackupFiles.java
src/jalview/jbgui/GPreferences.java

index 4989149..ac6cdc4 100644 (file)
@@ -1395,4 +1395,6 @@ label.rolled_backups = Rolled backup files
 label.previously_saved_scheme = Previously saved scheme
 label.no_backup_files = NO BACKUP FILES
 label.include_backup_files = Include backup files
-label.cancel_changes = Cancel changes
\ No newline at end of file
+label.cancel_changes = Cancel changes
+label.warning_confirm_change_reverse = Warning!\nIf you change the increment/decrement of the backup filename number, without changing the suffix or digits,\nthis may cause loss of backup files created with the previous backup filename scheme.\nAre you sure you wish to do this?
+label.change_increment_decrement = Change increment/decrement?
\ No newline at end of file
index 747b36d..49b23ea 100644 (file)
@@ -1392,8 +1392,10 @@ label.customise = Personalizado
 label.default = Defecto
 label.single_file = Solo uno respaldo
 label.keep_all_versions = Mantener todas las versiones
-label.rolled_backups = Ciclos resaldos
+label.rolled_backups = Ciclos respaldos
 label.previously_saved_scheme = Esquema previamente guardado
 label.no_backup_files = NO ARCHIVOS DE RESPALDOS
 label.include_backup_files = Incluir archivos de respaldos
-label.cancel_changes = Cancelar cambios
\ No newline at end of file
+label.cancel_changes = Cancelar cambios
+label.warning_confirm_change_reverse = ¡Advertencia!\nSi cambia el incremento/decremento del número de archivos de respaldos, sin cambiar el sufijo o los dígitos,\nesto puede causar la pérdida de los archivos de respaldos creados con el esquema anterior de nombre de archivo de respaldos.\n¿Está seguro de que desea hacer esto?
+label.change_increment_decrement = ¿Cambiar de incremento/decremento?
\ No newline at end of file
index 65232fd..695349c 100644 (file)
@@ -370,7 +370,6 @@ public class BackupFiles
       boolean delete = false;
       if (confirmDelete)
       {
-        // Object[] confirmMessageArray = {};
         StringBuilder confirmMessage = new StringBuilder();
         confirmMessage.append(MessageManager
                 .getString("label.backupfiles_confirm_delete_old_files"));
@@ -412,7 +411,8 @@ public class BackupFiles
     }
   }
 
-  private TreeMap sortBackupFilesAsTreeMap(File[] backupFiles,
+  private TreeMap<Integer, File> sortBackupFilesAsTreeMap(
+          File[] backupFiles,
           String basename)
   {
     // sort the backup files (based on integer found in the suffix) using a
@@ -481,12 +481,10 @@ public class BackupFiles
 
     File file = new File(fileName);
 
-    String dir = "";
     File dirFile;
     try
     {
       dirFile = file.getParentFile();
-      dir = dirFile.getCanonicalPath();
     } catch (Exception e)
     {
       System.out.println(
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;