import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
if (jalview.bin.Cache.getDefault("SHOW_OVERVIEW", false))
{
- this.overviewMenuItem_actionPerformed(null);
+ this.overviewMenuItem_actionPerformed();
}
addKeyListener();
}
ap.updateLayout();
- ap.setSelected(true);
+ ap.setSelected(true, true);
ap.alignFrame.setMenusForViewport();
}
}
/**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
+ * Opens a new Overview window for the current alignment view, unless one is
+ * open already, in which case does nothing.
*/
@Override
- public void overviewMenuItem_actionPerformed(ActionEvent e)
+ public void overviewMenuItem_actionPerformed()
{
if (alignPanel.overviewPanel != null)
{
{
frame.addKeyListener(getKeyListeners()[0]);
}
-
- /*
- * bring alignment panel to front when Overview gets focus
- * (even after New View / eXpand / Gather!)
- */
+
final AlignmentPanel ap = alignPanel;
frame.addFocusListener(new FocusAdapter()
{
@Override
public void focusGained(FocusEvent e)
{
+ /*
+ * bring alignment panel to front when Overview gets focus
+ * (AlignFrame, or SplitFrame if alignment is in a split frame)
+ */
+ ap.setSelected(true, true);
+
+ /*
+ * restore focus to the Overview
+ * (temporarily removing the focus listener)
+ */
+ FocusListener me = frame.getFocusListeners()[0];
+ frame.removeFocusListener(me);
try
{
- ap.alignFrame.setSelected(true);
- ap.alignFrame.setIcon(false);
- ap.alignFrame.setDisplayedView(ap);
+ frame.setSelected(true);
} catch (PropertyVetoException e1)
{
+ } finally
+ {
+ /*
+ * restore the listener _after_ setSelected has run
+ */
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ frame.addFocusListener(me);
+ }
+ });
}
}
});