Glazed Lists 0.9 Release Notes

Glazed Lists 0.9 is a major release of Glazed Lists. This release is smaller, easier to use and more flexible than previous releases. It has a new concurrency model and a stable API.

Overview

Glazed Lists is an application of the Decorator and Observer patterns over Java Lists. It provides transforming views of a source list that respond to changes as they occur. These views can be layered to provide simple and powerful manipulation of the source data.

It includes transforming views for the following tasks:

  • SortedList presents a sorted view of a source list
  • AbstractFilterList presents a filtered list containing a subset of a source list
  • UniqueList presents a unique view of a source list
  • TransformedList presents a starting point for building custom transformations of a source list

    Glazed Lists also provides Swing widgets that automatically update when the data changes. Included widgets are:

  • EventTableModel models a source list for a JTable with sophisticated sorting support
  • EventListModel models a source list for a JList
  • EventComboBoxModel models a source list for a JComboBox.
  • EventSelectionModel models a JTable or JList's selection as a event list.

    Download

  • glazedlists-0.9.jar - a compiled jar file ready for your application's classpath.
  • glazedlists-0.9-source.zip - the 0.9 revision of the source tree. You'll find Ant targets for compiling, jaring, JUnit and generating Javadoc.

    Documentation

  • Tutorial - an out-of-date tutorial is included in the www/tutorial folder of the source release. A tutorial with up-to-date classnames and usage should be available on https://glazedlists.dev.java.net before July 1, 2004.
  • Javadoc API - generated documentation is a useful reference.
  • Migration API - documentation with package migrationkit for migrating from Glazed Lists 0.8.

    Known Issues

    IDDescription
    25CompositeList not thread-safe
    39Sorting clears selection

    License

    Glazed Lists 0.9 is provided with no warranty under a BSD license.

    Migrating from Glazed Lists 0.8

    In order to make Glazed Lists as developer-friendly as possible, we decided to break compatibility between versions 0.8 and 0.9. This change brings a more robust concurrency model, a naming scheme more consistent with J2SE, and fewer public classes.

    A special Javadoc API with the migration support package, ca.odell.glazedlists.migrationkit is available. The migration kit is a set of classes that will not be available in future releases of Glazed Lists. This package is designed to ease developers' transition to Glazed Lists 0.9. The classes in the migration kit have been removed from Glazed Lists because they have been replaced or they are beyond the scope of Glazed Lists.

    Version 0.8Version 0.9
    com.odellengineeringltd.glazedlists ca.odell.glazedlists
    ListTable EventTableModel
    EventJList EventListModel
    Filterable TextFilterable
    Filterator TextFilterator
    CaseInsensitiveFilterList TextFilterList
    TableFormat.getFieldCount() TableFormat.getColumnCount()
    TableFormat.getFieldName() TableFormat.getColumnName()
    TableFormat.getFieldValue() TableFormat.getColumnValue()
    WritableTableFormat.isFieldEditable() WritableTableFormat.isColumnEditable()
    WritableTableFormat.setFieldValue() WritableTableFormat.setColumnValue()
    synchronized(getRootList()) {
        // thread-safe code here
    }
    getReadWriteLock().writeLock().lock();
    try {
        // thread-safe code here
    } finally {
        getReadWriteLock().writeLock().unlock();
    }
    ListChangeEvent ListEvent
    ListChangeBlock.INSERT ListEvent.INSERT
    ListChangeBlock.UPDATE ListEvent.UPDATE
    ListChangeBlock.DELETE ListEvent.DELETE
    ListChangeListener ListEventListener
    ListChangeListener.notifyListChanges(ListEvent listChanges); ListEventListener.listChanged(ListEvent listChanges);
    ListChangeSequence() ListEventAssember(EventList sourceList)
    ListChangeSequence.appendChange(int index, int type) ListEventAssembler.addChange(int type, int index)
    ListChangeSequence.appendChange(int index, int startIndex, int endIndex) ListEventAssembler.addChange(int type, int startIndex, int endIndex)
    ListChangeListenerEventThreadProxy EventThreadProxy
    ListChangeListenerWeakReferenceProxy WeakReferenceProxy
    CharacteristicList TransformationList
    QueryList UniqueList.replaceAll()

    Developers

  • Jesse Wilson
  • Kevin Maltby