001    package org.jdesktop.swingx.editors;
002    
003    import java.awt.Component;
004    import java.awt.Graphics;
005    import java.awt.Image;
006    import java.awt.Rectangle;
007    import java.beans.PropertyChangeEvent;
008    import java.beans.PropertyChangeListener;
009    import java.beans.PropertyEditorSupport;
010    
011    /**
012     *
013     * @author joshy
014     */
015    public class ImageURLEditor extends PropertyEditorSupport {
016        Image image = null;
017        String imageURL = null;
018        ImagePicker picker = new ImagePicker();
019        /** Creates a new instance of ImageEditor */
020        public ImageURLEditor() {
021            picker.imageView.addPropertyChangeListener("image",new PropertyChangeListener() {
022                public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
023                    image = picker.imageView.getImage();
024                    if(picker.imageView.getImageURL() != null) {
025                        imageURL = picker.imageView.getImageURL().toString();
026                    }
027                    firePropertyChange();
028                }
029            });
030        }
031        
032        public String getValue() {
033            return imageURL;
034        }
035        
036        public void setValue(Object object) {
037            imageURL = (String)object;
038            super.setValue(imageURL);
039            picker.imageView.setImage(image);
040        }
041        
042        public void setAsText(String text) throws IllegalArgumentException {
043            // do nothing right now
044        }
045        
046        public String getAsText() {
047            return imageURL;
048        }
049        
050        public void paintValue(Graphics graphics, Rectangle r) {
051            //graphics.drawImage(image, (int)r.getX(), (int)r.getY(),
052            //        (int)r.getWidth(), (int)r.getHeight(), null);
053        }
054        
055        
056        public boolean isPaintable() {
057            return false;
058        }
059        
060        public boolean supportsCustomEditor() {
061            return true;
062        }
063        
064        public Component getCustomEditor() {
065            return picker;
066        }
067        
068    }