/*
* SimpleColorEditor.java
*
* Created on 28 ������ 2006 �., 20:06
*
*/
package datechooser.beans.editor;
import datechooser.beans.editor.descriptor.DescriptionManager;
import java.awt.*;
import java.beans.*;
import java.util.*;
import javax.swing.*;
import javax.swing.colorchooser.ColorSelectionModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* Color editor.<br>
* �������� �����.
* @author Androsov Vadim
* @since 1.0
*/
public class SimpleColorEditor extends VisualEditorCashed
implements ColorSelectionModel {
private Set<ChangeListener> changeListeners;
protected JComponent createEditor() {
changeListeners = new HashSet<ChangeListener>();
JColorChooser editorPane = new JColorChooser(this);
return editorPane;
}
public Color getSelectedColor() {
return (Color) getValue();
}
public void setSelectedColor(Color color) {
setValue(color);
fireStateChange();
}
public void addChangeListener(ChangeListener listener) {
changeListeners.add(listener);
}
public void removeChangeListener(ChangeListener listener) {
changeListeners.remove(listener);
}
public void fireStateChange() {
ChangeEvent e = new ChangeEvent(this);
for (ChangeListener listener : changeListeners) {
listener.stateChanged(e);
}
}
public String getJavaInitializationString() {
return DescriptionManager.describeJava(getValue(), Color.class);
}
public boolean isPaintable() {
return true;
}
public void paintValue(Graphics gfx, Rectangle box) {
Color color = (Color) getValue();
gfx.setColor(color);
gfx.fillRect(2, 2, box.height - 4, box.height - 4);
gfx.setColor(Color.BLACK);
gfx.drawRect(2, 2, box.height - 4, box.height - 4);
gfx.drawString("[" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + "]",
box.height + 2 , box.height - 4);
}
}