package com.tibco.as.spacebar.ui.adapter; import java.lang.reflect.Method; import java.util.List; import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.eclipse.ui.views.properties.IPropertySource; import org.eclipse.ui.views.properties.PropertyDescriptor; import com.tibco.as.util.Property; import com.tibco.as.space.SpaceDef; public class SpacePropertyGroup implements IPropertySource { private SpaceDef spaceDef; private List<Property> properties; public SpacePropertyGroup(SpaceDef spaceDef, List<Property> properties) { this.spaceDef = spaceDef; this.properties = properties; } private Method getReadMethod(String propertyName) throws SecurityException, NoSuchMethodException { try { return SpaceDef.class.getMethod("is" + propertyName); } catch (NoSuchMethodException e) { return SpaceDef.class.getMethod("get" + propertyName); } } @Override public IPropertyDescriptor[] getPropertyDescriptors() { IPropertyDescriptor[] descriptors = new IPropertyDescriptor[properties .size()]; for (int index = 0; index < descriptors.length; index++) { Property property = properties.get(index); descriptors[index] = new PropertyDescriptor(property.getId(), property.getDisplayName().getValue()); } return descriptors; } @Override public Object getPropertyValue(Object id) { try { return getReadMethod((String) id).invoke(spaceDef); } catch (Exception e) { return null; } } @Override public Object getEditableValue() { return null; } @Override public boolean isPropertySet(Object id) { return false; } @Override public void resetPropertyValue(Object id) { } @Override public void setPropertyValue(Object id, Object value) { } }