From 2b1c9370b8c8d868706cf3f7a5a716bd46f2aa87 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sun, 15 Oct 2017 00:55:06 +0200 Subject: [PATCH] Navigator: analysis continued.... --- wiki/renderengine.html | 19 +++++- wiki/thinkPad.ichthyo.mm | 130 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 2 deletions(-) diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 19247baef..bb513c621 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -4167,7 +4167,7 @@ The UI-Bus offers a dedicated API to direct ~MutationMessages towards {{{Tangibl In the case at hand, the basic building block of the Lumiera UI, the {{{Tangible}}} offers this interface and thus the ability to construct a concrete TreeMutator, which in turn is bound to the internals of the actual UI-Element in question. Together this allows for a generic implementation of MutationMessage handling, where the designated UI-Element is reshaped by applying a concrete diff sequence embedded in the message with the help of a {{{DiffApplicator<DiffMutable>}}}, based on the TreeMutator exposed. -
+
//Service to navigate through the UI as generic structure.//
 The Navigator is a component maintained by the InteractionDirector, and the actual implementation is backed by several facilities of the GuiTopLevel. It serves as foundation to treat the UI as a topological network of abstracted locations, represented as [[UI-Coordinates|UICoord]]. This design, together with the UI-Bus helps to reduce coupling within the UI implementation, since it enables to //get somewhere// and reach //some place// -- without the necessity to rely on concrete widget implementation structure.
 
@@ -4181,8 +4181,23 @@ In order to build a navigation facility, we need to...
 * follow a path
 ** which means to constitute a location
 ** and to discover child nodes at that location
-* and we want to extend (maybe also prune) the collection of children
+* and we might want to extend (maybe also prune) the collection of children
 
+!!!Use cases
+In the current situation ({{red{10/2017}}}), before engaging into the actual implementation, we're able to identify two distinct use cases
+;View [[specification|GuiComponentView]]
+:locate a view based on a preconfigured placement
+:* either to allocate a new view instance
+:* or to get //just some instance// of a view identified by type
+;WorkSite navication
+:move the Spot to some other place in the UI known by its [[UI-Coordinates|UICoord]]
+
+!!!Requirements clarified
+From these use cases we conclude that the actual requirements for a Navigator component are less than one might expect.
+In fact it is sufficient to keep //the actual element// entirely opaque, so the Navigator works on UI coordinates solely. The result -- some other UI coordinates -- can then be used to accomplish some tasks implemented elsewhere, like allocating a new view or actually moving [[the Spot|Spot]] (&rarr; InteractionControl)
+
+!Challenges of the implementation
+Some tricky problems remain to be solved though: since the Navigator works on UI coordinates, the fundamental problem remains how to acquire the initial coordinates to start navigation. This is a problem of //reverse lookup:// given a concrete element of the UI, find it's UI coordinates. While we should note that it might not be necessary to "discover" coordinates, because in fact we may know them already -- either the element has to store them (on creation), or some lookup index table could be maintained to serve the same purpose
 
diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 5b07fbe01..a8dbcd78e 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -3849,9 +3849,14 @@ + + + + + @@ -3869,6 +3874,46 @@ + + + + + + +

+ zentrales Problem +

+ + +
+ + +
+ + + + + + + + + +

+ ...der beim Erstellen des Elements +

+

+ mit den zu diesem Zeitpunkt bekannten UI-Korrdinaten bestückt wird +

+ + +
+
+
+ + + + + @@ -3888,6 +3933,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3910,6 +3981,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ oder den Spot verschieben +

+ + +
+
+
+
+ + + + + + +

+ verbleibende +

+

+ Probleme +

+ + +
+ + + +