/** * Sets the hexadecimal notation for Red, Green, and Blue. This will automatically populate all * the other fields, too. * * @param hex Hexadecimal notation of Red, Green and Blue in the range of 000000-FFFFFF * @throws java.lang.Exception A generic exception if the hexadecimal notation is bad. */ public void setHex(String hex) throws Exception { Color color = new Color(); color.setHex(hex); this.red = color.getRed(); this.green = color.getGreen(); this.blue = color.getBlue(); this.hue = color.getHue(); this.saturation = color.getSaturation(); this.brightness = color.getValue(); tbRed.setText(Integer.toString(this.red)); tbGreen.setText(Integer.toString(this.green)); tbBlue.setText(Integer.toString(this.blue)); tbHue.setText(Integer.toString(this.hue)); tbSaturation.setText(Integer.toString(this.saturation)); tbBrightness.setText(Integer.toString(this.brightness)); tbHexColor.setText(color.getHex()); setPreview(color.getHex()); updateSliders(); }
/** * Fired whenever something in this widget changes. * * <p>Subclasses that override this method must call <tt>super.onChange(sender)</tt> to ensure * that the Widget recieves its events. * * @param sender the widget that has changed. */ public void onChange(Widget sender) { if (sender == tbHexColor) { // Figure out colors // Color class will do bounds check on hex input try { Color color = new Color(); color.setHex(tbHexColor.getText()); tbHue.setText(Integer.toString(color.getHue())); tbSaturation.setText(Integer.toString(color.getSaturation())); tbBrightness.setText(Integer.toString(color.getValue())); tbRed.setText(Integer.toString(color.getRed())); tbGreen.setText(Integer.toString(color.getGreen())); tbBlue.setText(Integer.toString(color.getBlue())); tbHexColor.setText(color.getHex()); setPreview(color.getHex()); } catch (Exception e) { } } if (sender == tbRed || sender == tbGreen || sender == tbBlue) { // Don't allow this value to overflow or underflow try { if (Integer.parseInt(((TextBox) sender).getText()) > 255) { ((TextBox) sender).setText("255"); } if (Integer.parseInt(((TextBox) sender).getText()) < 0) { ((TextBox) sender).setText("0"); } } catch (Exception e) { } red = Integer.parseInt(tbRed.getText()); green = Integer.parseInt(tbGreen.getText()); blue = Integer.parseInt(tbBlue.getText()); hue = Integer.parseInt(tbHue.getText()); saturation = Integer.parseInt(tbSaturation.getText()); brightness = Integer.parseInt(tbBrightness.getText()); // Figure out the colors try { Color color = new Color(); color.setRGB(red, green, blue); tbHue.setText(Integer.toString(color.getHue())); tbSaturation.setText(Integer.toString(color.getSaturation())); tbBrightness.setText(Integer.toString(color.getValue())); tbHexColor.setText(color.getHex()); setPreview(color.getHex()); } catch (Exception e) { } } else if (sender == tbHue || sender == tbSaturation || sender == tbBrightness) { // Don't allow this value to overflow try { if (Integer.parseInt(tbHue.getText()) > 359) { tbHue.setText("359"); } if (Integer.parseInt(tbSaturation.getText()) > 100) { tbSaturation.setText("100"); } if (Integer.parseInt(tbBrightness.getText()) > 100) { tbBrightness.setText("100"); } } catch (Exception e) { } red = Integer.parseInt(tbRed.getText()); green = Integer.parseInt(tbGreen.getText()); blue = Integer.parseInt(tbBlue.getText()); hue = Integer.parseInt(tbHue.getText()); saturation = Integer.parseInt(tbSaturation.getText()); brightness = Integer.parseInt(tbBrightness.getText()); // Figure out colors try { Color color = new Color(); color.setHSV(hue, saturation, brightness); tbRed.setText(Integer.toString(color.getRed())); tbGreen.setText(Integer.toString(color.getGreen())); tbBlue.setText(Integer.toString(color.getBlue())); tbHexColor.setText(color.getHex()); setPreview(color.getHex()); } catch (Exception e) { } } // Let the sliders know something's changed updateSliders(); ChangeEvent.fireNativeEvent(Document.get().createChangeEvent(), this); }