1 19 20 26 27 package org.netbeans.modules.xml.schema.ui.nodes.schema.properties; 28 29 import java.awt.Dialog ; 30 import java.beans.FeatureDescriptor ; 31 import java.beans.PropertyEditor ; 32 import java.beans.PropertyEditorSupport ; 33 import java.util.Collection ; 34 import org.netbeans.modules.xml.schema.model.Enumeration; 35 import org.netbeans.modules.xml.schema.model.SchemaComponentReference; 36 import org.netbeans.modules.xml.schema.model.SimpleRestriction; 37 import org.netbeans.modules.xml.schema.ui.basic.UIUtilities; 38 import org.netbeans.modules.xml.schema.ui.nodes.categorized.customizer.EnumerationCustomizer; 39 import org.openide.DialogDescriptor; 40 import org.openide.DialogDisplayer; 41 import org.openide.explorer.propertysheet.ExPropertyEditor; 42 import org.openide.explorer.propertysheet.PropertyEnv; 43 44 48 public class AdvancedEnumerationProperty extends BaseSchemaProperty 49 { 50 51 private boolean editable; 52 53 public AdvancedEnumerationProperty(SimpleRestriction component, 54 String property, 55 String propDispName, 56 String propDesc, 57 boolean editable) 58 throws NoSuchMethodException 59 { 60 super(component, 61 Collection .class, 62 SimpleRestriction.class.getMethod(BaseSchemaProperty. 63 firstLetterToUpperCase(property, "get"), new Class [0]), 64 null, 65 property,propDispName,propDesc,null); 66 this.editable = editable; 67 } 68 69 public PropertyEditor getPropertyEditor() 70 { 71 return new EnumEditor((SimpleRestriction) getComponent(), 72 getName(), canWrite()); 73 } 74 75 @Override 76 public boolean canWrite() 77 { 78 if(editable) return super.canWrite(); 79 return false; 80 } 81 82 @Override 83 public boolean supportsDefaultValue() 84 { 85 return false; 86 } 87 88 public static class EnumEditor 89 extends PropertyEditorSupport implements ExPropertyEditor 90 { 91 private SimpleRestriction sr; 92 private String name; 93 private boolean editable; 94 public EnumEditor(SimpleRestriction sr, String name, boolean editable) 95 { 96 this.sr = sr; 97 this.name = name; 98 this.editable = editable; 99 } 100 public boolean supportsCustomEditor() 101 { 102 return true; 103 } 104 105 public java.awt.Component getCustomEditor() 106 { 107 DialogDescriptor descriptor = UIUtilities.getCustomizerDialog(new 108 EnumerationCustomizer<SimpleRestriction>( 109 SchemaComponentReference.create(sr)), name,editable); 110 Dialog dlg = DialogDisplayer.getDefault().createDialog(descriptor); 111 return dlg; 112 } 113 114 public void attachEnv(PropertyEnv env) 115 { 116 FeatureDescriptor desc = env.getFeatureDescriptor(); 117 desc.setValue("canEditAsText", Boolean.FALSE); } 119 120 public String getAsText() 121 { 122 StringBuffer retValue = new StringBuffer (); 123 Object obj = super.getValue(); 124 if(obj instanceof Collection ) 125 { 126 Collection enums = (Collection )obj; 127 boolean first = true; 128 for(Object e:enums) 129 { 130 if(e instanceof Enumeration) 131 { 132 if(first) 133 first = false; 134 else 135 retValue.append(", "); 136 retValue.append(((Enumeration)e).getValue()); 137 } 138 } 139 } 140 return retValue.toString(); 141 } 142 143 } 144 } 145 | Popular Tags |