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 }