Bx Examples Repository

Title: positionalBrowsing

Version: pre-0.1, editing in progress

Type: Sketch.


Basically one-way transformation (lens) between source $X$ and
view $Y$, but with positional browsing of (some visible part of) the view. That
is, $Y$ is generated from $X$, and you may modify $X$ and
thus need to change $Y$. In $Y$, the only thing you may change is
which bit you're looking at, and then you want to view the part of $X$
that that came from.


More or less any reasonable $X$ and $Y$, each of which support
a notion of “editable position”, $xp$ a pointer into $X$,
and similarly $yp$ into $Y$.

So we have $M = (X,xp)$ and $N = (Y,yp)$.

A user may modify X (but not xp?). Some convention needed to agree the
new (default?) position xp after such an update.

A user may modify yp (which changes xp, and hence the Y-view of (X,xp)) but not Y itself.


Given a notion R' of consistency on the actual states, say XR'Y, what we
want informally is that

(X,xp) R (Y, yp) iff XR'Y and xp and yp correspond appropriately.

What appropriately means may vary…

Consistency Restoration

If X changes need to regenerate Y and will need a way to say that the
position shouldn't change.

If either position changes, the other's position should change to
match without modifying the underlying models.

(What about Y? Surely, if Y is a derived view of X, a modification to
either xp or yp should stimulate regeneration of Y from the new

Properties [optional section]

Variants [optional section]


The classic example is the scrollable window Y onto file contents X,
with yp the scrollbar position corresponding to a cursor position xp in

More generally, (suitably restricted instances of)
Model-View-Controller might be usefully regarded in this light.

References [optional section]

For example:

Rentschler, Noorshams, Happe, Reussner, Interactive Visual Analytics
for Efficient Maintenance of Model Transformations
, Proceedings of ICMT13. .bib


Perdita Stevens and James McKinna



Artefacts [optional section]

Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.