The Selector2 and Painter2 Beans


ColorEvent

package cselector2;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class ColorEvent extends EventObject {
  private Color color;

  public ColorEvent(Object source, Color color) {
    super(source);
    this.color = color;
  }

  public Color getColor() {
    return color;
  }
}

ColorListener

package cselector2;
import java.util.*;

public interface ColorListener extends EventListener {

  public void changeColor(ColorEvent ce);
}

Selector2

package cselector2;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.util.*;

public class Selector2 extends Panel 
implements AdjustmentListener {
  private Color color;
  private Vector listeners;
  private Scrollbar rScrollbar, gScrollbar, bScrollbar;

  public Selector2() {

    // Initialize listeners vector
    listeners = new Vector();

    // Initialize GUI elements
    setLayout(new GridLayout(3, 2, 5, 5));
    rScrollbar = 
      new Scrollbar(Scrollbar.HORIZONTAL, 255, 10, 0, 265);
    add(rScrollbar);
    rScrollbar.addAdjustmentListener(this);
    Label rLabel = new Label("Red", Label.LEFT);
    add(rLabel);
    gScrollbar = 
      new Scrollbar(Scrollbar.HORIZONTAL, 255, 10, 0, 265);
    add(gScrollbar);
    gScrollbar.addAdjustmentListener(this);
    Label gLabel = new Label("Green", Label.LEFT);
    add(gLabel);
    bScrollbar = 
      new Scrollbar(Scrollbar.HORIZONTAL, 255, 10, 0, 265);
    add(bScrollbar);
    bScrollbar.addAdjustmentListener(this);
    Label bLabel = new Label("Blue", Label.LEFT);
    add(bLabel);
  }

  public Insets getInsets() {
    return new Insets(5, 5, 5, 5);
  }

  public Color getColor() {
    return color;
  }

  public void setColor(Color color) {
    this.color = color;
  }

  public void paint(Graphics g) {
    Dimension d = getSize();
    g.drawRect(0, 0, d.width - 1, d.height - 1);
  }

  public void adjustmentValueChanged(AdjustmentEvent ae) {
    Scrollbar source = (Scrollbar)ae.getSource();
    int value = ae.getValue();
    source.setValue(value);
    int r = rScrollbar.getValue();
    int g = gScrollbar.getValue();
    int b = bScrollbar.getValue();
    color = new Color(r, g, b);
    fireColorEvent(new ColorEvent(this, color));
  }

  public void
  addColorListener(ColorListener cl) {
    listeners.addElement(cl);
  }

  public void
  removeColorListener(ColorListener cl) {
    listeners.removeElement(cl);
  }

  public void fireColorEvent(ColorEvent ce) {
    Vector v;
    synchronized(this) {
      v = (Vector)listeners.clone();
    }
    for(int i = 0; i < v.size(); i++) {
      ColorListener cl = (ColorListener)v.elementAt(i);
      cl.changeColor(ce);
    }
  }
}

Painter2

package cselector2;
import java.awt.*;

public class Painter2 extends Canvas implements ColorListener {
  private Color color;

  public Painter2() {
    color = Color.white;
    setSize(50, 50);
  }

  public void paint(Graphics g) {
    Dimension d = getSize();
    int w = d.width;
    int h = d.height;
    g.setColor(color);
    g.fillRect(0, 0, w - 1, h - 1);
    g.setColor(Color.black);
    g.drawRect(0, 0, w - 1, h - 1);
  }

  public void changeColor(ColorEvent ce) {
    this.color = ce.getColor();
    repaint();
  }
}

Selector2BeanInfo

package cselector2;
import java.beans.*;
import java.awt.event.*;
import java.lang.reflect.*;

public class Selector2BeanInfo extends SimpleBeanInfo {

  public PropertyDescriptor[] getPropertyDescriptors() {
    PropertyDescriptor pds[] = {  };
    return pds;
  }

  public EventSetDescriptor[] getEventSetDescriptors() {
    try {
      EventSetDescriptor esd1;
      String mnames[] = { "changeColor" };
      esd1 = new EventSetDescriptor(Selector2.class, 
        "color", ColorListener.class, mnames, 
        "addColorListener", "removeColorListener");
      EventSetDescriptor esd[] = { esd1 };
      return esd;
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }

  public MethodDescriptor[] getMethodDescriptors() {
    MethodDescriptor mds[] = {  };
    return mds;
  }
}

Painter2BeanInfo

package cselector2;
import java.beans.*;
import java.awt.event.*;
import java.lang.reflect.*;

public class Painter2BeanInfo extends SimpleBeanInfo {

  public PropertyDescriptor[] getPropertyDescriptors() {
    PropertyDescriptor pds[] = {  };
    return pds;
  }

  public EventSetDescriptor[] getEventSetDescriptors() {
    EventSetDescriptor esds[] = {  };
    return esds;
  }

  public MethodDescriptor[] getMethodDescriptors() {
    try {
      Class c = Painter2.class;
      Class pTypes[] = new Class[1];
      pTypes[0] = ColorEvent.class;
      Method method1 = c.getMethod("changeColor", pTypes);
      ParameterDescriptor pds[] = new ParameterDescriptor[1];
      pds[0] = new ParameterDescriptor();
      MethodDescriptor md1 = new MethodDescriptor(method1, pds);
      MethodDescriptor mds[] = { md1 };
      return mds;
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
}

Previous | Next | Contents