001 /* 002 * EnumPropertyEditor.java 003 * 004 * Created on August 18, 2006, 10:43 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.beans.PropertyEditorSupport; 013 import java.util.ArrayList; 014 import java.util.EnumSet; 015 import java.util.List; 016 017 /** 018 * 019 * @author joshy 020 */ 021 public class EnumPropertyEditor<E extends Enum<E>> extends PropertyEditorSupport { 022 private Class<E> en; 023 private EnumSet<E> set; 024 025 /** Creates a new instance of EnumPropertyEditor */ 026 public EnumPropertyEditor(Class<E> en) { 027 this.en = en; 028 set = EnumSet.allOf(en); 029 } 030 031 public String[] getTags() { 032 List<String> strs = new ArrayList<String>(); 033 for(E e : set) { 034 strs.add(e.toString()); 035 } 036 return strs.toArray(new String[0]); 037 } 038 039 public String getAsText() { 040 return getValue().toString(); 041 } 042 043 public void setAsText(String text) throws IllegalArgumentException { 044 // u.p("setting as text: " + text); 045 Enum<E> e = Enum.valueOf(en, text); 046 setValue(e); 047 } 048 049 @Override 050 public String getJavaInitializationString() { 051 //org.jdesktop.stuff.Stuff.InsideEnum.VALUE; 052 // the '$' must be converted to '.' to deal with public inner classes 053 return new String(en.getName()+"."+getAsText()).replace("$","."); 054 } 055 056 }