Opened at 2018-02-01T18:38:01Z
Closed at 2018-06-15T16:13:45Z
#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 , at 2018-02-01T18:46:18Z
| blockedby: | → 1127 |
|---|
comment:2 by , at 2018-02-01T18:55:55Z
| blockedby: | 1127 → 1127, 1128 |
|---|
comment:3 by , at 2018-02-01T18:56:32Z
| blockedby: | 1127, 1128 → 1127, 1128, 1106 |
|---|
comment:4 by , at 2018-02-01T19:09:14Z
| blocking: | 979, 1067, 1104 → 979, 1067, 1104, 1129 |
|---|
comment:5 by , at 2018-02-16T01:48:02Z
| blockedby: | 1127, 1128, 1106 → 1106, 1127, 1128, 1130 |
|---|
comment:6 by , at 2018-02-23T00:17:48Z
| Status: | new → accepted |
|---|
comment:7 by , at 2018-03-10T21:04:28Z
| blockedby: | 1106, 1127, 1128, 1130 → 1106, 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 , at 2018-04-04T01:27:58Z
| blockedby: | 1106, 1127, 1128, 1130, 1086 → 1086, 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 , 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 , at 2018-06-15T16:10:53Z
| blocking: | 979, 1067, 1104, 1129 → 979, 1067, 1104, 1129, 1143 |
|---|
comment:11 by , at 2018-06-15T16:13:45Z
| blockedby: | 1086, 1106, 1127, 1128, 1130 → 1086, 1106, 1127, 1128 |
|---|---|
| Resolution: | → done |
| Status: | accepted → closed |
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 , 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

all the necessary foundations are in place now