]> git.xonotic.org Git - xonotic/xonotic.git/blob - misc/tools/NexuizDemoRecorder/main/src/main/java/com/nexuiz/demorecorder/ui/swinggui/StatusBar.java
initial checkin from nexuiz svn r8756
[xonotic/xonotic.git] / misc / tools / NexuizDemoRecorder / main / src / main / java / com / nexuiz / demorecorder / ui / swinggui / StatusBar.java
1 package com.nexuiz.demorecorder.ui.swinggui;\r
2 \r
3 import java.awt.BorderLayout;\r
4 import java.awt.Color;\r
5 import java.awt.Component;\r
6 import java.awt.Graphics;\r
7 import java.awt.SystemColor;\r
8 \r
9 import javax.swing.BorderFactory;\r
10 import javax.swing.Icon;\r
11 import javax.swing.JLabel;\r
12 import javax.swing.JPanel;\r
13 \r
14 public class StatusBar extends JPanel {\r
15 \r
16         private static final long serialVersionUID = -1471757496863555741L;\r
17         private JLabel currentActivity = null;\r
18         \r
19         private static final String STATE_IDLE = "Idle";\r
20         private static final String STATE_WORKING = "Working";\r
21 \r
22         public StatusBar() {\r
23                 BorderLayout borderLayout = new BorderLayout(0, 0);\r
24                 setLayout(borderLayout);\r
25                 JPanel rightPanel = new JPanel(new BorderLayout());\r
26                 rightPanel.add(new JLabel(new AngledLinesWindowsCornerIcon()), BorderLayout.SOUTH);\r
27                 rightPanel.setOpaque(false);\r
28 \r
29                 add(rightPanel, BorderLayout.EAST);\r
30 \r
31                 this.currentActivity = new JLabel("Idle");\r
32                 add(this.currentActivity, BorderLayout.WEST);\r
33                 setBackground(SystemColor.control);\r
34                 setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, Color.black));\r
35         }\r
36         \r
37         /**\r
38          * Sets the state/display of the status bar to "idle" (false) or "working" (true).\r
39          * @param state\r
40          */\r
41         public void showState(boolean state) {\r
42                 if (state) {\r
43                         currentActivity.setText(STATE_WORKING);\r
44                 } else {\r
45                         currentActivity.setText(STATE_IDLE);\r
46                 }\r
47         }\r
48 \r
49         private static class AngledLinesWindowsCornerIcon implements Icon {\r
50                 private static final Color WHITE_LINE_COLOR = new Color(255, 255, 255);\r
51 \r
52                 private static final Color GRAY_LINE_COLOR = new Color(172, 168, 153);\r
53                 private static final int WIDTH = 13;\r
54 \r
55                 private static final int HEIGHT = 13;\r
56 \r
57                 public int getIconHeight() {\r
58                         return HEIGHT;\r
59                 }\r
60 \r
61                 public int getIconWidth() {\r
62                         return WIDTH;\r
63                 }\r
64 \r
65                 public void paintIcon(Component c, Graphics g, int x, int y) {\r
66 \r
67                         g.setColor(WHITE_LINE_COLOR);\r
68                         g.drawLine(0, 12, 12, 0);\r
69                         g.drawLine(5, 12, 12, 5);\r
70                         g.drawLine(10, 12, 12, 10);\r
71 \r
72                         g.setColor(GRAY_LINE_COLOR);\r
73                         g.drawLine(1, 12, 12, 1);\r
74                         g.drawLine(2, 12, 12, 2);\r
75                         g.drawLine(3, 12, 12, 3);\r
76 \r
77                         g.drawLine(6, 12, 12, 6);\r
78                         g.drawLine(7, 12, 12, 7);\r
79                         g.drawLine(8, 12, 12, 8);\r
80 \r
81                         g.drawLine(11, 12, 12, 11);\r
82                         g.drawLine(12, 12, 12, 12);\r
83 \r
84                 }\r
85         }\r
86 }\r