JAL-3784 null the right overview reference when it is closed
[jalview.git] / src / jalview / gui / AlignFrame.java
index 8e7820f..2c079b8 100644 (file)
@@ -2764,15 +2764,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   }
 
   /**
-   * DOCUMENT ME!
+   * Opens a Finder dialog
    * 
    * @param e
-   *          DOCUMENT ME!
    */
   @Override
   public void findMenuItem_actionPerformed(ActionEvent e)
   {
-    new Finder();
+    new Finder(alignPanel);
   }
 
   /**
@@ -3369,10 +3368,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   }
 
   /**
-   * DOCUMENT ME!
+   * Opens an Overview panel for the alignment, unless one is open already
    * 
    * @param e
-   *          DOCUMENT ME!
    */
   @Override
   public void overviewMenuItem_actionPerformed(ActionEvent e)
@@ -3382,15 +3380,29 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       return;
     }
 
+    boolean showHiddenRegions = Cache.getDefault(Preferences.SHOW_OV_HIDDEN_AT_START,
+                false);
+    openOverviewPanel(showHiddenRegions);
+  }
+
+  public OverviewPanel openOverviewPanel(boolean showHidden)
+  {
     JInternalFrame frame = new JInternalFrame();
-    final OverviewPanel overview = new OverviewPanel(alignPanel);
+    final OverviewPanel overview = new OverviewPanel(alignPanel, showHidden);
     frame.setContentPane(overview);
-    Desktop.addInternalFrame(frame, MessageManager
+    String overviewTitle = MessageManager
             .formatMessage("label.overview_params", new Object[]
-            { this.getTitle() }), true, frame.getWidth(), frame.getHeight(),
+            { this.getTitle() });
+    String viewName = alignPanel.getViewName();
+    if (viewName != null)
+    {
+      overviewTitle += (" " + viewName);
+    }
+    Desktop.addInternalFrame(frame, overviewTitle, true, frame.getWidth(), frame.getHeight(),
             true, true);
     frame.pack();
     frame.setLayer(JLayeredPane.PALETTE_LAYER);
+    final AlignmentPanel thePanel = this.alignPanel; 
     frame.addInternalFrameListener(
             new javax.swing.event.InternalFrameAdapter()
             {
@@ -3399,7 +3411,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                       javax.swing.event.InternalFrameEvent evt)
               {
                 overview.dispose();
-                alignPanel.setOverviewPanel(null);
+                thePanel.setOverviewPanel(null);
               }
             });
     if (getKeyListeners().length > 0)
@@ -3408,6 +3420,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
 
     alignPanel.setOverviewPanel(overview);
+    
+    return overview;
   }
 
   @Override