package org.hibernate.eclipse.launch;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertySource;
import org.eclipse.ui.views.properties.TextPropertyDescriptor;
import org.hibernate.eclipse.console.model.impl.ExporterFactory;
import org.hibernate.eclipse.console.model.impl.ExporterProperty;
public class ExporterFactoryPropertySource implements IPropertySource {
private final ExporterFactory factory;
public ExporterFactoryPropertySource(ExporterFactory factory) {
this.factory = factory;
}
public Object getEditableValue() {
// TODO Auto-generated method stub
return null;
}
public IPropertyDescriptor[] getPropertyDescriptors() {
List<IPropertyDescriptor> descriptors = new ArrayList<IPropertyDescriptor>();
Map<String, String> values = factory.getProperties();
// get the values we explicitly have
for (String key : values.keySet()) {
ExporterProperty element = factory.getExporterProperty(key);
if(element!=null) {
descriptors.add(new TextPropertyDescriptor(element.getName(), element.getDescription()==null?element.getName():element.getDescription()));
} else {
descriptors.add(new TextPropertyDescriptor(key,key));
}
}
/* removed "default" show of properties since it gets confusing in the ui.
Set set = factory.getDefaultExporterProperties().keySet();
for (Iterator iter = set.iterator(); iter.hasNext();) {
String key = (String) iter.next();
if(!values.containsKey( key )) {
ExporterProperty element = factory.getExporterProperty( key );
if(element!=null) {
descriptors.add(new TextPropertyDescriptor(element.getName(), element.getDescription()==null?element.getName():element.getDescription()));
}
}
}*/
return descriptors.toArray(new IPropertyDescriptor[0]);
}
public Object getPropertyValue(Object id) {
String propertyValue = factory.getPropertyValue( id.toString() );
if(propertyValue==null) {
return ""; //$NON-NLS-1$
} else {
return propertyValue;
}
}
public boolean isPropertySet(Object id) {
return false;
}
public void resetPropertyValue(Object id) {
}
public void setPropertyValue(Object id, Object value) {
factory.setProperty( id.toString(), value.toString() );
}
}