X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FWebserviceInfo.java;h=8dcf72a80f93461d3d8b3feb45fd17d58a229bb8;hb=497958b4e5217efaa3ddeece38f38c3a6e98cb96;hp=0bf0fa6bdef69b872d35e2ce296519a265598086;hpb=8a1017e676ae8a3ae7f0900a7023c4ad598a0ad5;p=jalview.git
diff --git a/src/jalview/gui/WebserviceInfo.java b/src/jalview/gui/WebserviceInfo.java
old mode 100755
new mode 100644
index 0bf0fa6..8dcf72a
--- a/src/jalview/gui/WebserviceInfo.java
+++ b/src/jalview/gui/WebserviceInfo.java
@@ -1,19 +1,22 @@
/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, 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.
- *
+ * 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 .
+ * 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,11 +28,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.jbgui.*;
+import jalview.util.MessageManager;
import jalview.ws.WSClientI;
/**
@@ -40,7 +43,7 @@ import jalview.ws.WSClientI;
* @version $Revision$
*/
public class WebserviceInfo extends GWebserviceInfo implements
- HyperlinkListener
+ HyperlinkListener, IProgressIndicator
{
/** Job is Queued */
@@ -295,7 +298,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);
@@ -352,8 +356,7 @@ public class WebserviceInfo extends GWebserviceInfo implements
{
if (jobpane < 0 || jobpane >= jobPanes.size())
{
- throw new Error("setStatus called for non-existent job pane."
- + jobpane);
+ throw new Error(MessageManager.formatMessage("error.setstatus_called_non_existent_job_pane", new String[]{Integer.valueOf(jobpane).toString()}));
}
switch (status)
{
@@ -647,8 +650,8 @@ public class WebserviceInfo extends GWebserviceInfo implements
// anyhow - it has to stop threads and clean up
// JBPNote : TODO: Instead of a warning, we should have an optional 'Are
// you sure?' prompt
- warnUser("This job cannot be cancelled.\nJust close the window.",
- "Cancel job");
+ warnUser(MessageManager.getString("warn.job_cannot_be_cancelled_close_window"),
+ MessageManager.getString("action.cancel_job"));
}
else
{
@@ -766,41 +769,62 @@ 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);
}
}
@@ -821,17 +845,106 @@ 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)
{
- try
+ progressPanel = (JPanel) progressBars.get(new Long(id));
+ statusPanel.remove(progressPanel);
+ progressBars.remove(lId);
+ progressPanel = null;
+ if (message != null)
{
- final String url = e.getURL().toString();
- Desktop.showUrl(url);
- } catch (Exception x)
+ statusBar.setText(message);
+ }
+ if (progressBarHandlers.contains(lId))
{
- // 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(MessageManager.getString("error.call_setprogressbar_before_registering_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(MessageManager.formatMessage("label.cancelled_params", new String[]{((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;
}
}