001 /*
002 * Painter2PropertyEditor.java
003 *
004 * Created on August 2, 2006, 8:27 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.Color;
013 import java.awt.Component;
014 import java.awt.event.ActionEvent;
015 import java.awt.event.ActionListener;
016 import java.beans.PropertyEditorSupport;
017 import java.io.File;
018 import java.io.PrintWriter;
019 import java.io.StringWriter;
020 import javax.swing.JFileChooser;
021 import javax.swing.JOptionPane;
022 import org.jdesktop.swingx.URLPainter;
023 import org.jdesktop.swingx.painter.MattePainter;
024 import org.jdesktop.swingx.painter.Painter;
025
026 /**
027 *
028 * @author joshy
029 */
030 public class Painter2PropertyEditor extends PropertyEditorSupport {
031 Painter painter = new MattePainter(Color.BLUE);
032 JFileChooser picker;
033
034 void log(String str) {
035 //JOptionPane.showMessageDialog(picker,str);
036 System.out.println(str);
037 }
038 /** Creates a new instance of Painter2PropertyEditor */
039 public Painter2PropertyEditor() {
040 picker = new JFileChooser();
041 picker.setApproveButtonText("Load Painter");
042 picker.setMultiSelectionEnabled(false);
043 picker.setSelectedFile(new File("/Users/joshy/projects/current/AB5k/src/java/ab5k/desklet/"));
044 picker.addActionListener(new ActionListener() {
045 public void actionPerformed(ActionEvent actionEvent) {
046 try {
047 File file = picker.getSelectedFile();
048 painter = new URLPainter(file);
049 //painter = PainterUtil.loadPainter(file);
050 firePropertyChange();
051 log("loaded the painter: " + painter);
052 } catch (Throwable ex) {
053 //System.out.println("error loading the painter: " + ex.getMessage());
054 //ex.printStackTrace();
055 StringWriter wrt = new StringWriter();
056 ex.printStackTrace(new PrintWriter(wrt));
057 JOptionPane.showMessageDialog(picker,ex.getMessage() + " " + wrt.toString());// + painter.getClass().getName());
058 }
059 }
060 });
061 }
062
063 public Painter getValue() {
064 return painter;
065 }
066
067 public void setValue(Object object) {
068 log("setting: " + object);
069 painter = (Painter)object;
070 super.setValue(object);
071 }
072
073 public void setAsText(String text) throws IllegalArgumentException {
074 // u.p("setting as text: " + text);
075 log("setting as text: " + text);
076 }
077
078 public String getAsText() {
079 if(painter instanceof URLPainter) {
080 return ((URLPainter)painter).getURL().toString();
081 }
082 if(painter != null) {
083 return painter.getClass().getName();
084 } else {
085 return "null!!";
086 }
087 }
088
089 public String getJavaInitializationString() {
090 URLPainter painter = (URLPainter)getValue();
091 return painter == null ? "null" :
092 "new org.jdesktop.swingx.painter.FilePainter(\""+
093 painter.getURL().toString()+"\")";
094 }
095
096 public boolean supportsCustomEditor() {
097 return true;
098 }
099
100 public Component getCustomEditor() {
101 return picker;
102 }
103 }