String namespace = StringUtils.substringBefore(getElement().getTag(), ":") + ":";
// "width"
Property widthProperty;
{
ExpressionAccessor expressionAccessor = new CellExpressionAccessor(namespace, "width");
GenericPropertyDescription propertyDescription =
new GenericPropertyDescription(null, "width", String.class, expressionAccessor);
propertyDescription.setEditor(StringPropertyEditor.INSTANCE);
propertyDescription.setConverter(StringConverter.INSTANCE);
widthProperty = new GenericPropertyImpl(widget, propertyDescription);
}
// "height"
Property heightProperty;
{
ExpressionAccessor expressionAccessor = new CellExpressionAccessor(namespace, "height");
GenericPropertyDescription propertyDescription =
new GenericPropertyDescription(null, "height", String.class, expressionAccessor);
propertyDescription.setEditor(StringPropertyEditor.INSTANCE);
propertyDescription.setConverter(StringConverter.INSTANCE);
heightProperty = new GenericPropertyImpl(widget, propertyDescription);
}
// "horizontalAlignment"
Property horizontalAlignmentProperty;
{
StaticFieldPropertyEditor propertyEditor = new StaticFieldPropertyEditor();
Class<?> hasHorizontalAlignmentClass =
editorLoader.loadClass("com.google.gwt.user.client.ui.HasHorizontalAlignment");
propertyEditor.configure(hasHorizontalAlignmentClass, new String[]{
"ALIGN_LEFT",
"ALIGN_CENTER",
"ALIGN_RIGHT"});
Object defaultValue =
ReflectionUtils.getFieldObject(hasHorizontalAlignmentClass, "ALIGN_LEFT");
// create property
ExpressionAccessor expressionAccessor =
new CellExpressionAccessor(namespace, "horizontalAlignment");
GenericPropertyDescription propertyDescription =
new GenericPropertyDescription(null,
"horizontalAlignment",
String.class,
expressionAccessor);
propertyDescription.setEditor(propertyEditor);
propertyDescription.setDefaultValue(defaultValue);
horizontalAlignmentProperty = new GenericPropertyImpl(widget, propertyDescription);
}
// "verticalAlignment"
Property verticalAlignmentProperty;
{
StaticFieldPropertyEditor propertyEditor = new StaticFieldPropertyEditor();
Class<?> hasVerticalAlignmentClass =
editorLoader.loadClass("com.google.gwt.user.client.ui.HasVerticalAlignment");
propertyEditor.configure(hasVerticalAlignmentClass, new String[]{
"ALIGN_TOP",
"ALIGN_MIDDLE",
"ALIGN_BOTTOM"});
Object defaultValue =
ReflectionUtils.getFieldObject(hasVerticalAlignmentClass, "ALIGN_TOP");
// create property
ExpressionAccessor expressionAccessor =
new CellExpressionAccessor(namespace, "verticalAlignment");
GenericPropertyDescription propertyDescription =
new GenericPropertyDescription(null,
"verticalAlignment",
String.class,
expressionAccessor);
propertyDescription.setEditor(propertyEditor);
propertyDescription.setDefaultValue(defaultValue);
verticalAlignmentProperty = new GenericPropertyImpl(widget, propertyDescription);
}
// create complex "Cell" property
ComplexProperty cellProperty = new ComplexProperty("Cell", "(cell properties)");
cellProperty.setCategory(PropertyCategory.system(7));