KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > thinlet > demo > Demo


1 package thinlet.demo;
2
3 import java.awt.*;
4 import java.io.*;
5
6 import thinlet.*;
7
8 /**
9  * Simple demonstration of widgets and events
10  */

11 public class Demo extends Thinlet {
12
13     /**
14      * Loads the xml file
15      */

16     public Demo() throws Exception JavaDoc {
17         add(parse("demo.xml"));
18     }
19     
20     /**
21      * Creates a frame including this thinlet demo
22      */

23     public static void main(String JavaDoc[] args) throws Exception JavaDoc {
24         new FrameLauncher("Demo", new Demo(), 320, 320);
25     }
26     
27     /**
28      * Called if the demo.xml was loaded,
29      * it fills the textarea from a resource file
30      */

31     public void loadText(Object JavaDoc textarea) throws Exception JavaDoc {
32         BufferedReader reader = new BufferedReader(new InputStreamReader(
33             getClass().getResourceAsStream("demodialog.xml")));
34         StringBuffer JavaDoc text = new StringBuffer JavaDoc();
35         for (int c = reader.read(); c != -1; c = reader.read()) {
36             if (((c > 0x1f) && (c < 0x7f)) ||
37                     ((c > 0x9f) && (c < 0xffff)) || (c == '\n')) {
38                 text.append((char) c);
39             }
40             else if (c == '\t') {
41                 text.append(" ");
42             }
43         }
44         reader.close();
45         setString(textarea, "text", text.toString());
46     }
47
48     /**
49      * Updates textarea's editable property depending on a checkbox state
50      */

51     public void changeEditable(boolean editable, Object JavaDoc textarea) {
52         setBoolean(textarea, "editable", editable);
53     }
54
55     /**
56      * Updates textarea's enabled property
57      */

58     public void changeEnabled(boolean enabled, Object JavaDoc textarea) {
59         setBoolean(textarea, "enabled", enabled);
60     }
61
62     Object JavaDoc dialog;
63
64     /**
65      * Shows the modal find dialog, creates only one dialog instance
66      */

67     public void showDialog() throws Exception JavaDoc {
68         if (dialog == null) {
69             dialog = parse("demodialog.xml");
70         }
71         add(dialog);
72     }
73
74     /**
75      * Updates the textarea's selection range,
76      * and add the search string to the history
77      */

78     public void findText(Object JavaDoc combobox, String JavaDoc what,
79             boolean match, boolean down) {
80         closeDialog();
81         if (what.length() == 0) { return; }
82
83         boolean cacheditem = false;
84         for (int i = getCount(combobox) - 1; i >= 0; i--) {
85             String JavaDoc choicetext = getString(getItem(combobox, i), "text");
86             if (what.equals(choicetext)) { cacheditem = true; break; }
87         }
88         if (!cacheditem) {
89             Object JavaDoc choice = create("choice");
90             setString(choice, "text", what);
91             add(combobox, choice);
92         }
93
94         Object JavaDoc textarea = find("textarea");
95         int end = getInteger(textarea, "end");
96         String JavaDoc text = getString(textarea, "text");
97         
98         if (!match) {
99             what = what.toLowerCase();
100             text = text.toLowerCase();
101         }
102
103         int index = text.indexOf(what, down ? end : 0);
104         if (!down && (index != -1) && (index >= end)) { index = -1; }
105         if (index != -1) {
106             setInteger(textarea, "start", index);
107             setInteger(textarea, "end", index + what.length());
108             requestFocus(textarea);
109         }
110         else {
111             getToolkit().beep();
112         }
113     }
114
115     /**
116      * Closes the dialog
117      */

118     public void closeDialog() {
119         remove(dialog);
120     }
121     
122     /**
123      * Insert a new item into the list
124      */

125     public void insertList(Object JavaDoc list) {
126         Object JavaDoc item = create("item");
127         setString(item, "text", "New item");
128         setIcon(item, "icon", getIcon("/icon/library.gif"));
129         add(list, item, 0);
130 // System.out.println("> click " + System.currentTimeMillis());
131
// try { Thread.sleep(5000); } catch (InterruptedException ie) {}
132
}
133
134     /**
135      * Removes the selected items from the list
136      */

137     public void deleteList(Object JavaDoc delete, Object JavaDoc list) {
138         for (int i = getCount(list) - 1; i >= 0; i--) {
139             Object JavaDoc item = getItem(list, i);
140             if (getBoolean(item, "selected")) {
141                 remove(item);
142             }
143         }
144         setBoolean(delete, "enabled", false);
145     }
146     
147     /**
148      * Delete button's state depends on the list selection
149      */

150     public void changeSelection(Object JavaDoc list, Object JavaDoc delete) {
151         setBoolean(delete, "enabled", getSelectedIndex(list) != -1);
152     }
153
154     /**
155      * Clears list selection and updates the selection model
156      */

157     public void setSelection(Object JavaDoc list, String JavaDoc selection, Object JavaDoc delete) {
158         for (int i = getCount(list) - 1; i >= 0; i--) {
159             setBoolean(getItem(list, i), "selected", false);
160         }
161         setChoice(list, "selection", selection);
162         setBoolean(delete, "enabled", false);
163     }
164     
165     /**
166      *
167      */

168     public void sliderChanged(int value, Object JavaDoc spinbox) {
169         setString(spinbox, "text", String.valueOf(value));
170         hsbChanged();
171     }
172     
173     /**
174      *
175      */

176     public void spinboxChanged(String JavaDoc text, Object JavaDoc slider) {
177         try {
178             int value = Integer.parseInt(text);
179             if ((value >= 0) && (value <= 255)) {
180                 setInteger(slider, "value", value);
181                 hsbChanged();
182             }
183         } catch (NumberFormatException JavaDoc nfe) { getToolkit().beep(); }
184     }
185     
186     private Object JavaDoc sl_red, sl_green, sl_blue;
187     private Object JavaDoc tf_hue, tf_saturation, tf_brightness;
188     private Object JavaDoc pb_hue, pb_saturation, pb_brightness;
189     private Object JavaDoc rgb_label;
190     
191     /**
192      *
193      */

194     public void storeWidgets(Object JavaDoc sl_red, Object JavaDoc sl_green, Object JavaDoc sl_blue,
195             Object JavaDoc tf_hue, Object JavaDoc tf_saturation, Object JavaDoc tf_brightness,
196             Object JavaDoc pb_hue, Object JavaDoc pb_saturation, Object JavaDoc pb_brightness, Object JavaDoc rgb_label) {
197         this.sl_red = sl_red;
198         this.sl_green = sl_green;
199         this.sl_blue = sl_blue;
200         this.tf_hue = tf_hue;
201         this.tf_saturation = tf_saturation;
202         this.tf_brightness = tf_brightness;
203         this.pb_hue = pb_hue;
204         this.pb_saturation = pb_saturation;
205         this.pb_brightness = pb_brightness;
206         this.rgb_label = rgb_label;
207     }
208     
209     /**
210      *
211      */

212     private void hsbChanged() {
213         int red = getInteger(sl_red, "value");
214         int green = getInteger(sl_green, "value");
215         int blue = getInteger(sl_blue, "value");
216         
217         float[] hsb = Color.RGBtoHSB(red, green, blue, null);
218
219         setString(tf_hue, "text", String.valueOf(hsb[0]));
220         setString(tf_saturation, "text", String.valueOf(hsb[1]));
221         setString(tf_brightness, "text", String.valueOf(hsb[2]));
222
223         setInteger(pb_hue, "value", (int) (100f * hsb[0]));
224         setInteger(pb_saturation, "value", (int) (100f * hsb[1]));
225         setInteger(pb_brightness, "value", (int) (100f * hsb[2]));
226
227         setColor(rgb_label, "background", new Color(red, green, blue));
228         setColor(rgb_label, "foreground", new Color(255 - red, 255 - green, 255 - blue));
229     }
230 }
Popular Tags