JAL-3184 restore group visibility on Cancel in Feature Settings
[jalview.git] / src / jalview / gui / FeatureSettings.java
index 1358c8f..c310c47 100644 (file)
@@ -62,6 +62,7 @@ import java.io.FileOutputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -135,6 +136,10 @@ public class FeatureSettings extends JPanel
 
   private Map<String, FeatureMatcherSetI> originalFilters;
 
+  private List<String> originalVisibleGroups;
+
+  private List<String> originalHiddenGroups;
+
   final JInternalFrame frame;
 
   JScrollPane scrollPane = new JScrollPane();
@@ -187,6 +192,10 @@ public class FeatureSettings extends JPanel
 
     originalFilters = new HashMap<>(fr.getFeatureFilters()); // shallow copy
 
+    originalVisibleGroups = new ArrayList<>(fr.getGroups(true));
+
+    originalHiddenGroups = new ArrayList<>(fr.getGroups(false));
+
     try
     {
       jbInit();
@@ -1236,10 +1245,7 @@ public class FeatureSettings extends JPanel
       @Override
       public void actionPerformed(ActionEvent e)
       {
-        fr.setTransparency(originalTransparency);
-        fr.setFeatureFilters(originalFilters);
-        updateFeatureRenderer(originalData);
-        close();
+        cancel();
       }
     });
 
@@ -1321,6 +1327,22 @@ public class FeatureSettings extends JPanel
     this.add(settingsPane);
   }
 
+  /**
+   * Restores feature type and group visibility, and any filters and
+   * transparency setting, to the values when this dialog was opened. Note this
+   * won't affect any feature types or groups which were added while the dialog
+   * was open.
+   */
+  void cancel()
+  {
+    fr.setTransparency(originalTransparency);
+    fr.setFeatureFilters(originalFilters);
+    fr.setGroupVisibility(originalVisibleGroups, true);
+    fr.setGroupVisibility(originalHiddenGroups, false);
+    updateFeatureRenderer(originalData);
+    close();
+  }
+
   // ///////////////////////////////////////////////////////////////////////
   // http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
   // ///////////////////////////////////////////////////////////////////////