X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FWebserviceInfo.java;h=7c5c5e3c1e3daf6798e8df63309936e7caefa98b;hb=3bdd4947c87108581abe34d05c878ee110b60f72;hp=a26007262dbdf4ff745be8dfcb2c4024ed9ff53f;hpb=9b9afd73c1bad3a4a098f3bc3185cf9315a9b1a8;p=jalview.git diff --git a/src/jalview/gui/WebserviceInfo.java b/src/jalview/gui/WebserviceInfo.java index a260072..7c5c5e3 100755 --- a/src/jalview/gui/WebserviceInfo.java +++ b/src/jalview/gui/WebserviceInfo.java @@ -22,6 +22,7 @@ import jalview.jbgui.*; import java.awt.*; import java.awt.event.*; +import java.awt.image.*; import javax.swing.*; @@ -233,10 +234,12 @@ public class WebserviceInfo extends GWebserviceInfo 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 +247,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_RUNNING: - g.drawString(title.concat(" - running"), 60, 30); + case STATE_STOPPED_OK: + g.drawString(title.concat(" - complete"), 60, 30); - break; + break; - case STATE_STOPPED_OK: - g.drawString(title.concat(" - complete"), 60, 30); + case STATE_CANCELLED_OK: + g.drawString(title.concat(" - job cancelled!"), 60, 30); - break; + break; - case STATE_CANCELLED_OK: - g.drawString(title.concat(" - job cancelled!"), 60, 30); + case STATE_STOPPED_ERROR: + g.drawString(title.concat(" - job error!"), 60, 30); - break; + break; - case STATE_STOPPED_ERROR: - g.drawString(title.concat(" - job error!"), 60, 30); + case STATE_STOPPED_SERVERERROR: + g.drawString(title.concat(" - Server Error! (try later)"), + 60, + 30); - break; + break; + } - case STATE_STOPPED_SERVERERROR: - g.drawString(title.concat(" - Server Error! (try later)"), 60, - 30); - break; + if (currentStatus >= STATE_STOPPED_OK) + angle = 0; + + 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); } } }