use of com.manydesigns.elements.fields.Field in project Portofino by ManyDesigns.
the class TableFormBuilder method buildField.
protected Field buildField(PropertyAccessor propertyAccessor, String rowPrefix) {
Field field = null;
String fieldName = propertyAccessor.getName();
for (Map.Entry<String[], SelectionProvider> current : selectionProviders.entrySet()) {
String[] fieldNames = current.getKey();
int index = ArrayUtils.indexOf(fieldNames, fieldName);
if (index >= 0) {
field = buildSelectField(propertyAccessor, null, rowPrefix);
break;
}
}
return buildField(propertyAccessor, field, rowPrefix);
}
use of com.manydesigns.elements.fields.Field in project Portofino by ManyDesigns.
the class FormUtil method fieldsToJson.
/**
* Writes a collection of fields as properties of a JSON object.
* @param js the JSONStringer to write to. Must have a JSON object open for writing.
* @param fields the fields to output
* @throws org.json.JSONException if the JSON can not be generated.
*/
public static void fieldsToJson(JSONStringer js, Collection<Field> fields) throws JSONException {
for (Field field : fields) {
Object value = field.getValue();
if (value instanceof Date) {
value = ((Date) value).getTime();
}
if (value instanceof DateTime) {
value = ((DateTime) value).getMillis();
}
String displayValue = field.getDisplayValue();
String href = field.getHref();
List<String> errors = field.getErrors();
js.key(field.getPropertyAccessor().getName());
JSONWriter json = js.object().key(JSON_VALUE);
if (value instanceof Blob) {
json.object();
Blob blob = (Blob) value;
json.key(JSON_TYPE).value(Blob.class.getName());
json.key("code").value(blob.getCode());
json.key("filename").value(blob.getFilename());
json.key("contentType").value(blob.getContentType());
json.key("size").value(blob.getSize());
json.endObject();
} else {
json.value(value);
}
if (displayValue != null && !ObjectUtils.equals(displayValue, value)) {
json.key("displayValue").value(displayValue);
}
if (href != null) {
json.key("href").value(href);
}
if (!errors.isEmpty()) {
json.key("errors").array();
for (String error : errors) {
json.value(error);
}
json.endArray();
}
json.endObject();
}
}
use of com.manydesigns.elements.fields.Field in project Portofino by ManyDesigns.
the class FormXlsExporter method export.
public void export(OutputStream outputStream) throws IOException, WriteException {
WritableWorkbook workbook;
WorkbookSettings workbookSettings = new WorkbookSettings();
workbookSettings.setUseTemporaryFileDuringWrite(useTemporaryFileDuringWrite);
workbook = Workbook.createWorkbook(outputStream, workbookSettings);
WritableSheet sheet = workbook.createSheet(title, workbook.getNumberOfSheets());
addHeaderToSheet(sheet);
XlsUtil xlsUtil = new XlsUtil();
int i = 1;
for (FieldSet fieldset : form) {
int j = 0;
for (Field field : fieldset.fields()) {
xlsUtil.addFieldToCell(sheet, i, j, field);
j++;
}
i++;
}
workbook.write();
workbook.close();
outputStream.flush();
}
use of com.manydesigns.elements.fields.Field in project Portofino by ManyDesigns.
the class TableFormPdfExporter method setupColumnSizes.
/**
* <p>Returns an array of column sizes (in characters) for the search export.<br>
* By default, sizes are computed comparing the relative sizes of each column,
* consisting of the header and the values produced by the search.</p>
* <p>Users can override this method to compute the sizes using a different algorithm,
* or hard-coding them for a particular CRUD instance.</p>
*/
protected double[] setupColumnSizes() {
double[] headerSizes = new double[form.getColumns().length];
for (int i = 0; i < headerSizes.length; i++) {
TableForm.Column col = form.getColumns()[i];
int length = StringUtils.length(col.getLabel());
headerSizes[i] = length;
}
double[] columnSizes = new double[form.getColumns().length];
for (TableForm.Row row : form.getRows()) {
int i = 0;
for (Field field : row) {
int size = StringUtils.length(field.getStringValue());
double relativeSize = ((double) size) / form.getRows().length;
columnSizes[i++] += relativeSize;
}
}
double totalSize = 0;
for (int i = 0; i < columnSizes.length; i++) {
double effectiveSize = Math.max(columnSizes[i], headerSizes[i]);
columnSizes[i] = effectiveSize;
totalSize += effectiveSize;
}
while (totalSize > 75) {
int maxIndex = 0;
double max = 0;
for (int i = 0; i < columnSizes.length; i++) {
if (columnSizes[i] > max) {
max = columnSizes[i];
maxIndex = i;
}
}
columnSizes[maxIndex] -= 1;
totalSize -= 1;
}
while (totalSize < 70) {
int minIndex = 0;
double min = Double.MAX_VALUE;
for (int i = 0; i < columnSizes.length; i++) {
if (columnSizes[i] < min) {
min = columnSizes[i];
minIndex = i;
}
}
columnSizes[minIndex] += 1;
totalSize += 1;
}
return columnSizes;
}
use of com.manydesigns.elements.fields.Field in project Portofino by ManyDesigns.
the class BooleanFieldHelper method tryToInstantiateField.
public Field tryToInstantiateField(ClassAccessor classAccessor, PropertyAccessor propertyAccessor, Mode mode, String prefix) {
Field result;
Class type = propertyAccessor.getType();
if (type == Boolean.class || type == Boolean.TYPE) {
result = new BooleanField(propertyAccessor, mode, prefix);
} else {
result = null;
}
return result;
}
Aggregations