X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FWebserviceInfo.java;h=ca6650bff962a013f4226d20fb42bee7ddb678a1;hb=a8f483d04205bb8273ee311c12968b7e86d205fa;hp=9f8a8a87879f2088f044767c4485457fdb448715;hpb=797df64fa2a0a30773d0f48f5494d4155e5a8be3;p=jalview.git diff --git a/src/jalview/gui/WebserviceInfo.java b/src/jalview/gui/WebserviceInfo.java old mode 100755 new mode 100644 index 9f8a8a8..ca6650b --- a/src/jalview/gui/WebserviceInfo.java +++ b/src/jalview/gui/WebserviceInfo.java @@ -1,19 +1,20 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) - * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) + * Copyright (C) 2014 The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * + * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.gui; @@ -25,12 +26,11 @@ import java.awt.image.*; import javax.swing.*; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; -import javax.swing.event.HyperlinkEvent.EventType; import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.StyleSheet; -import jalview.bin.Cache; import jalview.jbgui.*; +import jalview.util.MessageManager; import jalview.ws.WSClientI; /** @@ -41,7 +41,7 @@ import jalview.ws.WSClientI; * @version $Revision$ */ public class WebserviceInfo extends GWebserviceInfo implements - HyperlinkListener + HyperlinkListener, IProgressIndicator { /** Job is Queued */ @@ -296,7 +296,8 @@ public class WebserviceInfo extends GWebserviceInfo implements this.title = title; setInfoText(info); - java.net.URL url = getClass().getResource("/images/logo.gif"); + java.net.URL url = getClass().getResource( + "/images/Jalview_Logo_small.png"); image = java.awt.Toolkit.getDefaultToolkit().createImage(url); MediaTracker mt = new MediaTracker(this); @@ -767,41 +768,42 @@ public class WebserviceInfo extends GWebserviceInfo implements switch (currentStatus) { case STATE_QUEUING: - g.drawString(title.concat(" - queuing"), 60, 30); + g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_queueing")), 60, 30); break; case STATE_RUNNING: - g.drawString(title.concat(" - running"), 60, 30); + g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_running")), 60, 30); break; case STATE_STOPPED_OK: - g.drawString(title.concat(" - complete"), 60, 30); + g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_completed")), 60, 30); break; case STATE_CANCELLED_OK: - g.drawString(title.concat(" - job cancelled!"), 60, 30); + g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_job_cancelled")), 60, 30); break; case STATE_STOPPED_ERROR: - g.drawString(title.concat(" - job error!"), 60, 30); + g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_job_error")), 60, 30); break; case STATE_STOPPED_SERVERERROR: - g.drawString(title.concat(" - Server Error! (try later)"), 60, 30); + g.drawString(title.concat(" - ").concat(MessageManager.getString("label.server_error_try_later")), 60, 30); break; } if (image != null) { - g.rotate(Math.toRadians(angle), 28, 28); + int x = image.getWidth(this) / 2, y = image.getHeight(this) / 2; + g.rotate(Math.toRadians(angle), 10 + x, 10 + y); g.drawImage(image, 10, 10, this); - g.rotate(-Math.toRadians(angle), 28, 28); + g.rotate(-Math.toRadians(angle), 10 + x, 10 + y); } } @@ -822,21 +824,109 @@ public class WebserviceInfo extends GWebserviceInfo implements public void hyperlinkUpdate(HyperlinkEvent e) { - if (e.getEventType() == EventType.ACTIVATED) + Desktop.hyperlinkUpdate(e); + } + + // methods for implementing IProgressIndicator + // need to refactor to a reusable stub class + Hashtable progressBars, progressBarHandlers; + + /* + * (non-Javadoc) + * + * @see jalview.gui.IProgressIndicator#setProgressBar(java.lang.String, long) + */ + @Override + public void setProgressBar(String message, long id) + { + if (progressBars == null) + { + progressBars = new Hashtable(); + progressBarHandlers = new Hashtable(); + } + + JPanel progressPanel; + Long lId = new Long(id); + GridLayout layout = (GridLayout) statusPanel.getLayout(); + if (progressBars.get(lId) != null) { - String url=null; - try + progressPanel = (JPanel) progressBars.get(new Long(id)); + statusPanel.remove(progressPanel); + progressBars.remove(lId); + progressPanel = null; + if (message != null) { - url = e.getURL().toString(); - Desktop.showUrl(url); - } catch (Exception x) + statusBar.setText(message); + } + if (progressBarHandlers.contains(lId)) { - if (url!=null) { - Cache.log.error("Couldn't handle string "+url+" as a URL."); - } - // ignore any exceptions due to dud links. + progressBarHandlers.remove(lId); } + layout.setRows(layout.getRows() - 1); + } + else + { + progressPanel = new JPanel(new BorderLayout(10, 5)); + + JProgressBar progressBar = new JProgressBar(); + progressBar.setIndeterminate(true); + + progressPanel.add(new JLabel(message), BorderLayout.WEST); + progressPanel.add(progressBar, BorderLayout.CENTER); + + layout.setRows(layout.getRows() + 1); + statusPanel.add(progressPanel); + + progressBars.put(lId, progressPanel); + } + // update GUI + // setMenusForViewport(); + validate(); + } + + @Override + 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(MessageManager.getString("action.cancel")); + final IProgressIndicator us = this; + cancel.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + handler.cancelActivity(id); + us.setProgressBar( + "Cancelled " + + ((JLabel) progressPanel.getComponent(0)) + .getText(), id); + } + }); + progressPanel.add(cancel, BorderLayout.EAST); + } + } + + /** + * + * @return true if any progress bars are still active + */ + @Override + public boolean operationInProgress() + { + if (progressBars != null && progressBars.size() > 0) + { + return true; } + return false; } }