001    package org.jdesktop.swingx.editors;
002    
003    import java.awt.Color;
004    import java.awt.Component;
005    import java.awt.Graphics;
006    import java.awt.Graphics2D;
007    import java.awt.Paint;
008    import java.awt.Rectangle;
009    import java.beans.PropertyChangeEvent;
010    import java.beans.PropertyChangeListener;
011    import java.beans.PropertyEditorSupport;
012    
013    /**
014     *
015     * @author joshy
016     */
017    public class Paint2PropertyEditor extends PropertyEditorSupport {
018        Paint paint = new Color(0,128,255);
019        PaintPicker picker = new PaintPicker();
020    
021        /** Creates a new instance of Paint2PropertyEditor */
022        public Paint2PropertyEditor() {
023            picker.addPropertyChangeListener("paint",new PropertyChangeListener() {
024                public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
025                    paint = picker.getPaint();
026                    firePropertyChange();
027                }
028            });
029            
030        }
031        
032        public Paint getValue() {
033            return paint;
034        }
035    
036        public void setValue(Object object) {
037            paint = (Paint)object;
038            picker.setPaint(paint);
039            super.setValue(object);
040        }
041    
042           
043        public String getJavaInitializationString() {
044            Paint paint = getValue();
045            //TODO!!!
046            return paint == null ? "null" : 
047                "org.jdesktop.swingx.painter.gradient.LinearGradientPainter.BLACK_STAR";
048        }
049        
050        public void setAsText(String text) throws IllegalArgumentException {
051            // do nothing right now
052        }
053        
054        public String getAsText() {
055            return "PainterText";
056        }
057        
058        public void paintValue(Graphics g, Rectangle box) {
059            Graphics2D g2 = (Graphics2D)g;
060            //picker.setPaint(getValue());
061            g2.setPaint(picker.getDisplayPaint(box));
062            g2.fill(box);
063        }
064        public boolean isPaintable() {
065            return true;
066        }
067        
068    
069        public boolean supportsCustomEditor() {
070            return true;
071        }
072    
073        public Component getCustomEditor() {
074            return picker;
075        }
076        
077    }