1
35
36
39
40
41 import javax.swing.*;
42 import javax.swing.event.*;
43 import javax.swing.text.*;
44 import javax.swing.border.*;
45 import javax.swing.colorchooser.*;
46 import javax.swing.filechooser.*;
47 import javax.accessibility.*;
48
49 import java.awt.*;
50 import java.awt.event.*;
51 import java.beans.*;
52 import java.util.*;
53 import java.io.*;
54 import java.applet.*;
55 import java.net.*;
56
57
64 public class ProgressBarDemo extends DemoModule {
65
66
69 public static void main(String[] args) {
70 ProgressBarDemo demo = new ProgressBarDemo(null);
71 demo.mainImpl();
72 }
73
74
77 public ProgressBarDemo(SwingSet2 swingset) {
78 super(swingset, "ProgressBarDemo", "toolbar/JProgressBar.gif");
81
82 createProgressPanel();
83 }
84
85 javax.swing.Timer timer;
86 Action loadAction;
87 Action stopAction;
88 JProgressBar progressBar;
89 JTextArea progressTextArea;
90
91 public void createProgressPanel() {
92 getDemoPanel().setLayout(new BorderLayout());
93
94 JPanel textWrapper = new JPanel(new BorderLayout());
95 textWrapper.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
96 textWrapper.setAlignmentX(LEFT_ALIGNMENT);
97 progressTextArea = new MyTextArea();
98 progressTextArea.getAccessibleContext().setAccessibleName(getString("ProgressBarDemo.accessible_text_area_name"));
99 progressTextArea.getAccessibleContext().setAccessibleName(getString("ProgressBarDemo.accessible_text_area_description"));
100 textWrapper.add(new JScrollPane(progressTextArea), BorderLayout.CENTER);
101
102 getDemoPanel().add(textWrapper, BorderLayout.CENTER);
103
104 JPanel progressPanel = new JPanel();
105 getDemoPanel().add(progressPanel, BorderLayout.SOUTH);
106
107 progressBar = new JProgressBar(JProgressBar.HORIZONTAL, 0, text.length()) {
108 public Dimension getPreferredSize() {
109 return new Dimension(300, super.getPreferredSize().height);
110 }
111 };
112 progressBar.getAccessibleContext().setAccessibleName(getString("ProgressBarDemo.accessible_text_loading_progress"));
113
114 progressPanel.add(progressBar);
115 progressPanel.add(createLoadButton());
116 progressPanel.add(createStopButton());
117 }
118
119 public JButton createLoadButton() {
120 loadAction = new AbstractAction(getString("ProgressBarDemo.start_button")) {
121 public void actionPerformed(ActionEvent e) {
122 if(timer == null) {
123 loadAction.setEnabled(false);
124 stopAction.setEnabled(true);
125 timer = new javax.swing.Timer(18, createTextLoadAction());
126 timer.start();
127 }
128 }
129 };
130 return createButton(loadAction);
131 }
132
133 public JButton createStopButton() {
134 stopAction = new AbstractAction(getString("ProgressBarDemo.stop_button")) {
135 public void actionPerformed(ActionEvent e) {
136 if(timer != null) {
137 timer.stop();
138 timer = null;
139 }
140 loadAction.setEnabled(true);
141 stopAction.setEnabled(false);
142 }
143 };
144 return createButton(stopAction);
145 }
146
147 public JButton createButton(Action a) {
148 JButton b = new JButton();
149 b.putClientProperty("displayActionText", Boolean.TRUE);
153 b.setAction(a);
154 return b;
155 }
156
157
158 int textLocation = 0;
159
160 String text = getString("ProgressBarDemo.text");
161
162 public Action createTextLoadAction() {
163 return new AbstractAction("text load action") {
164 public void actionPerformed (ActionEvent e) {
165 if(progressBar.getValue() < progressBar.getMaximum()) {
166 progressBar.setValue(progressBar.getValue() + 1);
167 progressTextArea.append(text.substring(textLocation, textLocation+1));
168 textLocation++;
169 } else {
170 if(timer != null) {
171 timer.stop();
172 timer = null;
173 loadAction.setEnabled(true);
174 stopAction.setEnabled(false);
175 }
176 }
177 }
178 };
179 }
180
181
182 class MyTextArea extends JTextArea {
183 public MyTextArea() {
184 super(null, 0, 0);
185 setEditable(false);
186 setText("");
187 }
188
189 public float getAlignmentX () {
190 return LEFT_ALIGNMENT;
191 }
192
193 public float getAlignmentY () {
194 return TOP_ALIGNMENT;
195 }
196 }
197 }
198
199
200