View Javadoc
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", // cols
30  			"3dlu,p, 3dlu"); // rows
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  	 * (non-Javadoc)
46  	 * @see siouxsie.desktop.IStatusBar#getComponent()
47  	 */
48  	public JComponent getComponent() {
49  		return builder.getPanel();
50  	}
51  	
52  	/*
53  	 * (non-Javadoc)
54  	 * @see siouxsie.desktop.IStatusBar#setTrailingMessage(java.lang.String)
55  	 */
56  	public void setTrailingMessage(String msg) {
57  		trailingMessage.setText(msg);
58  	}
59  	
60  	/*
61  	 * (non-Javadoc)
62  	 * @see siouxsie.desktop.IStatusBar#setLeadingMessage(java.lang.String)
63  	 */
64  	public void setLeadingMessage(String msg) {
65  		leadingMessage.setText(msg);
66  	}	
67  	
68  	/*
69  	 * (non-Javadoc)
70  	 * @see siouxsie.desktop.IStatusBar#processEnded()
71  	 */
72  	public void processEnded() {
73  		progressBar.setIndeterminate(false);
74  		progressBar.setVisible(false);		
75  	}
76  	
77  	/*
78  	 * (non-Javadoc)
79  	 * @see siouxsie.desktop.IStatusBar#processStarted(boolean)
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  	 * (non-Javadoc)
91  	 * @see siouxsie.desktop.IStatusBar#setProgress(int)
92  	 */
93  	public void setProgress(int progress) {
94  		progressBar.setValue(progress);		
95  	}
96  
97  }