+
+ /*
+ * (non-Javadoc)
+ *
+ * @see jalview.gui.IProgressIndicator#registerHandler(long,
+ * jalview.gui.IProgressIndicatorHandler)
+ */
+ public void registerHandler(final long id,
+ final IProgressIndicatorHandler handler)
+ {
+ if (progressBarHandlers == null || !progressBars.contains(new Long(id)))
+ {
+ throw new Error(
+ "call setProgressBar before registering the progress bar's handler.");
+ }
+ progressBarHandlers.put(new Long(id), handler);
+ final JPanel progressPanel = (JPanel) progressBars.get(new Long(id));
+ if (handler.canCancel())
+ {
+ JButton cancel = new JButton("Cancel");
+ final IProgressIndicator us = this;
+ cancel.addActionListener(new ActionListener()
+ {
+
+ public void actionPerformed(ActionEvent e)
+ {
+ handler.cancelActivity(id);
+ us.setProgressBar("Cancelled "
+ + ((JLabel) progressPanel.getComponent(0)).getText(), id);
+ }
+ });
+ progressPanel.add(cancel, BorderLayout.EAST);
+ }
+ }
+
+ /**
+ * This will return the first AlignFrame viewing AlignViewport av. It will
+ * break if there are more than one AlignFrames viewing a particular av. This
+ *
+ * @param av
+ * @return alignFrame for av
+ */
+ public static AlignFrame getAlignFrameFor(AlignViewport av)
+ {
+ if (desktop != null)
+ {
+ AlignmentPanel[] aps = getAlignmentPanels(av.getSequenceSetId());
+ for (int panel = 0; aps != null && panel < aps.length; panel++)
+ {
+ if (aps[panel] != null && aps[panel].av == av)
+ {
+ return aps[panel].alignFrame;
+ }
+ }
+ }
+ return null;
+ }
+
+ public VamsasApplication getVamsasApplication()
+ {
+ return v_client;
+
+ }
+ /**
+ * flag set if jalview GUI is being operated programmatically
+ */
+ private boolean inBatchMode=false;
+
+ /**
+ * check if jalview GUI is being operated programmatically
+ * @return inBatchMode
+ */
+ public boolean isInBatchMode()
+ {
+ return inBatchMode;
+ }
+
+ /**
+ * set flag if jalview GUI is being operated programmatically
+ * @param inBatchMode
+ */
+ public void setInBatchMode(boolean inBatchMode)
+ {
+ this.inBatchMode = inBatchMode;
+ }
+
+
+ public void startServiceDiscovery()
+ {
+ startServiceDiscovery(false);
+ }
+
+ public void startServiceDiscovery(boolean blocking)
+ {
+ boolean alive = true;
+ Thread t0 = null, t1 = null, t2 = null;
+
+ // todo: changesupport handlers need to be transferred
+ if (discoverer == null)
+ {
+ discoverer = new jalview.ws.jws1.Discoverer();
+ // register PCS handler for desktop.
+ discoverer.addPropertyChangeListener(changeSupport);
+ }
+ if (Cache.getDefault("SHOW_JWS1_SERVICES", true))
+ {
+ (t0 = new Thread(discoverer)).start();
+ }
+
+ try
+ {
+ if (Cache.getDefault("SHOW_ENFIN_SERVICES", true))
+ {
+ // EnfinEnvision web service menu entries are rebuild every time the
+ // menu is shown, so no changeSupport events are needed.
+ jalview.ws.EnfinEnvision2OneWay.getInstance();
+ (t1 = new Thread(jalview.ws.EnfinEnvision2OneWay.getInstance()))
+ .start();
+ }
+ } catch (Exception e)
+ {
+ Cache.log
+ .info(
+ "Exception when trying to launch Envision2 workflow discovery.",
+ e);
+ Cache.log.info(e.getStackTrace());
+ }
+ if (Cache.getDefault("SHOW_JWS2_SERVICES", true))
+ {
+ jalview.ws.jws2.Jws2Discoverer.getDiscoverer()
+ .addPropertyChangeListener(changeSupport);
+ (t2 = new Thread(jalview.ws.jws2.Jws2Discoverer.getDiscoverer()))
+ .start();
+ }
+ if (blocking)
+ {
+ while (alive)
+ {
+ try
+ {
+ Thread.sleep(15);
+ } catch (Exception e)
+ {
+ }
+ alive = (t1 != null && t1.isAlive())
+ || (t2 != null && t2.isAlive())
+ || (t0 != null && t0.isAlive());
+ }
+ }
+ }
+
+ /**
+ * start a thread to open a URL in the configured browser. Pops up a warning dialog to the user if there is an exception when calling out to the browser to open the URL.
+ * @param url
+ */
+ public static void showUrl(final String url)
+ {
+ new Thread(new Runnable() {
+ public void run() {
+ try {
+ jalview.util.BrowserLauncher.openURL(url);
+ } catch (Exception ex)
+ {
+ JOptionPane
+ .showInternalMessageDialog(
+ Desktop.desktop,
+ "Unixers: Couldn't find default web browser."
+ + "\nAdd the full path to your browser in Preferences.",
+ "Web browser not found", JOptionPane.WARNING_MESSAGE);
+
+ ex.printStackTrace();
+ }
+ }
+ }).start();
+ }
+
+ public static WsParamSetManager wsparamManager = null;
+ public static ParamManager getUserParameterStore()
+ {
+ if (wsparamManager==null)
+ {
+ wsparamManager = new WsParamSetManager();
+ }
+ return wsparamManager;
+ }
+