Skip to content
This repository has been archived by the owner on Mar 27, 2024. It is now read-only.

Grid Programming Guide

Tommi S.E. Laukkanen edited this page Aug 31, 2014 · 6 revisions

This guide describes how to use Grid class to program advanced data grids supporting filtering and formatting with minimal amount of boilerplate code.

Field Descriptors

The basis for iewing data in both Grid and ValidatingEditor are Items containing Properties and respective list of FieldDescriptors. The field descriptors define how each property are viewed and edited. Easiest way of defining field descriptors for Java beans is to use FieldSetDescriptor:

final FieldSetDescriptor feedbackFieldSetDescriptor = new FieldSetDescriptor(Feedback.class);
feedbackFieldSetDescriptor.setVisibleFieldIds(new String[]{
   "title", "description", "emailAddress", "firstName", "lastName", "organizationName", "organizationSize"
   });
FieldSetDescriptorRegister.registerFieldSetDescriptor("feedback", feedbackFieldSetDescriptor);

Alternatively FieldDescriptors can be defined explicitely:

SiteFields.add(Company.class, new FieldDescriptor("maxFailedLoginCount", "Max Failed Logins",
    TextField.class, new StringToIntegerConverter(), 50, null, Integer.class, null,
    false, true, false).addValidator(new IntegerRangeValidator("Invalid value", 1, 10)));

Filters

Describing filters is similar to fields:

final List<FilterDescriptor> filterDefinitions = new ArrayList<FilterDescriptor>();
filterDefinitions.add(new FilterDescriptor("companyName", "companyName", "Company Name", new TextField(), 101, "=",
       String.class, ""));

Container Properties

Entity container properties can be initialized using field descriptors as well:

entityContainer = new EntityContainer<Company>(entityManager, true, false, false, Company.class, 1000,
       new String[] { "companyName" },
       new boolean[] { false }, "companyId");
for (final FieldDescriptor fieldDefinition : fieldDefinitions) {
       entityContainer.addContainerProperty(fieldDefinition.getId(), fieldDefinition.getValueType(), 
       fieldDefinition.getDefaultValue(), fieldDefinition.isReadOnly(), fieldDefinition.isSortable());
}

Initializing Grid

The Grid is initialized as follows:

final List<FieldDescriptor> fieldDefinitions = SiteFields.getFieldDescriptors(Company.class);

final Table table = new Table();
entityGrid = new Grid(table, entityContainer);
entityGrid.setFields(fieldDefinitions);
entityGrid.setFilters(filterDefinitions);

The selected item in Grid can be accessed using getSelectedItemId method:

final Company entity = entityContainer.getEntity(entityGrid.getSelectedItemId());

Examples

Example grid usage: