X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FWebserviceInfo.java;h=27cbfe48aed02c9ec038482a6c357ba1dedf28e1;hb=865a855a4ca87eadb3e5ff284ed32ed307d9c34b;hp=0bf0fa6bdef69b872d35e2ce296519a265598086;hpb=8a1017e676ae8a3ae7f0900a7023c4ad598a0ad5;p=jalview.git diff --git a/src/jalview/gui/WebserviceInfo.java b/src/jalview/gui/WebserviceInfo.java index 0bf0fa6..27cbfe4 100755 --- 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.6) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1) + * 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,7 +26,6 @@ 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; @@ -40,7 +40,7 @@ import jalview.ws.WSClientI; * @version $Revision$ */ public class WebserviceInfo extends GWebserviceInfo implements - HyperlinkListener + HyperlinkListener, IProgressIndicator { /** Job is Queued */ @@ -295,7 +295,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); @@ -798,9 +799,10 @@ public class WebserviceInfo extends GWebserviceInfo implements 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 +823,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) { - 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( + "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() + { + + @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; } }