new class
[jalview.git] / src / jalview / gui / WebserviceInfo.java
1 package jalview.gui;\r
2 \r
3 import java.awt.*;\r
4 import java.awt.event.*;\r
5 import javax.swing.*;\r
6 import jalview.jbgui.GWebserviceInfo;\r
7 \r
8 public class WebserviceInfo extends GWebserviceInfo\r
9 {\r
10 \r
11   public static final int STATE_QUEUING = 0;\r
12   public static final int STATE_RUNNING = 1;\r
13   public static final int STATE_STOPPED_OK = 2;\r
14   public static final int STATE_STOPPED_ERROR = 3;\r
15   int currentStatus = STATE_QUEUING;\r
16   Image image;\r
17   int angle = 0;\r
18 \r
19   String title="";\r
20 \r
21   public WebserviceInfo(String title, String info)\r
22   {\r
23     init(title, info, 520, 500);\r
24   }\r
25 \r
26   public WebserviceInfo(String title, String info, int width, int height)\r
27   {\r
28     init(title, info, width, height);\r
29   }\r
30 \r
31   void init(String title, String info, int width, int height)\r
32   {\r
33     JInternalFrame frame = new JInternalFrame();\r
34     frame.setContentPane(this);\r
35     Desktop.addInternalFrame(frame, title, width, height);\r
36     frame.setLayer(JLayeredPane.PALETTE_LAYER);\r
37 \r
38 \r
39     this.title = title;\r
40     setInfoText(info);\r
41     java.net.URL url = getClass().getResource("/images/logo.gif");\r
42     image = java.awt.Toolkit.getDefaultToolkit().createImage(url);\r
43     MediaTracker mt = new MediaTracker(this);\r
44     mt.addImage(image, 0);\r
45     try\r
46     {\r
47       mt.waitForID(0);\r
48     }\r
49     catch (Exception ex)\r
50     {}\r
51 \r
52 \r
53     AnimatedPanel ap = new AnimatedPanel();\r
54     titlePanel.add(ap, BorderLayout.CENTER);\r
55     Thread thread = new Thread(ap);\r
56     thread.start();\r
57   }\r
58 \r
59   public void setStatus(int status)\r
60   {\r
61     currentStatus = status;\r
62   }\r
63 \r
64   public String getInfoText()\r
65   {   return infoText.getText();  }\r
66 \r
67   public void setInfoText(String text)\r
68   {   infoText.setText(text);     }\r
69 \r
70   public void appendInfoText(String text)\r
71   {  infoText.append(text);  }\r
72 \r
73   public String getProgressText()\r
74   {   return progressText.getText();  }\r
75 \r
76   public void setProgressText(String text)\r
77   {   progressText.setText(text);   }\r
78 \r
79   public void appendProgressText(String text)\r
80   {   progressText.append(text);  }\r
81 \r
82   protected void cancel_actionPerformed(ActionEvent e)\r
83   {\r
84     JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
85                                           "Cancel not implemented yet!!" ,\r
86                                           "Cancel job"\r
87                                           ,JOptionPane.WARNING_MESSAGE);\r
88   }\r
89 \r
90 \r
91   class AnimatedPanel extends JPanel implements Runnable\r
92   {\r
93     public void run()\r
94     {\r
95       while(currentStatus<STATE_STOPPED_OK)\r
96       try\r
97       {\r
98         Thread.sleep(10);\r
99         angle += 1;\r
100         angle %= 360;\r
101         repaint();\r
102       }\r
103       catch (Exception ex)\r
104       {}\r
105       angle = 0;\r
106       cancel.setEnabled(false);\r
107 \r
108     }\r
109 \r
110     public void paintComponent(Graphics g1)\r
111     {\r
112       Graphics2D g = (Graphics2D) g1;\r
113       g.setColor(Color.white);\r
114       g.fillRect(0, 0, getWidth(), getHeight());\r
115       if (image != null)\r
116       {\r
117         g.rotate(Math.toRadians(angle), 28, 28);\r
118         g.drawImage(image, 10, 10, this);\r
119         g.rotate( -Math.toRadians(angle), 28, 28);\r
120       }\r
121       g.setFont(new Font("Arial", Font.BOLD, 12));\r
122       g.setColor(Color.black);\r
123       switch(currentStatus)\r
124       {\r
125         case STATE_QUEUING:\r
126           g.drawString(title.concat(" - queuing"), 60, 30);\r
127           break;\r
128         case STATE_RUNNING:\r
129           g.drawString(title.concat(" - running"), 60, 30);\r
130           break;\r
131         case STATE_STOPPED_OK:\r
132           g.drawString(title.concat(" - complete"), 60, 30);\r
133           break;\r
134         case STATE_STOPPED_ERROR:\r
135           g.drawString(title.concat(" - error!"), 60, 30);\r
136           break;\r
137       }\r
138 \r
139     }\r
140   }\r
141 }\r