X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FWebserviceInfo.java;h=9dadee758da8b16b4facc59addca5edc2294a683;hb=d187567c926fed31f9cd9bda0dc112bc4d1b1261;hp=5241ec4ee014c8b6dcea2f97fa8bf6206037b3f5;hpb=efc31b4a8d5cee63555586804a2b79c06bdb5a14;p=jalview.git diff --git a/src/jalview/gui/WebserviceInfo.java b/src/jalview/gui/WebserviceInfo.java index 5241ec4..9dadee7 100755 --- a/src/jalview/gui/WebserviceInfo.java +++ b/src/jalview/gui/WebserviceInfo.java @@ -22,34 +22,35 @@ import jalview.jbgui.*; import java.awt.*; import java.awt.event.*; +import java.awt.image.*; import javax.swing.*; /** - * DOCUMENT ME! + * Base class for web service client thread and gui * * @author $author$ * @version $Revision$ */ public class WebserviceInfo extends GWebserviceInfo { - /** DOCUMENT ME!! */ + /** Job is Queued */ public static final int STATE_QUEUING = 0; - /** DOCUMENT ME!! */ + /** Job is Running */ public static final int STATE_RUNNING = 1; - /** DOCUMENT ME!! */ + /** Job has finished with no errors */ public static final int STATE_STOPPED_OK = 2; - /** DOCUMENT ME!! */ + /** Job has been cancelled with no errors */ public static final int STATE_CANCELLED_OK = 3; - /** DOCUMENT ME!! */ + /** job has stopped because of some error */ public static final int STATE_STOPPED_ERROR = 4; - /** DOCUMENT ME!! */ + /** job has failed because of some unavoidable service interruption */ public static final int STATE_STOPPED_SERVERERROR = 5; int currentStatus = STATE_QUEUING; Image image; @@ -57,12 +58,13 @@ public class WebserviceInfo extends GWebserviceInfo String title = ""; jalview.ws.WSClientI thisService; boolean serviceIsCancellable; + JInternalFrame frame; /** * Creates a new WebserviceInfo object. * - * @param title DOCUMENT ME! - * @param info DOCUMENT ME! + * @param title short name and job type + * @param info reference or other human readable description */ public WebserviceInfo(String title, String info) { @@ -113,9 +115,10 @@ public class WebserviceInfo extends GWebserviceInfo */ void init(String title, String info, int width, int height) { - JInternalFrame frame = new JInternalFrame(); + frame = new JInternalFrame(); frame.setContentPane(this); Desktop.addInternalFrame(frame, title, width, height); + frame.setClosable(false); this.title = title; setInfoText(info); @@ -144,7 +147,7 @@ public class WebserviceInfo extends GWebserviceInfo /** * DOCUMENT ME! * - * @param status DOCUMENT ME! + * @param status integer status from state constants */ public void setStatus(int status) { @@ -212,7 +215,7 @@ public class WebserviceInfo extends GWebserviceInfo } /** - * DOCUMENT ME! + * Gui action for cancelling the current job, if possible. * * @param e DOCUMENT ME! */ @@ -221,22 +224,37 @@ public class WebserviceInfo extends GWebserviceInfo if (!serviceIsCancellable) { JOptionPane.showInternalMessageDialog(Desktop.desktop, - "This job cannot be cancelled.", "Cancel job", + "This job cannot be cancelled.\nJust close the window.", "Cancel job", JOptionPane.WARNING_MESSAGE); } else { + frame.setClosable(true); thisService.cancelJob(); } } + public void setResultsReady() + { + frame.setClosable(true); + buttonPanel.remove(cancel); + buttonPanel.add(showResultsNewFrame); + buttonPanel.add(mergeResults); + buttonPanel.setLayout(new GridLayout(2,1,5,5)); + buttonPanel.validate(); + validate(); + } + + class AnimatedPanel extends JPanel implements Runnable { long startTime = 0; + BufferedImage offscreen; public void run() { startTime = System.currentTimeMillis(); + Graphics2D g = null; while (currentStatus < STATE_STOPPED_OK) { @@ -244,70 +262,86 @@ public class WebserviceInfo extends GWebserviceInfo { Thread.sleep(50); - int units = (int) ((System.currentTimeMillis() - startTime) / 10f); + int units = (int) ( (System.currentTimeMillis() - startTime) / + 10f); angle += units; angle %= 360; startTime = System.currentTimeMillis(); - repaint(); - } - catch (Exception ex) - { - } - } - angle = 0; - cancel.setEnabled(false); - } + if (offscreen == null || offscreen.getWidth(this) != getWidth() + || offscreen.getHeight(this) != getHeight()) + { + offscreen = new BufferedImage(getWidth(), getHeight(), + BufferedImage.TYPE_INT_ARGB); + g = (Graphics2D) offscreen.getGraphics(); + } - synchronized public void paintComponent(Graphics g1) - { - Graphics2D g = (Graphics2D) g1; - g.setColor(Color.white); - g.fillRect(0, 0, getWidth(), getHeight()); + g.setColor(Color.white); + g.fillRect(0, 0, getWidth(), getHeight()); - if (image != null) - { - g.rotate(Math.toRadians(angle), 28, 28); - g.drawImage(image, 10, 10, this); - g.rotate(-Math.toRadians(angle), 28, 28); - } + g.setFont(new Font("Arial", Font.BOLD, 12)); + g.setColor(Color.black); - g.setFont(new Font("Arial", Font.BOLD, 12)); - g.setColor(Color.black); + switch (currentStatus) + { + case STATE_QUEUING: + g.drawString(title.concat(" - queuing"), 60, 30); - switch (currentStatus) - { - case STATE_QUEUING: - g.drawString(title.concat(" - queuing"), 60, 30); + break; + + case STATE_RUNNING: + g.drawString(title.concat(" - running"), 60, 30); + + break; - break; + case STATE_STOPPED_OK: + g.drawString(title.concat(" - complete"), 60, 30); - case STATE_RUNNING: - g.drawString(title.concat(" - running"), 60, 30); + break; - break; + case STATE_CANCELLED_OK: + g.drawString(title.concat(" - job cancelled!"), 60, 30); - case STATE_STOPPED_OK: - g.drawString(title.concat(" - complete"), 60, 30); + break; - break; + case STATE_STOPPED_ERROR: + g.drawString(title.concat(" - job error!"), 60, 30); - case STATE_CANCELLED_OK: - g.drawString(title.concat(" - job cancelled!"), 60, 30); + break; - break; + case STATE_STOPPED_SERVERERROR: + g.drawString(title.concat(" - Server Error! (try later)"), + 60, + 30); - case STATE_STOPPED_ERROR: - g.drawString(title.concat(" - job error!"), 60, 30); + break; + } - break; - case STATE_STOPPED_SERVERERROR: - g.drawString(title.concat(" - Server Error! (try later)"), 60, - 30); + if (currentStatus >= STATE_STOPPED_OK) + angle = 0; - break; + if (image != null) + { + g.rotate(Math.toRadians(angle), 28, 28); + g.drawImage(image, 10, 10, this); + g.rotate( -Math.toRadians(angle), 28, 28); + } + + + repaint(); + } + catch (Exception ex) + { + } } + + cancel.setEnabled(false); + } + + public void paintComponent(Graphics g1) + { + g1.drawImage(offscreen, 0,0,this); } } }