A4 Vertaisarvioitu artikkeli konferenssijulkaisussa
Manipulating GUI Structures Declaratively
Tekijät: Knut Anders Stokke, Mikhail Barash, Jaakko Järvi
Toimittaja: Martin Erwig, Jeff Gray
Konferenssin vakiintunut nimi: ACM SIGPLAN International Conference on Generative Programming
Kustantaja: Association for Computing Machinery
Julkaisuvuosi: 2020
Kokoomateoksen nimi: GPCE 2020: Proceedings of the 19th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences
Aloitussivu: 63
Lopetussivu: 69
ISBN: 978-1-4503-8174-1
DOI: https://doi.org/10.1145/3425898.3426956
Verkko-osoite: https://doi.org/10.1145/3425898.3426956
Rinnakkaistallenteen osoite: https://research.utu.fi/converis/portal/detail/Publication/50581836
GUIs often contain structures that are incidental, not properly manipulatable through well-defined APIs. For example, modifying a list of items in a GUI's model may require extraneous bookkeeping operations in the view, such as adding and removing event handlers, and updating the menu structure. Observing GUIs in practice gives an indication that programmers may find it difficult or tedious to implement complete and convenient sets of operations for manipulating various structures: useful operations for adding, inserting, swapping, or reordering elements are often missing, inconsistent, or limited. This paper introduces a DSL for programming operations that manipulate such incidental structures. The programmer specifies structures via relations between elements, concretely by defining methods that unestablish and establish a relation. This gives the programmer an ability to describe structural transformations via rules that control which relations should hold before and after a rule is applied. The API for structure manipulation is generated from these rules. Our DSL can give an abstract view on ad-hoc structures, making it easier to provide the necessary set of operations for their convenient manipulation.
Ladattava julkaisu This is an electronic reprint of the original article. |