1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package unbbayes.gui;
22
23 import java.awt.BorderLayout;
24 import java.awt.Container;
25 import java.awt.event.ActionEvent;
26 import java.awt.event.ActionListener;
27
28 import javax.swing.BorderFactory;
29 import javax.swing.JButton;
30 import javax.swing.JFrame;
31 import javax.swing.JProgressBar;
32 import javax.swing.border.Border;
33
34 import unbbayes.util.longtask.ILongTaskProgressObserver;
35 import unbbayes.util.longtask.LongTaskProgressChangedEvent;
36
37 public class LongTaskProgressBar implements ILongTaskProgressObserver {
38
39 private JButton cancelButton;
40
41 public JButton getCancelButton() {
42 return cancelButton;
43 }
44
45 private JProgressBar progressBar;
46
47 public JProgressBar getProgressBar() {
48 return progressBar;
49 }
50
51 private JFrame frm;
52
53 private Container content;
54
55 private Thread t;
56
57 public LongTaskProgressBar(boolean showProgressBar) {
58 this("Reading...", showProgressBar);
59 }
60
61 public LongTaskProgressBar(String title, boolean showProgressBar) {
62 frm = new JFrame();
63 frm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
64 cancelButton = new JButton("Cancel");
65 content = frm.getContentPane();
66 content.add(cancelButton);
67 cancelButton.setBounds(100, 35, 100, 25);
68 cancelButton.addActionListener(new CancelActionListener());
69 progressBar = new JProgressBar(0, 10000);
70 progressBar.setValue(0);
71 progressBar.setStringPainted(true);
72 Border border = BorderFactory.createTitledBorder(title);
73 progressBar.setBorder(border);
74 content.add(progressBar, BorderLayout.NORTH);
75 frm.setSize(300, 100);
76 frm.setVisible(showProgressBar);
77 }
78
79 public void setThread(Thread t) {
80 this.t = t;
81 }
82
83 public void setProgressBar(int n) {
84 progressBar.setValue(n);
85 }
86
87 public void hideProgressBar() {
88 frm.setVisible(false);
89 }
90
91 public void showProgressBar() {
92 frm.setVisible(true);
93 }
94
95 public void update(){
96 progressBar.paintImmediately(0, 0, progressBar.getWidth(), progressBar.getHeight());
97 }
98
99 public void update(LongTaskProgressChangedEvent status) {
100 progressBar.setValue(status.getPercentageDone());
101 update();
102 }
103
104
105 protected class CancelActionListener implements ActionListener {
106
107 @SuppressWarnings("deprecation")
108 public void actionPerformed(ActionEvent e) {
109 frm.setVisible(false);
110 frm.dispose();
111 t.stop();
112 }
113 }
114
115 }