import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
+import com.sun.xml.internal.ws.streaming.TidyXMLStreamReader;
+
/**
* Jalview Desktop
*
private JalviewChangeSupport changeSupport = new JalviewChangeSupport();
/**
+ * news reader - null if it was never started.
+ */
+ private BlogReader jvnews=null;
+
+ /**
* @param listener
* @see jalview.gui.JalviewChangeSupport#addJalviewPropertyChangeListener(java.beans.PropertyChangeListener)
*/
showConsole(showjconsole);
+ showNews.setVisible(false);
+ final Desktop me = this;
+ // Thread off the news reader, in case there are connection problems.
+ new Thread( new Runnable() {
+ @Override
+ public void run()
+ {
+ jvnews = new BlogReader(me);
+ showNews.setVisible(true);
+ }
+ }).start();
+
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
}
}
});
-
+ this.addFocusListener(new FocusListener()
+ {
+
+ @Override
+ public void focusLost(FocusEvent e)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void focusGained(FocusEvent e)
+ {
+ Cache.log.debug("Relaying windows after focus gain");
+ // make sure that we sort windows properly after we gain focus
+ instance.relayerWindows();
+ }
+ });
this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this));
// Spawn a thread that shows the splashscreen
SwingUtilities.invokeLater(new Runnable()
});
}
+ protected void showNews_actionPerformed(ActionEvent e)
+ {
+ showNews(showNews.isSelected());
+ }
+ void showNews(boolean visible)
+ {
+ {
+ jvnews.setVisible(visible);
+ showNews.setSelected(visible);
+ if (visible)
+ {
+ jvnews.refreshNews();
+ jvnews.toFront();
+ // try real hard to get focus when the news is first opened
+ new Thread(new Runnable() {
+ @Override
+ public void run()
+ {
+ while (jvnews.isVisible() && !jvnews.requestFocusInWindow())
+ {
+ try { Thread.sleep(50); } catch (InterruptedException x) {};
+ }
+
+ }
+ }).start();
+ }
+ }
+ }
+
/**
* recover the last known dimensions for a jalview window
*
storeLastKnownDimensions("JAVA_CONSOLE_", jconsole.getBounds());
jconsole.stopConsole();
}
+ if (jvnews!=null)
+ {
+ storeLastKnownDimensions("JALVIEW_RSS_WINDOW_", jvnews.getBounds());
+
+ }
+
System.exit(0);
}
}
+ /**
+ * fixes stacking order after a modal dialog to ensure windows that should be on top actually are
+ */
+ public void relayerWindows()
+ {
+ if (jvnews!=null && jvnews.isVisible())
+ {
+ jvnews.toFront();
+ }
+ }
+
protected JMenuItem groovyShell;
public void doGroovyCheck()