|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2001 Sun * Microsystems, Inc. All Rights Reserved. */ /* * ConfigProperty.java * * Created on August 17, 2001, 1:48 PM */ package org.netbeans.modules.j2ee.deployment.config.ui; import org.openide.nodes.*; import org.netbeans.modules.j2ee.deployment.plugins.api.*; import org.netbeans.modules.j2ee.deployment.config.ConfigBeanStorage; import javax.enterprise.deploy.spi.DConfigBean; import java.beans.*; import java.util.*; public class ConfigProperty { public static Node.Property getBraindead(BeanDescriptor descrip) { return new Braindead(descrip); } public static Node.Property getProperty(Object bean,PropertyDescriptor property) { if(property instanceof IndexedPropertyDescriptor) return new Complex(bean,(IndexedPropertyDescriptor) property); return new Simple(bean,property); } public static Node.Property getFixedProperty(ConfigBeanStorage cbs, String xpath) { return new Fixed(cbs,xpath); } public static PropertyEditor getEditor(Object bean,PropertyDescriptor property,Class type) { PropertyEditor ed = null; try { ed = (PropertyEditor) property.getPropertyEditorClass().newInstance(); } catch (Exception e) {} if(ed == null) ed = PropertyEditorManager.findEditor(type); if(ed == null) ed = new ConfigPropertyEditor(bean,type); // System.out.println("Created editor " + ed); ed.setValue(bean); // System.out.println("Set value to " + bean); return ed; } private static class Braindead extends PropertySupport.WriteOnly { Object obj = null; Class customizer; public Braindead(BeanDescriptor descrip) { super(descrip.getName(),descrip.getBeanClass(),descrip.getDisplayName(),descrip.getShortDescription()); customizer = descrip.getCustomizerClass(); System.err.println("bean customizer class " + customizer); } public void setValue(Object obj) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException { this.obj = obj; } public PropertyEditor getPropertyEditor() { return new PropertyEditorSupport() { public String getAsText() {return "No text";} public boolean supportsCustomEditor() { return true; } public synchronized java.awt.Component getCustomEditor() { try { Customizer foo = (Customizer) customizer.newInstance(); foo.setObject(obj); return (java.awt.Component) foo; } catch (Exception e) { return null; } } }; } } private static class Simple extends PropertySupport.Reflection { PropertyDescriptor property; Simple(Object bean,PropertyDescriptor property) { super(bean,property.getPropertyType(), property.getReadMethod(),property.getWriteMethod()); this.property = property; // System.err.println("Simple property " + instance); } public PropertyEditor getPropertyEditor() { // System.err.println("Editor for Simple property " + instance); return ConfigProperty.getEditor(instance,property,property.getPropertyType()); } public String getName() { return property.getName(); } public String getDisplayName() { return property.getDisplayName(); } public String getShortDescription() { return property.getShortDescription(); } public Object getValue() throws IllegalArgumentException, IllegalAccessException, java.lang.reflect.InvocationTargetException { Object obj = super.getValue(); if(obj == null) try { obj = property.getPropertyType().newInstance(); setValue(obj); } catch (InstantiationException ie) { // throw new java.lang.reflect.InvocationTargetException(ie); // PENDING should report the error but return gracefully } return obj; } } private static class Complex extends IndexedPropertySupport { IndexedPropertyDescriptor property; Complex(Object bean,IndexedPropertyDescriptor descriptor) { super(bean,descriptor.getPropertyType(),descriptor.getIndexedPropertyType(), descriptor.getReadMethod(),descriptor.getWriteMethod(), descriptor.getIndexedReadMethod(),descriptor.getIndexedWriteMethod()); property = descriptor; // System.err.println("Array property " + instance); } public PropertyEditor getIndexedPropertyEditor() { // System.err.println("Editor for Array property " + instance); return ConfigProperty.getEditor(instance,property,property.getIndexedPropertyType()); } public String getName() { return property.getName(); } public String getDisplayName() { return property.getDisplayName(); } public void setValue(Object obj) throws IllegalArgumentException, IllegalAccessException, java.lang.reflect.InvocationTargetException { if(obj.getClass().isArray()) { Object[] arr = (Object[]) obj; for(int i = 0 ; i < arr.length; i++) if(arr[i] == null) try { arr[i] = property.getIndexedPropertyType().newInstance(); } catch (InstantiationException ie) { // throw new java.lang.reflect.InvocationTargetException(ie);//"Blewed up"); // should return gracefully } } super.setValue(obj); } } // A fixed array where the only editable portion is the bean properties // of an element of the array. private static class Fixed extends IndexedPropertySupport { ConfigBeanStorage cbs; String xpath; Collection objs = new HashSet(); Class cl = DConfigBean.class; // should be able to handle changing arr array Fixed(ConfigBeanStorage cbs, String xpath) { super(cbs.getConfigBean(),(new DConfigBean[0]).getClass(),DConfigBean.class, null,null,null,null); this.cbs = cbs; this.xpath = xpath; String name = xpath.substring(xpath.lastIndexOf("/")+1); setName(name); setDisplayName(name); // System.err.println("Fixed property " + instance); } public PropertyEditor getIndexedPropertyEditor() { // System.err.println("Editor for Fixed property " + instance); // System.out.println("Getting indexed editor"); return ConfigProperty.getEditor(instance,null,cl); } public boolean canIndexedRead() { return true; } public boolean canIndexedWrite() { return false; } public boolean canRead() { return true; } public boolean canWrite() { return false; } public Object getIndexedValue(int index) { // System.out.println("Getting indexed value"); return ((ConfigBeanStorage)objs.toArray()[index]).getConfigBean(); } public Object getValue() { // System.out.println("Getting array value"); Object[] arr = objs.toArray(); DConfigBean[] cb = new DConfigBean[arr.length]; for(int i = 0; i < cb.length; i++) cb[i] = ((ConfigBeanStorage)arr[i]).getConfigBean(); return cb; } public void addElement(ConfigBeanStorage elem) { cl = elem.getConfigBean().getClass(); objs.add(elem); } public void removeElement(ConfigBeanStorage elem) { objs.remove(elem); } } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.