package pt.ist.vaadinframework.data.hints; import pt.ist.vaadinframework.data.HintedProperty.Hint; import com.vaadin.terminal.Sizeable; import com.vaadin.ui.AbstractTextField; import com.vaadin.ui.Field; import com.vaadin.ui.TextArea; public class Size implements Hint { private float height = Sizeable.SIZE_UNDEFINED; private int heightUnits = Sizeable.UNITS_PERCENTAGE; private float width = Sizeable.SIZE_UNDEFINED; private int widthUnits = Sizeable.UNITS_PERCENTAGE; private int columns = -1; private int rows = 1; private int maxLength = -1; public Size() { } private Size(Size copy) { this.height = copy.height; this.heightUnits = copy.heightUnits; this.width = copy.width; this.widthUnits = copy.widthUnits; this.columns = copy.columns; this.rows = copy.rows; this.maxLength = copy.maxLength; } public Size height(float height, int heightUnits) { Size size = new Size(this); size.height = height; size.heightUnits = heightUnits; return size; } public Size width(float width, int widthUnits) { Size size = new Size(this); size.width = width; size.widthUnits = widthUnits; return size; } public Size cols(int columns) { Size size = new Size(this); size.columns = columns; return size; } public Size rows(int rows) { Size size = new Size(this); size.rows = rows; return size; } public Size maxLength(int maxLength) { Size size = new Size(this); size.maxLength = maxLength; return size; } @Override public Field applyHint(Field field) { field.setHeight(height, heightUnits); field.setWidth(width, widthUnits); if (field instanceof AbstractTextField) { ((AbstractTextField) field).setColumns(columns); ((AbstractTextField) field).setMaxLength(maxLength); if (rows > 1) { if (field instanceof TextArea) { ((TextArea) field).setRows(rows); } else { TextArea area = new TextArea(); HintTools.copyConfiguration(field, area); area.setRows(rows); field = area; } } } return field; } @Override public boolean appliesTo(Field field) { return true; } }