DockAccess: analysis continued...

exploring the idea of a configuration DSL.
As a first step, this could be a simple internal DSL,
implemented as a bunch of static functor objects, which are internally bound
and thus implemented by the ViewLocator within InteractionDirector
This commit is contained in:
Fischlurch 2017-09-08 03:53:52 +02:00
parent eb04552c88
commit a9797e4a4f
4 changed files with 191 additions and 10 deletions

View file

@ -109,6 +109,11 @@ namespace gui {
struct Descriptor<ErrorLogView>
{
///////////////////////////////////////////////////////////////////////////////////////////TICKET #1105 : need a model placeholder to represent UI specific global entities
///////////////////////////////////////////////////////////////////////////////////////////TICKET #1105 : consider use of a DSL to configure component view access
//
// count = onePerWindow
// locate = within(InfoBoxPanel)
};

View file

@ -32,7 +32,16 @@
** @todo WIP ///////////////////////TICKET #955
** @todo WIP ///////////////////////TICKET #961
**
** @see gui::model::SessionFacade
** @todo as of 9/2017 there is now a whole subsystem based on those ideas,
** yet still we can not demonstrate a complete integration as was
** intended by this test. For now this test is an empty placeholder and
** reminder to create a concise and readable high-level demonstration
** eventually. And the idea to provide a model::Diagnostics counterpart
** for test invocation seems worth exploring further...
**
** @note meanwhile there is a working diff framework and implementation in place...
** @see DiffTreeApplication_test
** @see DiffComplexApplication_test
**
*/

View file

@ -21,7 +21,8 @@
* *****************************************************/
/** @file verb-function-dispatch-test.cpp
** unit test \ref VerbFunctionDispatch_test
** Demonstrate the concept of a _verb language_ based on double dispatch.
** @see diff-language.hpp
*/
@ -124,7 +125,7 @@ namespace test{
* of double dispatch; thus the implementation relies on a
* variation of the visitor pattern.
*
* @see session-structure-mapping-test.cpp
* @see DiffListApplication_test
*/
class VerbFunctionDispatch_test : public Test
{

View file

@ -3407,7 +3407,7 @@
<linktarget COLOR="#8e2a4d" DESTINATION="ID_1909730752" ENDARROW="Default" ENDINCLINATION="190;-96;" ID="Arrow_ID_1543429248" SOURCE="ID_1507239589" STARTARROW="None" STARTINCLINATION="-103;109;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485549081728" ID="ID_1122969153" MODIFIED="1504193591717" TEXT="globale Aktionen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485549081728" ID="ID_1122969153" MODIFIED="1504833848551" TEXT="globale Aktionen">
<arrowlink COLOR="#824f68" DESTINATION="ID_826011549" ENDARROW="Default" ENDINCLINATION="-906;-1187;" ID="Arrow_ID_1373278707" STARTARROW="Default" STARTINCLINATION="873;259;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1488419973349" ID="ID_1855791702" MODIFIED="1488419978923" TEXT="brauche ein Konzept">
@ -3523,16 +3523,29 @@
<node CREATED="1504393168946" ID="ID_390425361" MODIFIED="1504393177172" TEXT="Model-Typen"/>
<node CREATED="1504393177712" ID="ID_1686403667" MODIFIED="1504393182292" TEXT="View-Deskriptor">
<node CREATED="1504393184608" ID="ID_792210197" MODIFIED="1504393188051" TEXT="Strategy"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504393188615" ID="ID_1397553997" MODIFIED="1504393201193" TEXT="todo: was wird hier konfiguriert">
<icon BUILTIN="help"/>
<node CREATED="1504834023671" ID="ID_1906244318" MODIFIED="1504834100937" TEXT="konfiguriert">
<node CREATED="1504834102408" MODIFIED="1504834102408" TEXT="Layout/Verhalten"/>
<node CREATED="1504393188615" ID="ID_1397553997" MODIFIED="1504834120416" TEXT="Verhaltensmuster f&#xfc;r Component-Views">
<arrowlink COLOR="#5e819b" DESTINATION="ID_686917529" ENDARROW="Default" ENDINCLINATION="-89;-122;" ID="Arrow_ID_1067086551" STARTARROW="None" STARTINCLINATION="-322;62;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node CREATED="1504833678189" ID="ID_173722644" MODIFIED="1504833760145" TEXT="Einstiegspunkt">
<arrowlink COLOR="#717686" DESTINATION="ID_65709251" ENDARROW="Default" ENDINCLINATION="-8;-209;" ID="Arrow_ID_1510990213" STARTARROW="None" STARTINCLINATION="92;95;"/>
<node CREATED="1504833683333" ID="ID_583036636" MODIFIED="1504833907293" TEXT="Component View">
<arrowlink COLOR="#92a9df" DESTINATION="ID_1717772756" ENDARROW="Default" ENDINCLINATION="-1346;-3359;" ID="Arrow_ID_1986148222" STARTARROW="None" STARTINCLINATION="385;845;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1504833695107" ID="ID_1686159038" MODIFIED="1504833701958" TEXT="in einem Panel zu finden"/>
</node>
</node>
<node CREATED="1504393221051" ID="ID_938886823" MODIFIED="1504393282350" TEXT="wie bekommt man eine Objekt-ID?">
<linktarget COLOR="#8e2a4d" DESTINATION="ID_938886823" ENDARROW="Default" ENDINCLINATION="-367;31;" ID="Arrow_ID_265571961" SOURCE="ID_1909730752" STARTARROW="None" STARTINCLINATION="-367;31;"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504393295097" ID="ID_65709251" MODIFIED="1504479574076" TEXT="wie erreicht man einen ComponentView?">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504393295097" ID="ID_65709251" MODIFIED="1504833751457" TEXT="wie erreicht man einen ComponentView?">
<arrowlink COLOR="#524f7b" DESTINATION="ID_385011645" ENDARROW="Default" ENDINCLINATION="353;-22;" ID="Arrow_ID_186523581" STARTARROW="None" STARTINCLINATION="1270;350;"/>
<linktarget COLOR="#717686" DESTINATION="ID_65709251" ENDARROW="Default" ENDINCLINATION="-8;-209;" ID="Arrow_ID_1510990213" SOURCE="ID_173722644" STARTARROW="None" STARTINCLINATION="92;95;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1504457221429" ID="ID_7304477" MODIFIED="1504457232023" TEXT="Problem: Kopplung">
<node CREATED="1504457233178" ID="ID_999730208" MODIFIED="1504457249980" TEXT="ViewLocator an PanelLocator"/>
@ -3637,10 +3650,85 @@
</body>
</html>
</richcontent>
<node CREATED="1504831930030" ID="ID_1191902349" MODIFIED="1504832734409" TEXT="double dispatch?">
<linktarget COLOR="#6b768e" DESTINATION="ID_1191902349" ENDARROW="Default" ENDINCLINATION="11;121;" ID="Arrow_ID_1105816510" SOURCE="ID_1380298925" STARTARROW="None" STARTINCLINATION="305;0;"/>
<node CREATED="1504832179925" ID="ID_878950103" MODIFIED="1504832186896" TEXT="w&#xe4;re akzeptabel"/>
<node CREATED="1504831934790" ID="ID_1800843653" MODIFIED="1504832198246" TEXT="aber etwas &#xfc;bertrieben...">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
...es ist im Rahmen;
</p>
<p>
denn wir akzeptieren <i>double dispatch</i>&#160;sogar in der Diff-Anwendung,
</p>
<p>
welche viel h&#228;ufiger l&#228;uft, als dieser View-Zugriff hier.
</p>
<p>
</p>
<p>
Allerdings, die <i>doppelte</i>&#160;Indirektion ist nicht grunds&#228;tzlich notwendig hier,
</p>
<p>
da wir nur einen einzigen Anwendungsfall haben. Die zweite Indirektion in jedem Aufruf
</p>
<p>
bewirkt nur eine Entkoppelung vom Implementierungs-Kontext
</p>
</body>
</html></richcontent>
</node>
</node>
<node CREATED="1504832266793" ID="ID_1279692021" MODIFIED="1504832277220" TEXT="einfache Funktoren?">
<node CREATED="1504832394952" ID="ID_85672659" MODIFIED="1504832528360">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
wir brauchen keine <i>Token</i>
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1504832413997" ID="ID_439230153" MODIFIED="1504832607044" TEXT="namentlich bekannte Definitionen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
....anders als im Diff-Framework
</p>
<p>
senden wir hier keine beliebigen Nachrichten,
</p>
<p>
sondern interpretieren jeweils nur eine einzige feste Konfiguration
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1504832476365" ID="ID_799285654" MODIFIED="1504832493759" TEXT="mit der Implementierungsfunktion initialisiert"/>
<node CREATED="1504832511688" ID="ID_673872785" MODIFIED="1504832819973" TEXT="Voraussetzung: sinnvolle Primitive">
<arrowlink COLOR="#b16174" DESTINATION="ID_879982156" ENDARROW="Default" ENDINCLINATION="347;-150;" ID="Arrow_ID_1853267431" STARTARROW="None" STARTINCLINATION="7;150;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504479933641" ID="ID_686917529" MODIFIED="1504480235023" TEXT="Idee: DSL">
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504479933641" ID="ID_686917529" MODIFIED="1504834120416" TEXT="Idee: DSL">
<linktarget COLOR="#5e819b" DESTINATION="ID_686917529" ENDARROW="Default" ENDINCLINATION="-89;-122;" ID="Arrow_ID_1067086551" SOURCE="ID_1397553997" STARTARROW="None" STARTINCLINATION="-322;62;"/>
<icon BUILTIN="help"/>
<node CREATED="1504479939664" ID="ID_1158508729" MODIFIED="1504479950115" TEXT="Term-Schreibweise"/>
<node CREATED="1504479950607" ID="ID_118638432" MODIFIED="1504479958289" TEXT="generiert Funktoren/Closures"/>
@ -3656,10 +3744,58 @@
<node CREATED="1504480266909" ID="ID_1626606623" MODIFIED="1504480362356" TEXT="...an Interpreter">
<node CREATED="1504480363968" ID="ID_1701584915" MODIFIED="1504480370339" TEXT="legt die g&#xfc;ltien Verben fest"/>
<node CREATED="1504480371070" ID="ID_505779360" MODIFIED="1504480374466" TEXT="ist ein Interface"/>
<node CREATED="1504480375006" ID="ID_1380298925" MODIFIED="1504480386312" STYLE="fork" TEXT="=&gt; double-dispatch"/>
<node CREATED="1504480375006" ID="ID_1380298925" MODIFIED="1504832734409" STYLE="fork" TEXT="=&gt; double-dispatch">
<arrowlink COLOR="#6b768e" DESTINATION="ID_1191902349" ENDARROW="Default" ENDINCLINATION="11;121;" ID="Arrow_ID_1105816510" STARTARROW="None" STARTINCLINATION="305;0;"/>
</node>
</node>
</node>
<node CREATED="1504832752113" ID="ID_1801527547" MODIFIED="1504832757116" TEXT="Sprachdesign?">
<node CREATED="1504832762680" ID="ID_879982156" MODIFIED="1504832813133" TEXT="Primitive">
<linktarget COLOR="#b16174" DESTINATION="ID_879982156" ENDARROW="Default" ENDINCLINATION="347;-150;" ID="Arrow_ID_1853267431" SOURCE="ID_673872785" STARTARROW="None" STARTINCLINATION="7;150;"/>
</node>
<node CREATED="1504833110793" ID="ID_10881417" MODIFIED="1504833114828" TEXT="Ausdr&#xfc;cke">
<node CREATED="1504833126079" ID="ID_286801467" MODIFIED="1504834719008" TEXT="konkret">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="pencil"/>
<node CREATED="1504833146196" ID="ID_278904211" MODIFIED="1504833149680" TEXT="Timeline">
<node CREATED="1504833174961" ID="ID_1294462811" MODIFIED="1504833187018" TEXT="im Timeline-Panel der Gruppe hinzuf&#xfc;gen"/>
</node>
<node CREATED="1504833569692" ID="ID_1069272084" MODIFIED="1504833620713" TEXT="Viewer">
<node CREATED="1504834559240" ID="ID_423545167" MODIFIED="1504834569219" TEXT="nur ein einziger(global)"/>
<node CREATED="1504834569831" ID="ID_1909335075" MODIFIED="1504834594807" TEXT="maximal N Viewer Panel"/>
</node>
<node CREATED="1504833572687" ID="ID_715257949" MODIFIED="1504833615690" TEXT="(Asset)Bin">
<node CREATED="1504834228100" ID="ID_189081279" MODIFIED="1504834278285">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
im Asset-Panel der <i>jeweiligen</i>&#160;Gruppe hinzuf&#252;gen
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1504833574246" ID="ID_1680764695" MODIFIED="1504833610906" TEXT="Infobox">
<node CREATED="1504834859584" ID="ID_693499241" MODIFIED="1504834866267" TEXT="im aktuellen Infobox-Panel"/>
</node>
<node CREATED="1504833575700" ID="ID_1341951504" MODIFIED="1504833606683" TEXT="Playcontrol"/>
</node>
</node>
</node>
</node>
<node CREATED="1504831421266" ID="ID_1792240475" MODIFIED="1504831596393" TEXT="Zweck und Ziel">
<icon BUILTIN="info"/>
<node CREATED="1504831462636" ID="ID_252411082" MODIFIED="1504831501355" TEXT="Verhaltensmuster in ein Layout einbringen"/>
<node CREATED="1504831510806" ID="ID_834114445" MODIFIED="1504831536710" TEXT="zun&#xe4;chst sind Layouts eine fest vorgegeben"/>
<node CREATED="1504831537746" ID="ID_692369391" MODIFIED="1504831562795" TEXT="sp&#xe4;ter k&#xf6;nnte das user-Konfigurierbar werden">
<node CREATED="1504831564095" ID="ID_1860813217" MODIFIED="1504831576561" TEXT="per Einrichtungs UI"/>
<node CREATED="1504831577317" ID="ID_1281872136" MODIFIED="1504831587671" TEXT="als textuelle Konfiguration"/>
</node>
</node>
</node>
</node>
</node>
@ -5670,6 +5806,21 @@
<node CREATED="1504200915915" ID="ID_335470074" MODIFIED="1504200935868" TEXT="sp&#xe4;ter wird das ein nichtmodaler Parameter-Editor"/>
</node>
</node>
<node CREATED="1504833434094" ID="ID_349655067" MODIFIED="1504833963357">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
Docks enthalten <b>Component Views</b>
</p>
</body>
</html>
</richcontent>
<arrowlink COLOR="#929fdf" DESTINATION="ID_1717772756" ENDARROW="Default" ENDINCLINATION="-34;-71;" ID="Arrow_ID_1343685046" STARTARROW="None" STARTINCLINATION="-79;76;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1477342616175" HGAP="37" ID="ID_954058801" MODIFIED="1477342623660" TEXT="Workspace" VSHIFT="33">
<node CREATED="1477342624942" ID="ID_56920104" MODIFIED="1477342628449" TEXT="ist-Zustand">
@ -5885,6 +6036,21 @@
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1504833474521" HGAP="39" ID="ID_1439141983" MODIFIED="1504833483837" TEXT="Struktur" VSHIFT="10">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1504833487359" ID="ID_1631525475" MODIFIED="1504833497745" TEXT="UI-Frame: Fenster"/>
<node CREATED="1504833498453" ID="ID_815439481" MODIFIED="1504833503809" TEXT="Perspektive"/>
<node CREATED="1504833508516" ID="ID_1973916831" MODIFIED="1504833535108" TEXT="einzelne Panel"/>
<node CREATED="1504833540720" ID="ID_1717772756" MODIFIED="1504833931673" TEXT="Component View">
<linktarget COLOR="#92a9df" DESTINATION="ID_1717772756" ENDARROW="Default" ENDINCLINATION="-1346;-3359;" ID="Arrow_ID_1986148222" SOURCE="ID_583036636" STARTARROW="None" STARTINCLINATION="385;845;"/>
<linktarget COLOR="#929fdf" DESTINATION="ID_1717772756" ENDARROW="Default" ENDINCLINATION="-34;-71;" ID="Arrow_ID_1343685046" SOURCE="ID_349655067" STARTARROW="None" STARTINCLINATION="-79;76;"/>
<node CREATED="1504833565425" ID="ID_529173859" MODIFIED="1504833582326" TEXT="Timeline"/>
<node CREATED="1504833569692" ID="ID_1708962269" MODIFIED="1504833620713" TEXT="Viewer"/>
<node CREATED="1504833572687" ID="ID_57378390" MODIFIED="1504833615690" TEXT="(Asset)Bin"/>
<node CREATED="1504833574246" ID="ID_897436866" MODIFIED="1504833610906" TEXT="Infobox"/>
<node CREATED="1504833575700" ID="ID_1470115932" MODIFIED="1504833606683" TEXT="Playcontrol"/>
</node>
</node>
</node>
</node>
<node CREATED="1488423383765" HGAP="355" ID="ID_1046643705" MODIFIED="1488423403527" TEXT="Verhalten" VSHIFT="26">
@ -12548,7 +12714,7 @@
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485548830035" HGAP="5" ID="ID_1295711115" MODIFIED="1485548844056" TEXT="Nutzen" VSHIFT="17">
<icon BUILTIN="bell"/>
<node CREATED="1485548856639" ID="ID_1677281474" MODIFIED="1485548861522" TEXT="spezifische Aktionen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485548894522" FOLDED="true" ID="ID_826011549" MODIFIED="1504193591717" TEXT="Problem: globale Aktionen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485548894522" FOLDED="true" ID="ID_826011549" MODIFIED="1504833848551" TEXT="Problem: globale Aktionen">
<richcontent TYPE="NOTE"><html>
<head>