JAL-3407 redact java 8 incompatible type inference
[jalview.git] / src / jalview / gui / Desktop.java
index 22280ed..7564dda 100644 (file)
@@ -143,7 +143,7 @@ public class Desktop extends jalview.jbgui.GDesktop
 
   protected static final String CONFIRM_KEYBOARD_QUIT = "CONFIRM_KEYBOARD_QUIT";
 
-  public static HashMap<String, FileWriter> savingFiles = new HashMap<>();
+  public static HashMap<String, FileWriter> savingFiles = new HashMap<String, FileWriter>();
 
   private JalviewChangeSupport changeSupport = new JalviewChangeSupport();
 
@@ -1924,7 +1924,10 @@ public class Desktop extends jalview.jbgui.GDesktop
     }
 
     // FIXME: ideally should use UI interface API
-    FeatureSettings viewFeatureSettings = af.featureSettings;
+    FeatureSettings viewFeatureSettings = (af.featureSettings != null
+            && af.featureSettings.isOpen())
+            ? af.featureSettings
+            : null;
     Rectangle fsBounds = af.getFeatureSettingsGeometry();
     for (int i = 0; i < size; i++)
     {
@@ -1935,7 +1938,10 @@ public class Desktop extends jalview.jbgui.GDesktop
       // transfer reference for existing feature settings to new alignFrame
       if (ap == af.alignPanel)
       {
-        newaf.featureSettings = viewFeatureSettings;
+        if (viewFeatureSettings != null && viewFeatureSettings.fr.ap == ap)
+        {
+          newaf.featureSettings = viewFeatureSettings;
+        }
         newaf.setFeatureSettingsGeometry(fsBounds);
       }
 
@@ -1954,8 +1960,17 @@ public class Desktop extends jalview.jbgui.GDesktop
 
       addInternalFrame(newaf, af.getTitle(), AlignFrame.DEFAULT_WIDTH,
               AlignFrame.DEFAULT_HEIGHT);
+      // and materialise a new feature settings dialog instance for the new alignframe
+      // (closes the old as if 'OK' was pressed)
+      if (ap == af.alignPanel && newaf.featureSettings != null
+              && newaf.featureSettings.isOpen()
+              && af.alignPanel.getAlignViewport().isShowSequenceFeatures())
+      {
+        newaf.showFeatureSettingsUI();
+      }
     }
 
+    af.featureSettings = null;
     af.alignPanels.clear();
     af.closeMenuItem_actionPerformed(true);
 
@@ -1995,7 +2010,7 @@ public class Desktop extends jalview.jbgui.GDesktop
 
         if (gatherThis)
         {
-          if (af.featureSettings != null)
+          if (af.featureSettings != null && af.featureSettings.isOpen())
           {
             if (source.featureSettings == null)
             {
@@ -2015,6 +2030,12 @@ public class Desktop extends jalview.jbgui.GDesktop
         }
       }
     }
+    // refresh the feature setting UI for the source frame if it exists
+    if (source.featureSettings != null
+            && source.featureSettings.isOpen())
+    {
+      source.showFeatureSettingsUI();
+    }
 
   }