From cbd58662ba8fca70cde5be45a754d58875d9a7db Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sat, 14 Oct 2017 02:15:39 +0200 Subject: [PATCH] Navigator: start investigation of requirements (#1107, #1108, #1109) --- wiki/renderengine.html | 18 +++ wiki/thinkPad.ichthyo.mm | 254 ++++++++++++++++++++++++++------------- 2 files changed, 188 insertions(+), 84 deletions(-) diff --git a/wiki/renderengine.html b/wiki/renderengine.html index c03e78e92..19247baef 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -4167,6 +4167,24 @@ 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.
+
+!The problem of abstraction
+This goal initially poses some challenge, since it aims beyond the conventional notion of UI programming, where it is sufficient just to wire some widgets and manipulate the receiver of an event notification. The usual UI widgets are just not meant to be treated in a more systematic, generic way -- and indeed, in most cases and for most purposes it is not a good idea to approach UI programming in a to much schematic way. User interfaces need to be tangible, something concrete, with lots of specifics and local traits. Yet this very nature of UI programming tends to turn some //cross-cutting concerns// into serious liabilities. So the deliberate ''decision to introduce a Navigator'' in avoidance of these future burdens and liabilities is a decision of priorities when it comes to shaping the Lumiera UI.
+
+Which leaves us with the quest of mapping a generic location scheme onto a load of implementation defined structures not exposing any kind of genericness, and to accomplish this within an environment lacking meta information and support for self discovery beyond the most basic abstraction level. As a first step towards bridging this gap, we'll have to identify the actual //command-and-query operations// required to treat UI elements as a topological structure.
+
+!!!Analysis of expected functionality
+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
+
+
+
Various aspects of the individual [[render node|ProcNode]] are subject to configuration and may influence the output quality or the behaviour of the render process.
 * the selection //what// actual implementation (plugin) to used for a formally defined &raquo;[[Effect|EffectHandling]]&laquo;
diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm
index ddb45c11e..5b07fbe01 100644
--- a/wiki/thinkPad.ichthyo.mm
+++ b/wiki/thinkPad.ichthyo.mm
@@ -910,8 +910,7 @@
       Fehlerlog-Anzeige vorläufig irgendwo....
     

- - + @@ -2962,7 +2961,7 @@ - + @@ -3407,14 +3406,14 @@ - - + + - - + + @@ -3429,8 +3428,8 @@ - - + + @@ -3729,8 +3728,7 @@ sind denkbar und müssen in der Strategy konfigurierbar sein?

- - + @@ -3767,8 +3765,7 @@ Komponenten

- - + @@ -3822,6 +3819,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ eine reverse resolution +

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

+ auf welche Eigenschaften +

+

+ stützen wir uns? +

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

+ wer bestimmt, +

+

+ was "Kind" ist? +

+ + +
+ + + + +
@@ -3896,8 +3984,7 @@ VariadicArgumentPicker_test

- - +
@@ -3968,8 +4055,7 @@ Resolver / Navigator

- - +
@@ -4078,8 +4164,7 @@ - - +
@@ -4227,8 +4312,7 @@ Allokator pro Typ

- - + @@ -4256,8 +4340,7 @@ um auszudrücken, daß gewissen Angaben ausgelassen wurden

- - +
@@ -4349,8 +4432,7 @@ locate = panel(timeline)

- - +
@@ -4377,8 +4459,7 @@                or firstWindow().panel(viewer)

- - +
@@ -4403,8 +4484,7 @@                or panel(viewer)

- - +
@@ -4418,8 +4498,7 @@ im Asset-Panel der jeweiligen Gruppe hinzufügen

- - +
@@ -4440,8 +4519,7 @@                or firstWindow().panel(asset)

- -
+
@@ -4462,8 +4540,7 @@                or firstWindow().panel(infobox)

- - +
@@ -4487,8 +4564,7 @@ Voraussetzung: Anwendbarkeit erkennen

- - +
@@ -4581,10 +4657,10 @@
- + - + @@ -4688,10 +4764,9 @@ mit docking panels

- - + - + @@ -4718,8 +4793,7 @@ Grundlagen für InteractionControl

- - + @@ -4834,8 +4908,9 @@ - + + @@ -4871,19 +4946,42 @@ - - - - + + + + + + + +

+ in generischer UI-Struktur bewegen +

+ + +
+
+ + + + + + + + + + + + + - - + + @@ -4952,8 +5050,8 @@ - - + + @@ -4967,10 +5065,9 @@ Abstraktion zur Steuerung schaffen

- - - + + @@ -4990,8 +5087,7 @@ wie bestimmt?

- - + @@ -5024,9 +5120,9 @@ - + - + @@ -5080,8 +5176,7 @@ das Diff wird auf den Platzhalter angewendet

- - +
@@ -5096,8 +5191,7 @@ dann muß dieses automatisch deregistriert werden

- -
+
@@ -5109,8 +5203,7 @@ vermittelt über den ViewLocator (InteractionDirector)

- -
+
@@ -5268,8 +5361,7 @@ Verwaltung autmatisch via ViewLocator -> PanelLocator

- - +
@@ -6508,7 +6600,7 @@ - + @@ -6539,8 +6631,7 @@ ...um mal was im UI anzeigen zu können

- - +
@@ -6569,8 +6660,7 @@ Die Icon-Größen ergeben sich aus den Boxes auf 'plate'

- - +
@@ -6594,8 +6684,7 @@ Docks enthalten Component Views

- - +
@@ -13007,8 +13096,8 @@
- + @@ -13498,7 +13587,7 @@ - + @@ -13523,7 +13612,7 @@ - + @@ -19840,8 +19929,7 @@ Beispiel im Guide

- - +
@@ -19869,8 +19957,7 @@ Beachte: der Text-Cursor (Marker "insert") hat right gravity

- - +
@@ -19886,8 +19973,7 @@ im Guide demonstriert das

- - +