001 package org.trails.component;
002
003 import java.util.List;
004
005 import org.apache.tapestry.annotations.InjectObject;
006 import org.apache.tapestry.annotations.Parameter;
007 import org.apache.tapestry.form.IOptionRenderer;
008 import org.apache.tapestry.form.IPropertySelectionModel;
009 import org.apache.tapestry.form.PropertySelection;
010 import org.apache.tapestry.form.ValidatableFieldSupport;
011 import org.trails.descriptor.IPropertyDescriptor;
012
013 /**
014 * A base class for building trails-aware PropertySelection components
015 * Notice that this class uses the PropertySelection render mechanism,
016 * that means that derivative classes can't make use of HTML templates.
017 */
018 public abstract class AbstractPropertySelection extends PropertySelection
019 {
020
021 @Parameter(defaultValue = "buildSelectionModel()")
022 public abstract IPropertySelectionModel getModel();
023
024 public abstract void setModel(IPropertySelectionModel PropertySelectionModel);
025
026 @InjectObject("service:tapestry.form.ValidatableFieldSupport")
027 public abstract ValidatableFieldSupport getValidatableFieldSupport();
028
029 @Parameter(cache = false, defaultValue = "ognl:@org.apache.tapestry.form.DefaultOptionRenderer@DEFAULT_INSTANCE")
030 public abstract IOptionRenderer getOptionRenderer();
031
032 @Parameter(name = "id", defaultValue = "id")
033 public abstract String getIdParameter();
034
035 @Parameter(required = true)
036 public abstract IPropertyDescriptor getPropertyDescriptor();
037
038 public abstract void setPropertyDescriptor(IPropertyDescriptor PropertyDescriptor);
039
040 @Parameter(defaultValue = "not(propertyDescriptor.required)")
041 public abstract boolean isAllowNone();
042
043 public abstract void setAllowNone(boolean allowNone);
044
045 @Parameter(defaultValue = "literal:" + AbstractPropertySelectionModel.DEFAULT_NONE_LABEL)
046 public abstract String getNoneLabel();
047
048 public abstract void setNoneLabel(String noneLabel);
049
050 @Parameter
051 public abstract List getInstances();
052
053 public abstract void setInstances(List instances);
054
055 @Parameter
056 public abstract Object getValue();
057
058 public abstract void setValue(Object value);
059
060 public abstract IPropertySelectionModel buildSelectionModel();
061
062 }