+ if (dsktp.v_client == null)
+ {
+ Thread rthr = new Thread(new Runnable()
+ {
+
+ public void run()
+ {
+ dsktp.v_client = new VamsasApplication(dsktp, mysesid);
+ dsktp.setupVamsasConnectedGui();
+ dsktp.v_client.initial_update();
+ }
+
+ });
+ rthr.start();
+ }
+ };
+ });
+ VamsasStMenu.add(sessit);
+ }
+ // don't show an empty menu.
+ VamsasStMenu.setVisible(sess.length > 0);
+
+ }
+ else
+ {
+ jalview.bin.Cache.log.debug("No current vamsas sessions.");
+ VamsasStMenu.removeAll();
+ VamsasStMenu.setVisible(false);
+ }
+ }
+ else
+ {
+ // Not interested in the content. Just hide ourselves.
+ VamsasStMenu.setVisible(false);
+ }
+ }
+
+ public void vamsasSave_actionPerformed(ActionEvent e)
+ {
+ if (v_client != null)
+ {
+ JalviewFileChooser chooser = new JalviewFileChooser(
+ jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[]
+ { "vdj" }, // TODO: VAMSAS DOCUMENT EXTENSION is VDJ
+ new String[]
+ { "Vamsas Document" }, "Vamsas Document");
+
+ chooser.setFileView(new JalviewFileView());
+ chooser.setDialogTitle("Save Vamsas Document Archive");
+
+ int value = chooser.showSaveDialog(this);
+
+ if (value == JalviewFileChooser.APPROVE_OPTION)
+ {
+ java.io.File choice = chooser.getSelectedFile();
+ JPanel progpanel = addProgressPanel("Saving VAMSAS Document to "
+ + choice.getName());
+ jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice.getParent());
+ String warnmsg = null;
+ String warnttl = null;
+ try
+ {
+ v_client.vclient.storeDocument(choice);
+ } catch (Error ex)
+ {
+ warnttl = "Serious Problem saving Vamsas Document";
+ warnmsg = ex.toString();
+ jalview.bin.Cache.log.error("Error Whilst saving document to "
+ + choice, ex);
+
+ } catch (Exception ex)
+ {
+ warnttl = "Problem saving Vamsas Document.";
+ warnmsg = ex.toString();
+ jalview.bin.Cache.log.warn("Exception Whilst saving document to "
+ + choice, ex);
+
+ }
+ removeProgressPanel(progpanel);
+ if (warnmsg != null)
+ {
+ JOptionPane.showInternalMessageDialog(Desktop.desktop,
+
+ warnmsg, warnttl, JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ }
+ }
+
+ JPanel vamUpdate = null;
+
+ /**
+ * hide vamsas user gui bits when a vamsas document event is being handled.
+ *
+ * @param b
+ * true to hide gui, false to reveal gui
+ */
+ public void setVamsasUpdate(boolean b)
+ {
+ jalview.bin.Cache.log.debug("Setting gui for Vamsas update "
+ + (b ? "in progress" : "finished"));
+
+ if (vamUpdate != null)
+ {
+ this.removeProgressPanel(vamUpdate);
+ }
+ if (b)
+ {
+ vamUpdate = this.addProgressPanel("Updating vamsas session");
+ }
+ vamsasStart.setVisible(!b);
+ vamsasStop.setVisible(!b);
+ vamsasSave.setVisible(!b);
+ }
+
+ public JInternalFrame[] getAllFrames()
+ {
+ return desktop.getAllFrames();
+ }
+
+ /**
+ * Checks the given url to see if it gives a response indicating that the user
+ * should be informed of a new questionnaire.
+ *
+ * @param url
+ */
+ public void checkForQuestionnaire(String url)
+ {
+ UserQuestionnaireCheck jvq = new UserQuestionnaireCheck(url);
+ // javax.swing.SwingUtilities.invokeLater(jvq);
+ new Thread(jvq).start();
+ }
+
+ /**
+ * Proxy class for JDesktopPane which optionally displays the current memory
+ * usage and highlights the desktop area with a red bar if free memory runs
+ * low.
+ *
+ * @author AMW
+ */
+ public class MyDesktopPane extends JDesktopPane implements Runnable
+ {
+
+ boolean showMemoryUsage = false;
+
+ Runtime runtime;
+
+ java.text.NumberFormat df;
+
+ float maxMemory, allocatedMemory, freeMemory, totalFreeMemory,
+ percentUsage;
+
+ public MyDesktopPane(boolean showMemoryUsage)
+ {
+ showMemoryUsage(showMemoryUsage);
+ }
+
+ public void showMemoryUsage(boolean showMemoryUsage)
+ {
+ this.showMemoryUsage = showMemoryUsage;
+ if (showMemoryUsage)
+ {
+ Thread worker = new Thread(this);
+ worker.start();
+ }
+ }