001    /*
002     * ImageEditor.java
003     *
004     * Created on July 21, 2006, 1:35 AM
005     *
006     * To change this template, choose Tools | Template Manager
007     * and open the template in the editor.
008     */
009    
010    package org.jdesktop.swingx.editors;
011    
012    import java.awt.Component;
013    import java.awt.Graphics;
014    import java.awt.Image;
015    import java.awt.Rectangle;
016    import java.beans.PropertyChangeEvent;
017    import java.beans.PropertyChangeListener;
018    import java.beans.PropertyEditorSupport;
019    import javax.swing.JButton;
020    
021    /**
022     *
023     * @author joshy
024     */
025    public class ImageEditor extends PropertyEditorSupport {
026        Image image = null;
027        ImagePicker picker = new ImagePicker();
028        /** Creates a new instance of ImageEditor */
029        public ImageEditor() {
030            picker.imageView.addPropertyChangeListener("image",new PropertyChangeListener() {
031                public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
032                    image = picker.imageView.getImage();
033                    firePropertyChange();
034                }
035            });
036        }
037        
038        public Image getValue() {
039            return image;
040        }
041        
042        public void setValue(Object object) {
043            image = (Image)object;
044            super.setValue(image);
045            picker.imageView.setImage(image);
046        }
047    
048        public void setAsText(String text) throws IllegalArgumentException {
049            // do nothing right now
050        }
051        
052        public String getAsText() {
053            return "an Image";
054        }
055    
056        public void paintValue(Graphics graphics, Rectangle r) {
057            graphics.drawImage(image, (int)r.getX(), (int)r.getY(),
058                    (int)r.getWidth(), (int)r.getHeight(), null);   
059        }
060        
061    
062        public boolean isPaintable() {
063            return true;
064        }
065    
066        public boolean supportsCustomEditor() {
067            return true;
068        }
069    
070        public Component getCustomEditor() {
071            return picker;
072        }
073        
074    }