#1126 closed todo (done)

view spec DSL

Reported by: Ichthyostega Owned by: Ichthyostega
Priority: normal Milestone: 0integration
Component: lumieraGui Keywords: integration gui architecture design
Sub Tickets: #1086, #1106, #1127, #1128 Parent Tickets: #979, #1067, #1104, #1129, #1143

Description

Create a DSL-like comprehensive notation to describe where an UI element shall be created or located.
This is an essential constituent of UI behaviour logic and must not be hard wired and mixed up with UI event handling code.

For now we strive at an internal DSL, with a possible future extension to parse a similarily structured configuration notation into those DSL entities.

Change history (12)

comment:1 by Ichthyostega, at 2018-02-01T18:46:18Z

blockedby: 1127

comment:2 by Ichthyostega, at 2018-02-01T18:55:55Z

blockedby: 11271127, 1128

comment:3 by Ichthyostega, at 2018-02-01T18:56:32Z

blockedby: 1127, 11281127, 1128, 1106

comment:4 by Ichthyostega, at 2018-02-01T19:09:14Z

blocking: 979, 1067, 1104979, 1067, 1104, 1129

comment:5 by Ichthyostega, at 2018-02-16T01:48:02Z

blockedby: 1127, 1128, 11061106, 1127, 1128, 1130

comment:6 by Ichthyostega, at 2018-02-23T00:17:48Z

Status: newaccepted

all the necessary foundations are in place now

comment:7 by Ichthyostega, at 2018-03-10T21:04:28Z

blockedby: 1106, 1127, 1128, 11301106, 1127, 1128, 1130, 1086

The problem how to access the LocationSolver service turns more and more into an impediment, which affects the structure of the DSL as a whole. If we want to do it in a clean way, the DSL becomes littered with this cross-cutting concern; if instead we want to keep the DSL simple and focussed, we have to resort to magic: Effectively the GUI, once started, has do drop its actual service implementation into a global variable.

Well, this sounds familiar; it is Dependency Injection.
Now this does not mean we need a DI-Container, but it should be taken as an indication that the previously used provisorium with singletons and ad-hoc installed service instances is no longer adequate. Nothing to be concerned about -- our foundation is solid, an now is the right time to augment it: #1086

comment:8 by Ichthyostega, at 2018-04-04T01:27:58Z

blockedby: 1106, 1127, 1128, 1130, 10861086, 1106, 1127, 1128, 1130

Now I'll need to find my way back to the point where the digression regarding dependency-injection started.

As it turns out, this was a valuable digression, since we can rid ourselves
from lots of ad-hoc functionality, which basically does in a shitty way
what DependencyFactory now provides as standard solution

Especially the tricky points with starting up the global context in the GUI becomes much simpler now

comment:9 by Ichthyostega, at 2018-04-05T15:02:48Z

Issues of integration are basically settled
Funny enough, it was quite easy now, after the rework of lib::Depend

remaining TODO

  • finish the ViewSpecDSL_test #1129
  • especially cover the alternatives
  • add a test case to document the high-level invocation
  • which also involves to implement this high-level invocation in ViewLocator

NOT to be solved here right now

  • the actual delegation from within the DSL tokens
  • the actual navigation mechanism, as abstracted by Navigator (which basically requires all of the UI internals to be set)
  • the actual addressing of Panels and widgets
  • the actual allocation of concrete new widgets within concrete UI elements

comment:10 by Ichthyostega, at 2018-06-15T16:10:53Z

blocking: 979, 1067, 1104, 1129979, 1067, 1104, 1129, 1143

comment:11 by Ichthyostega, at 2018-06-15T16:13:45Z

blockedby: 1086, 1106, 1127, 1128, 11301086, 1106, 1127, 1128
Resolution: done
Status: acceptedclosed

As of 6/2018, it seems futile to continue design work on those topics,
since far too much of the actual UI internals remains to be settled first.

Thus I'll split off the remaining work into #1143 and close this ticket, since the major design work can be considered as done

comment:12 by Undercover Agent, at 2025-12-25T00:00:00Z

blockedby: 1086, 1106, 1127, 1128
blocking: 979, 1067, 1104, 1129, 1143
Parent Tickets: 979, 1067, 1104, 1129, 1143
Sub Tickets: 1086, 1106, 1127, 1128

Migration MasterTickets ⟼ Subtickets-plugin

Note: See TracTickets for help on using tickets.