1 package siouxsie.desktop.impl;
2
3 import javax.swing.BorderFactory;
4 import javax.swing.JComponent;
5 import javax.swing.JLabel;
6 import javax.swing.JProgressBar;
7
8 import com.jgoodies.forms.builder.PanelBuilder;
9 import com.jgoodies.forms.layout.CellConstraints;
10 import com.jgoodies.forms.layout.FormLayout;
11
12 import siouxsie.desktop.IStatusBar;
13
14 /**
15 * Status bar using JGoodies form layout.
16 * @author Arnaud Cogoluegnes
17 * @version $Id$
18 */
19 public class FormLayoutStatusBar implements IStatusBar {
20
21 private JLabel leadingMessage = new JLabel();
22 private JLabel trailingMessage = new JLabel();
23 private JProgressBar progressBar = new JProgressBar();
24 private PanelBuilder builder;
25
26
27 public FormLayoutStatusBar() {
28 FormLayout layout = new FormLayout(
29 "3dlu,left:max(pref;100dlu), 0:grow, left:max(pref;100dlu),3dlu,right:max(pref;100dlu),3dlu",
30 "3dlu,p, 3dlu");
31
32 builder = new PanelBuilder(layout);
33
34 CellConstraints cc = new CellConstraints();
35
36
37 builder.add(leadingMessage, cc.xy(2, 2));
38 builder.add(trailingMessage, cc.xy(4, 2));
39 builder.add(progressBar, cc.xy(6, 2));
40 builder.setBorder(BorderFactory.createLoweredBevelBorder());
41
42 }
43
44
45
46
47
48 public JComponent getComponent() {
49 return builder.getPanel();
50 }
51
52
53
54
55
56 public void setTrailingMessage(String msg) {
57 trailingMessage.setText(msg);
58 }
59
60
61
62
63
64 public void setLeadingMessage(String msg) {
65 leadingMessage.setText(msg);
66 }
67
68
69
70
71
72 public void processEnded() {
73 progressBar.setIndeterminate(false);
74 progressBar.setVisible(false);
75 }
76
77
78
79
80
81 public void processStarted(boolean indeterminate) {
82 progressBar.setVisible(true);
83 progressBar.setIndeterminate(indeterminate);
84 if(!indeterminate) {
85 progressBar.setValue(0);
86 }
87 }
88
89
90
91
92
93 public void setProgress(int progress) {
94 progressBar.setValue(progress);
95 }
96
97 }