+package jalview.gui;\r
+\r
+import java.awt.*;\r
+import java.awt.event.*;\r
+import javax.swing.*;\r
+import jalview.jbgui.GWebserviceInfo;\r
+\r
+public class WebserviceInfo extends GWebserviceInfo\r
+{\r
+\r
+ public static final int STATE_QUEUING = 0;\r
+ public static final int STATE_RUNNING = 1;\r
+ public static final int STATE_STOPPED_OK = 2;\r
+ public static final int STATE_STOPPED_ERROR = 3;\r
+ int currentStatus = STATE_QUEUING;\r
+ Image image;\r
+ int angle = 0;\r
+\r
+ String title="";\r
+\r
+ public WebserviceInfo(String title, String info)\r
+ {\r
+ init(title, info, 520, 500);\r
+ }\r
+\r
+ public WebserviceInfo(String title, String info, int width, int height)\r
+ {\r
+ init(title, info, width, height);\r
+ }\r
+\r
+ void init(String title, String info, int width, int height)\r
+ {\r
+ JInternalFrame frame = new JInternalFrame();\r
+ frame.setContentPane(this);\r
+ Desktop.addInternalFrame(frame, title, width, height);\r
+ frame.setLayer(JLayeredPane.PALETTE_LAYER);\r
+\r
+\r
+ this.title = title;\r
+ setInfoText(info);\r
+ java.net.URL url = getClass().getResource("/images/logo.gif");\r
+ image = java.awt.Toolkit.getDefaultToolkit().createImage(url);\r
+ MediaTracker mt = new MediaTracker(this);\r
+ mt.addImage(image, 0);\r
+ try\r
+ {\r
+ mt.waitForID(0);\r
+ }\r
+ catch (Exception ex)\r
+ {}\r
+\r
+\r
+ AnimatedPanel ap = new AnimatedPanel();\r
+ titlePanel.add(ap, BorderLayout.CENTER);\r
+ Thread thread = new Thread(ap);\r
+ thread.start();\r
+ }\r
+\r
+ public void setStatus(int status)\r
+ {\r
+ currentStatus = status;\r
+ }\r
+\r
+ public String getInfoText()\r
+ { return infoText.getText(); }\r
+\r
+ public void setInfoText(String text)\r
+ { infoText.setText(text); }\r
+\r
+ public void appendInfoText(String text)\r
+ { infoText.append(text); }\r
+\r
+ public String getProgressText()\r
+ { return progressText.getText(); }\r
+\r
+ public void setProgressText(String text)\r
+ { progressText.setText(text); }\r
+\r
+ public void appendProgressText(String text)\r
+ { progressText.append(text); }\r
+\r
+ protected void cancel_actionPerformed(ActionEvent e)\r
+ {\r
+ JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
+ "Cancel not implemented yet!!" ,\r
+ "Cancel job"\r
+ ,JOptionPane.WARNING_MESSAGE);\r
+ }\r
+\r
+\r
+ class AnimatedPanel extends JPanel implements Runnable\r
+ {\r
+ public void run()\r
+ {\r
+ while(currentStatus<STATE_STOPPED_OK)\r
+ try\r
+ {\r
+ Thread.sleep(10);\r
+ angle += 1;\r
+ angle %= 360;\r
+ repaint();\r
+ }\r
+ catch (Exception ex)\r
+ {}\r
+ angle = 0;\r
+ cancel.setEnabled(false);\r
+\r
+ }\r
+\r
+ public void paintComponent(Graphics g1)\r
+ {\r
+ Graphics2D g = (Graphics2D) g1;\r
+ g.setColor(Color.white);\r
+ g.fillRect(0, 0, getWidth(), getHeight());\r
+ if (image != null)\r
+ {\r
+ g.rotate(Math.toRadians(angle), 28, 28);\r
+ g.drawImage(image, 10, 10, this);\r
+ g.rotate( -Math.toRadians(angle), 28, 28);\r
+ }\r
+ g.setFont(new Font("Arial", Font.BOLD, 12));\r
+ g.setColor(Color.black);\r
+ switch(currentStatus)\r
+ {\r
+ case STATE_QUEUING:\r
+ g.drawString(title.concat(" - queuing"), 60, 30);\r
+ break;\r
+ case STATE_RUNNING:\r
+ g.drawString(title.concat(" - running"), 60, 30);\r
+ break;\r
+ case STATE_STOPPED_OK:\r
+ g.drawString(title.concat(" - complete"), 60, 30);\r
+ break;\r
+ case STATE_STOPPED_ERROR:\r
+ g.drawString(title.concat(" - error!"), 60, 30);\r
+ break;\r
+ }\r
+\r
+ }\r
+ }\r
+}\r