package com.macfaq; import java.beans.*; import java.awt.*; import java.awt.event.*; public class URLWatcherCustomizer extends Panel implements Customizer { // customizer support URLWatcher bean; PropertyChangeSupport pce = new PropertyChangeSupport(this); public void addPropertyChangeListener(PropertyChangeListener pcl) { pce.addPropertyChangeListener(pcl); } public void removePropertyChangeListener(PropertyChangeListener pcl) { pce.removePropertyChangeListener(pcl); } public void setObject(Object bean) { this.bean = (URLWatcher) bean; if (this.bean.getRefreshInterval() > 0) reload.setState(true); interval.setText(String.valueOf(this.bean.getRefreshInterval())); } public URLWatcherCustomizer() { init(); } // user interface Checkbox reload = new Checkbox("Reload URL Automatically", false); TextField interval = new TextField(10); public void init() { reload.addItemListener(new Enabler()); interval.setEnabled(reload.getState()); interval.addTextListener(new TextWatcher()); setLayout(new GridLayout(2, 1)); add(reload); Panel p1 = new Panel(); p1.setLayout(new FlowLayout(FlowLayout.LEFT)); p1.add(new Label("Minutes between reloads: ")); p1.add(interval); add(p1); } class Enabler implements ItemListener { public void itemStateChanged(ItemEvent ie) { if (ie.getStateChange() == ItemEvent.SELECTED) { interval.setEnabled(true); Integer oldValue = new Integer (bean.getRefreshInterval()); Integer newValue; try { newValue = Integer.decode(interval.getText()); bean.setRefreshInterval(newValue.intValue()); pce.firePropertyChange("Text", oldValue , newValue); } catch (NumberFormatException e) { // it was 0 and it's still 0, no change is necessary } } else if (ie.getStateChange() == ItemEvent.DESELECTED) { interval.setEnabled(false); Integer oldValue = new Integer (bean.getRefreshInterval()); Integer newValue = new Integer(0); bean.setRefreshInterval(0); pce.firePropertyChange("Text", oldValue , newValue); } } } class TextWatcher implements TextListener { public void textValueChanged(TextEvent te) { Integer oldValue = new Integer(bean.getRefreshInterval()); Integer newValue; try { newValue = Integer.decode(interval.getText()); } catch (NumberFormatException e) { newValue = new Integer(0); } bean.setRefreshInterval(newValue.intValue()); pce.firePropertyChange("Text", oldValue , newValue); } } public static void main(String[] args) { Frame f = new Frame("URLWatcherCustomizer"); URLWatcherCustomizer u1 = new URLWatcherCustomizer(); u1.init(); f.add("Center", u1); f.setSize(200, 200); f.setLocation(50, 50); f.setVisible(true); } }