1 package thinlet.demo; 2 3 import java.awt.*; 4 import java.io.*; 5 6 import thinlet.*; 7 8 11 public class Demo extends Thinlet { 12 13 16 public Demo() throws Exception { 17 add(parse("demo.xml")); 18 } 19 20 23 public static void main(String [] args) throws Exception { 24 new FrameLauncher("Demo", new Demo(), 320, 320); 25 } 26 27 31 public void loadText(Object textarea) throws Exception { 32 BufferedReader reader = new BufferedReader(new InputStreamReader( 33 getClass().getResourceAsStream("demodialog.xml"))); 34 StringBuffer text = new StringBuffer (); 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 51 public void changeEditable(boolean editable, Object textarea) { 52 setBoolean(textarea, "editable", editable); 53 } 54 55 58 public void changeEnabled(boolean enabled, Object textarea) { 59 setBoolean(textarea, "enabled", enabled); 60 } 61 62 Object dialog; 63 64 67 public void showDialog() throws Exception { 68 if (dialog == null) { 69 dialog = parse("demodialog.xml"); 70 } 71 add(dialog); 72 } 73 74 78 public void findText(Object combobox, String 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 choicetext = getString(getItem(combobox, i), "text"); 86 if (what.equals(choicetext)) { cacheditem = true; break; } 87 } 88 if (!cacheditem) { 89 Object choice = create("choice"); 90 setString(choice, "text", what); 91 add(combobox, choice); 92 } 93 94 Object textarea = find("textarea"); 95 int end = getInteger(textarea, "end"); 96 String 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 118 public void closeDialog() { 119 remove(dialog); 120 } 121 122 125 public void insertList(Object list) { 126 Object item = create("item"); 127 setString(item, "text", "New item"); 128 setIcon(item, "icon", getIcon("/icon/library.gif")); 129 add(list, item, 0); 130 } 133 134 137 public void deleteList(Object delete, Object list) { 138 for (int i = getCount(list) - 1; i >= 0; i--) { 139 Object item = getItem(list, i); 140 if (getBoolean(item, "selected")) { 141 remove(item); 142 } 143 } 144 setBoolean(delete, "enabled", false); 145 } 146 147 150 public void changeSelection(Object list, Object delete) { 151 setBoolean(delete, "enabled", getSelectedIndex(list) != -1); 152 } 153 154 157 public void setSelection(Object list, String selection, Object 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 168 public void sliderChanged(int value, Object spinbox) { 169 setString(spinbox, "text", String.valueOf(value)); 170 hsbChanged(); 171 } 172 173 176 public void spinboxChanged(String text, Object 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 nfe) { getToolkit().beep(); } 184 } 185 186 private Object sl_red, sl_green, sl_blue; 187 private Object tf_hue, tf_saturation, tf_brightness; 188 private Object pb_hue, pb_saturation, pb_brightness; 189 private Object rgb_label; 190 191 194 public void storeWidgets(Object sl_red, Object sl_green, Object sl_blue, 195 Object tf_hue, Object tf_saturation, Object tf_brightness, 196 Object pb_hue, Object pb_saturation, Object pb_brightness, Object 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 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 |