KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > demo > swingset > ProgressBarDemo


1 /*
2  * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * -Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * -Redistribution in binary form must reproduct the above copyright
12  * notice, this list of conditions and the following disclaimer in
13  * the documentation and/or other materials provided with the distribution.
14  *
15  * Neither the name of Sun Microsystems, Inc. or the names of contributors
16  * may be used to endorse or promote products derived from this software
17  * without specific prior written permission.
18  *
19  * This software is provided "AS IS," without a warranty of any kind. ALL
20  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
21  * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
22  * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT
23  * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT
24  * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS
25  * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
26  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
27  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
28  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN
29  * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
30  *
31  * You acknowledge that Software is not designed, licensed or intended for
32  * use in the design, construction, operation or maintenance of any nuclear
33  * facility.
34  */

35
36 /*
37  * @(#)ProgressBarDemo.java 1.7 03/01/23
38  */

39 package demo.swingset;
40
41 import swingwtx.swing.*;
42 import swingwtx.swing.event.*;
43 import swingwtx.swing.text.*;
44 import swingwtx.swing.border.*;
45 import swingwtx.swing.colorchooser.*;
46 import swingwtx.swing.filechooser.*;
47 import javax.accessibility.*;
48
49 import swingwt.awt.*;
50 import swingwt.awt.event.*;
51 import java.beans.*;
52 import java.util.*;
53 import java.io.*;
54 import java.applet.*;
55 import java.net.*;
56
57 /**
58  * JProgressBar Demo
59  *
60  * @version 1.7 01/23/03
61  * @author Jeff Dinkins
62  # @author Peter Korn (accessibility support)
63  */

64 public class ProgressBarDemo extends DemoModule {
65
66     /**
67      * main method allows us to run as a standalone demo.
68      */

69     public static void main(String JavaDoc[] args) {
70     ProgressBarDemo demo = new ProgressBarDemo(null);
71     demo.mainImpl();
72     }
73
74     /**
75      * ProgressBarDemo Constructor
76      */

77     public ProgressBarDemo(SwingSet2 swingset) {
78     // Set the title for this demo, and an icon used to represent this
79
// demo inside the SwingSet2 app.
80
super(swingset, "ProgressBarDemo", "toolbar/JProgressBar.gif");
81
82     createProgressPanel();
83     }
84
85     swingwtx.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 swingwtx.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     // setting the following client property informs the button to show
150
// the action text as it's name. The default is to not show the
151
// action text.
152
b.putClientProperty("displayActionText", Boolean.TRUE);
153     b.setAction(a);
154     return b;
155     }
156
157
158     int textLocation = 0;
159
160     String JavaDoc 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
Popular Tags