Search in sources :

Example 11 with Field

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);
}
Also used : Field(com.manydesigns.elements.fields.Field) SelectField(com.manydesigns.elements.fields.SelectField) SelectionProvider(com.manydesigns.elements.options.SelectionProvider)

Example 12 with Field

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();
    }
}
Also used : JSONWriter(org.json.JSONWriter) TextField(com.manydesigns.elements.fields.TextField) Field(com.manydesigns.elements.fields.Field) Blob(com.manydesigns.elements.blobs.Blob) JSONObject(org.json.JSONObject) Date(java.util.Date) DateTime(org.joda.time.DateTime)

Example 13 with Field

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();
}
Also used : Field(com.manydesigns.elements.fields.Field) FieldSet(com.manydesigns.elements.forms.FieldSet) WorkbookSettings(jxl.WorkbookSettings)

Example 14 with Field

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;
}
Also used : Field(com.manydesigns.elements.fields.Field) TableForm(com.manydesigns.elements.forms.TableForm)

Example 15 with Field

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;
}
Also used : SearchField(com.manydesigns.elements.fields.search.SearchField) Field(com.manydesigns.elements.fields.Field) BooleanField(com.manydesigns.elements.fields.BooleanField) BooleanSearchField(com.manydesigns.elements.fields.search.BooleanSearchField) BooleanField(com.manydesigns.elements.fields.BooleanField)

Aggregations

Field (com.manydesigns.elements.fields.Field)17 SelectField (com.manydesigns.elements.fields.SelectField)5 SelectionProvider (com.manydesigns.elements.options.SelectionProvider)4 FieldSet (com.manydesigns.elements.forms.FieldSet)3 PropertyAccessor (com.manydesigns.elements.reflection.PropertyAccessor)3 Blob (com.manydesigns.elements.blobs.Blob)2 TableForm (com.manydesigns.elements.forms.TableForm)2 XmlBuffer (com.manydesigns.elements.xml.XmlBuffer)2 FileBlob (com.manydesigns.elements.annotations.FileBlob)1 HierarchicalBlobManager (com.manydesigns.elements.blobs.HierarchicalBlobManager)1 AbstractBlobField (com.manydesigns.elements.fields.AbstractBlobField)1 BooleanField (com.manydesigns.elements.fields.BooleanField)1 FileBlobField (com.manydesigns.elements.fields.FileBlobField)1 TextField (com.manydesigns.elements.fields.TextField)1 BooleanSearchField (com.manydesigns.elements.fields.search.BooleanSearchField)1 SearchField (com.manydesigns.elements.fields.search.SearchField)1 Form (com.manydesigns.elements.forms.Form)1 FormBuilder (com.manydesigns.elements.forms.FormBuilder)1 SelectionModel (com.manydesigns.elements.options.SelectionModel)1 ClassAccessor (com.manydesigns.elements.reflection.ClassAccessor)1