From ada40609f597c9b7dabfda396ec1e8ace0ad2a72 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 17 Mar 2017 04:09:44 +0100 Subject: [PATCH] more planning of command invocation structure --- doc/devel/uml/Command-ui-access.png | Bin 14581 -> 23223 bytes wiki/renderengine.html | 13 +++--- wiki/thinkPad.ichthyo.mm | 61 ++++++++++++++++++++++++++-- 3 files changed, 64 insertions(+), 10 deletions(-) diff --git a/doc/devel/uml/Command-ui-access.png b/doc/devel/uml/Command-ui-access.png index ffba5c283414f3fdb055b8eb5ab00bb3318300d6..5cb4ac0174436cab261e72087322254b8404e9bc 100644 GIT binary patch literal 23223 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 sFUcIXXojF#Lt0BTosWdHyG literal 14581 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 diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 06361c541..7330f0766 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -2582,7 +2582,7 @@ This contrastive approach attempts to keep knowledge and definition clustered in &rarr; GuiCommandCycle -
+
//the process of issuing a session command from the UI//
 Within the Lumiera UI, we distinguish between core concerns and the //local mechanics of the UI.// The latter is addressed in the usual way, based on a variation of the [[MVC-Pattern|http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]]. The UI toolkit set, here the GTK, affords ample ways to express actions and reactions within this framework, where widgets in the presentation view are wired with the corresponding controllers vice versa (GTK terms these connections as //"signals"//, we rely on {{{libSigC++}}} for implementation).
 A naive approach would extend these mature mechanisms to also cover the actual functionality of the application. This compelling solution allows quickly to get "something tangible" up and running, yet -- on the long run -- inevitably leads to core concerns being tangled into the presentation layer, which in turn becomes hard to maintain and loaded with "code behind". Since we are here "for the long run", we immediately draw the distinction between UI mechanics and core concerns. The latter are, by decree and axiom, required to perform without even an UI layer running. This decision gives rise to the challenge how to form and integrate the invocation of ''core commands'' into the presentation layer.
@@ -2622,8 +2622,9 @@ from these use cases, we can derive the //crucial activities for command handlin
 * on invocation, the ID of the instance is sent via UI-Bus to the {{{CmdInstanceManager}}}
 * which in turn removes the instance handle from its registration table and hands it over into the ProcDispatcher
 [<img[Access to Session Commands from UI|uml/Command-ui-access.png]]
-Consequently this means that command instances will be formed //per instance// of InteractionStateManager. Thus, each distinct kind of control system has its own instances, which are kept around, until they are ready for invocation. Each invocation "burns" an instance -- on next access, a new instance ID will be allocated, and the next command invocation cycle starts...
-
+An immediate consequence is that command instances will be formed //per instance// of InteractionStateManager. Each distinct kind of control system has its own instances, which are kept around, until they are ready for invocation. Each invocation "burns" an instance -- on next access, a new instance ID will be allocated, and the next command invocation cycle starts... + +Command instances are like prototypes -- thus each additional level of differentiation will create a clone copy and decorate the basic command ID. Yet this extension process is delegated into multiple stages. Already when a specific InvocationTrail is established, the bare command prototype is specialised, and additionally combined with specific context access rules and maybe even a accessor to retrieve some argument value. The {{{CmdInstanceManager}}} internally maintains and tracks a prepared command instance, supplying a distinct instance number to keep concurrently existing instances apart; instances might be around for an extended period, because commands are enqueued with the ProcDispatcher.
All communication between Proc-Layer and GUI has to be routed through the respective LayerSeparationInterfaces. Following a fundamental design decision within Lumiera, these interface are //intended to be language agnostic// &mdash; forcing them to stick to the least common denominator. Which creates the additional problem of how to create a smooth integration without forcing the architecture into functional decomposition style. To solve this problem, we rely on ''messaging'' rather than on a //business facade// -- our facade interfaces are rather narrow and limited to lifecycle management. In addition, the UI exposes a [[notification facade|GuiNotificationFacade]] for pushing back status information created as result of the edit operations, the build process and the render tasks.
@@ -2782,7 +2783,7 @@ We acknowledge that the gui model is typically used from within the GUI event di
 The forwarding of model changes to the GUI widgets is another concern, since notifications from session mutations arrive asynchronous after each [[Builder]] run. In this case, we send a notification to the widgets registered as listeners, but wait for //them// to call back and fetch the [[diffed state|TreeDiffModel]]. This callback will be scheduled by the  widgets to perform in the GUI event  thread.
 
-
+
''Building Blocks for the User Interface Model and Control structure''
 The fundamental pattern for building graphical user interfaces is to segregate into the roles of __M__odel, __V__iew and __C__controler ([[MVC|http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]]). This approach is so succesful, that it turned into a de-facto standard in commen UI toolkit sets. But larger, more elaborate and specialised applications introduce several cross cutting concerns, which create a tension within this MVC solution pattern.
 [<img[UI-Bus and GUI model elements|uml/fig158213.png]]
@@ -3414,13 +3415,13 @@ From experiences with other middle scale projects, I prefer having the test code
 [img[Example: Interfaces/Namespaces of the ~Session-Subsystems|uml/fig130053.png]]
 
-
+
//A command in preparation of being issued from the UI.//
 The actual persistent operations on the session model are defined through DSL scripts acting on the session interface, and configured as a //command prototype.// Typically these need to be enriched with at least the actual subject to invoke this command on; many commands require additional parameters, e.g. some time or colour value. These actual invocation parameters need to be picked up from UI elements, and the process of preparing and outfitting a generic command with these actual values is tracked by an ''InvocationTrail handle''. When ready, finally this handle can be issued on any bus terminal, i.e. on any [[tangible interface element|UI-Element]].
 
 &rarr; CommandInvocationAnalysis
 
-An invocation trail represents one specific path leading to the invocation of a command. It is a value object (handle), and it serves as the interface used by the UI-Element to retrieve or supply the arguments and finally to prepare the invocation message(s). But while the invocation trail is generic to some degree, the entity to trigger the command invocation needs explicit and concrete knowledge about the circumstances involved into this invocation. Simply, because in some cases, very specific information need to be provided as argument. For example, a widget just needs to know that the setting of a specific slider will be what becomes a likewise specific argument.
+An invocation trail represents one specific path leading to the invocation of a command. It is a value object (handle), and it serves as the interface used by the UI-Element to retrieve or supply the arguments and finally to prepare the invocation message(s). But while the invocation trail is generic to some degree, the entity to trigger the command invocation needs explicit and concrete knowledge about the circumstances involved into this invocation. Simply, because in some cases, very specific information needs to be provided as argument. For example, a widget just happens to know that the setting of a specific slider will be what becomes a likewise specific argument.
 
diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 534c22a9e..edb6efb81 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -2085,7 +2085,47 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2182,7 +2222,7 @@ - + @@ -2216,15 +2256,28 @@ - + + - + + + + + + + + + + + + +