User progammable User Interface components

Driven by the goal of user-programmability, a companion project (ACEkit)[13,14] has built a variety of higher-level, user-extensible UI `widgets' in InterViews. Each of these widgets has associated with it a data-structure (a descriptor) that can be interrogated at execution time to determine parameters, modify presentation options, etc. Several basic InterViews objects are also wrapped with a descriptor (via multiple-inheritance). These descriptors are then used with interactive tools and interpreted glue language to permit simple applications to be extended and customized by the end-user using a combination of visual and procedural mechanisms. Widgets built so far are a general purpose table object (like an extended spreadsheet entity), a graph object (DAG and tree), and several editors.