BeanInfoEmbryo.java [plain text]
package gnu.java.beans;
import java.beans.BeanDescriptor;
import java.beans.BeanInfo;
import java.beans.EventSetDescriptor;
import java.beans.IndexedPropertyDescriptor;
import java.beans.MethodDescriptor;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.Vector;
public class BeanInfoEmbryo {
TreeMap properties = new TreeMap();
Hashtable events = new Hashtable();
Vector methods = new Vector();
BeanDescriptor beanDescriptor;
BeanInfo[] additionalBeanInfo;
java.awt.Image[] im;
String defaultPropertyName;
String defaultEventName;
public BeanInfoEmbryo() {
}
public BeanInfo getBeanInfo() {
int defaultProperty = -1;
int defaultEvent = -1;
PropertyDescriptor[] Aproperties = new PropertyDescriptor[properties.size()];
int i = 0;
Iterator it = properties.entrySet().iterator();
while (it.hasNext()) {
Aproperties[i] = (PropertyDescriptor) (((Map.Entry)it.next()).getValue());
if(defaultPropertyName != null && Aproperties[i].getName().equals(defaultPropertyName)) {
defaultProperty = i;
}
i++;
}
EventSetDescriptor[] Aevents = new EventSetDescriptor[events.size()];
i = 0;
Enumeration e = events.elements();
while (e.hasMoreElements()) {
Aevents[i] = (EventSetDescriptor) e.nextElement();
if(defaultEventName != null && Aevents[i].getName().equals(defaultEventName)) {
defaultEvent = i;
}
i++;
}
MethodDescriptor[] Amethods = new MethodDescriptor[methods.size()];
methods.copyInto(Amethods);
return new ExplicitBeanInfo(beanDescriptor,additionalBeanInfo,Aproperties,defaultProperty,Aevents,defaultEvent,Amethods,im);
}
public void setBeanDescriptor(BeanDescriptor b) {
beanDescriptor = b;
}
public void setAdditionalBeanInfo(BeanInfo[] b) {
additionalBeanInfo = b;
}
public boolean hasProperty(PropertyDescriptor p) {
return properties.get(p.getName()) != null;
}
public void addProperty(PropertyDescriptor p) {
properties.put(p.getName(),p);
}
public void addIndexedProperty(IndexedPropertyDescriptor p) {
properties.put(p.getName(),p);
}
public boolean hasEvent(EventSetDescriptor e) {
return events.get(e.getName()) != null;
}
public void addEvent(EventSetDescriptor e) {
events.put(e.getName(),e);
}
public boolean hasMethod(MethodDescriptor m) {
for(int i=0;i<methods.size();i++) {
Method thisMethod = ((MethodDescriptor)methods.elementAt(i)).getMethod();
if(m.getMethod().getName().equals(thisMethod.getName())
&& Arrays.equals(m.getMethod().getParameterTypes(),
thisMethod.getParameterTypes())) {
return true;
}
}
return false;
}
public void addMethod(MethodDescriptor m) {
methods.addElement(m);
}
public void setDefaultPropertyName(String defaultPropertyName) {
this.defaultPropertyName = defaultPropertyName;
}
public void setDefaultEventName(String defaultEventName) {
this.defaultEventName = defaultEventName;
}
public void setIcons(java.awt.Image[] im) {
this.im = im;
}
}