We have a growing number of component types which have some notion of combining "sets" of objects. These include:
- Maps, which may include both static and dynamic layers. Eventually it would be useful to be able to pull layers from other maps.
- Charts, which should be able to pull data from multiple tables, or other charts.
- Calendars, which should be able to take data from multiple sources.
- Button editors, which generate sets of buttons that link to objects in a site.
- Quiz tools
Characteristics of these components include:
- Lists of objects in which order may or may not be important. For example, order may not matter for calendars, but would definitely matter for maps.
- Per-object configuration, specific to the type of component. For example, the specific rows and columns to be rendered in a chart should be configurable per-table.
- Option distiction of one object as editable. For example, it might make sense to set up a calendar with information from numerous sources, but only allow editing of one source in the interest of simplifying the UI.
A common, extensible UI for these components would increase consistency. The easiest way to do this will probably be:
- Base these components off the
bridge.apps.linear.ObjectRecordList class.
- Store per-object configuration as properties in ObjectRecords within the list.
- In the common case, simply link objects that are added to the list, rather than moving or copying.
- Implement an abstract panel that displays a standard JList view of the ObjectRecordList.
- Implement a standard (optional) mechanism for distinging one contained object as (e.g.) editable.
- Existing classes would support drag and drop in this list. These classes could be extended to simplify filtering of candidate drop objects.
|