+ @Override
+ public String getSelectedSequencesAsAlignment(String format,
+ boolean suffix)
+ {
+ return getSelectedSequencesAsAlignmentFrom(null,
+ format, suffix);
+ }
+
+ @Override
+ public String getSelectedSequencesAsAlignmentFrom(AlignFrameI alf,
+ String format, boolean suffix)
+ {
+ if (alf == null)
+ {
+ alf = getCurrentAlignFrame();
+ }
+ return appLoader.getSelectedSequencesAsAlignmentFrom(alf, format,
+ "" + suffix);
+ }
+
+ @Override
+ public String arrayToSeparatorList(String[] array)
+ {
+ return appLoader.arrayToSeparatorList(array);
+ }
+
+ @Override
+ public String[] separatorListToArray(String list)
+ {
+ return appLoader.separatorListToArray(list);
+ }
+
+ //// probably not needed in JalviewJS -- From when Jmol and Jalview did not
+ //// have a direct connection?
+
+ @Override
+ public void setMouseoverListener(String listener)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setMouseoverListener(AlignFrameI af, String listener)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setSelectionListener(String listener)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setSelectionListener(AlignFrameI af, String listener)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setStructureListener(String listener, String modelSet)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void removeJavascriptListener(AlignFrameI af, String listener)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void mouseOverStructure(String pdbResNum, String chain,
+ String pdbfile)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void showOverview()
+ {
+ currentAlignFrame.overviewMenuItem_actionPerformed(null);
+ }
+
+ public void notifyWorker(AlignCalcWorkerI worker, String status)
+ {
+ // System.out.println("Jalview worker " + worker.getClass().getSimpleName()
+ // + " " + status);
+ }
+
+ /**
+ * flag to allow selected Runnable and Thread processes to run synchronously
+ *
+ * JAL-3563
+ *
+ */
+ private static boolean isSynchronous = false;
+
+ /**
+ * Set Jalview to run selected processes synchronously in test and headless
+ * environments.
+ *
+ * JAL-3563
+ *
+ * @param b
+ * @author Bob Hanson
+ */
+ public static void setSynchronous(boolean b)
+ {
+ isSynchronous = b;
+ }
+
+ /**
+ * Allows optional synchronous running of a Runnable that would otherwise use
+ * SwingUtilities.invokeLater.
+ *
+ * JAL-3563
+ *
+ * @param t
+ * @author Bob Hanson
+ */
+ public static boolean isSynchronous()
+ {
+ return isSynchronous;
+ }
+
+ /**
+ * Allows optional synchronous running of a Runnable that would otherwise use
+ * SwingUtilities.invokeLater.
+ *
+ * JAL-3563
+ *
+ * @param t
+ * @author Bob Hanson
+ */
+ public static void execRunnable(Runnable r)
+ {
+ if (isSynchronous())
+ {
+ r.run();
+ }
+ else
+ {
+ SwingUtilities.invokeLater(r);
+ }
+ }
+
+ /**
+ * Allows optional synchronous running of a thread that would otherwise be run
+ * using start().
+ *
+ * JAL-3563
+ *
+ * @param t
+ * @author Bob Hanson
+ */
+ public static void execThread(Thread t)
+ {
+ if (isSynchronous())
+ {
+ t.run();
+ }
+ else
+ {
+ t.start();
+ }
+ }
+
+ /**
+ * Get the SwingJS applet ID and combine that with the frameType
+ *
+ * @param frameType
+ * "alignment", "desktop", etc., or null
+ * @return
+ */
+ public static String getAppID(String frameType)
+ {
+ String id = Cache.getProperty("Info.j2sAppletID");
+ if (id == null)
+ {
+ id = "jalview";
+ }
+ return id + (frameType == null ? "" : "-" + frameType);
+ }
+
+}
\ No newline at end of file