One Way to Select Many (Artifact)
Abstract
The artifact is built around the MultiselectJS library that implements the multi-selection semantics presented in the companion paper. The purpose of this JavaScript library is to help programmers add multi-selection to Web user interfaces with ease. The artifact includes a demo application showcasing the use of the library, documentation of the library API, and a tutorial on how to use the library. The library clearly separates the reusable aspects of multi-selection from the application specific aspects. The latter are collected into an object referred to as the selection geometry. The complex task of implementing a full-fledged multi-selection feature reduces to a considerably simpler task of implementing a selection geometry. The demo application implements several different selection geometries. It supports the claims of the companion paper that the library considerably lessens the task of implementing multi-selection. Following the guidance of the tutorial, users can build their own multi-selection features.
Getting Started
The artifact includes the following:
A demo application built using the MultiselectJS JavaScript library described in the paper. The application allows for experimenting with the selection features described in the paper. It in particular demonstrates how the same selection semantics applies equally to many different selection geometries. The application can be run in a browser, by opening the file
doc/demo/multiselect-demo.html
The applications is tested with Google Chrome 50.0, Safari 9.1, and Firefox 35.0 browsers on OS X (El Capitan). It should work on any modern (in 2016) browser. Some ECMAScript 6 features are used. User-defined OS-wide key bindings may conflict with some of the key bindings (such as with cmd-space) in the demo application.
The MultiselectJS library described in Section 4 in the paper, distributed as one (non-minified) JavaScript file
To use it on a html-page, one imports it as:
<script type="text/javascript" src="multiselect.js"></script>
This defines one global variable
multiselect
. All of the library API are members ofmultiselect
.A tutorial on using MultiselectJS, in doc/tutorial/tutorial.html.
The tutorial gives step-by-step explanations on how to build three different selection features that each uses a different selection geometry.
- The API reference of MultiselectJS, in doc/api_reference/api_reference.html.
- Documentation of the source code of MultiselectJS, in doc/multiselect_library.html. This document is mainly targeted for someone extending or modifying the library itself. It explains design decision and other details about the implementation. The library was developed in literate programming style using Emacs org-mode; the documentation of the source code is generated from literate programming source files (org-files), which are not included.
Software artifact for the ECOOP'16 paper "One Way to Select Many" by Jaakko Järvi and Sean Parent