DockAccess: pick up planning where I left it last September (#1104)

...this was quite an extensive digression, which basically gave us
a solid foundation for topological addressing and pattern matching
within the "interface space"
This commit is contained in:
Fischlurch 2018-01-11 02:48:51 +01:00
parent 7dd69003b5
commit 7385b3f525
3 changed files with 159 additions and 31 deletions

View file

@ -112,7 +112,7 @@ namespace gui {
///////////////////////////////////////////////////////////////////////////////////////////TICKET #1105 : consider use of a DSL to configure component view access
//
// count = onePerWindow
// alloc = onePerWindow
// locate = within(InfoBoxPanel)
};
@ -121,14 +121,14 @@ namespace gui {
// Timeline
// add to group of timelines within the timelinePanel
count = unlimited
alloc = unlimited
locate = panel(timeline)
// Viewer
// here multiple alternatives are conceivable
// - allow only a single view instance in the whole application
count = onlyOne
alloc = onlyOne
locate = external(beamer)
or perspective(mediaView), panel(viewer)
or existingPanel(viewer)
@ -136,7 +136,7 @@ locate = external(beamer)
// - allow two viewer panels (the standard layout of editing applications)
count = limitPerWindow(2)
alloc = limitPerWindow(2)
locate = perspective(edit), existingPanel(viewer)
or currentWindow, existingPanel(viewer)
or existingPanel(viewer)
@ -145,7 +145,7 @@ locate = perspective(edit), existingPanel(viewer)
// (Asset)Bin
// within the dedicated asset panel, add to the appropriate group for the kind of asset
count = unlimited
alloc = unlimited
locate = currentWindow, perspective(edit), existingPanel(asset), existingGroup
or perspective(asset), panel(asset)
or firstWindow, panel(asset)
@ -153,7 +153,7 @@ locate = currentWindow, perspective(edit), existingPanel(asset), existingGroup
// Error-Log
// use the current {{{InfoBoxPanel}}} if such exists, fall back to using a single view on the primary window
count = limitPerWindow(1)
alloc = limitPerWindow(1)
locate = currentWindow, existingPanel(infobox)
or firstWindow, panel(infobox)

View file

@ -23,24 +23,25 @@
/** @file view-spec-dsl.hpp
** A framework for configuration of view access and allocation patterns.
** Component views are building blocks of the Lumiera UI, and may, depending on their,
** be instantiated or allocated according to specific rules and patterns. And these might
** vary in accordance to the desired working style. To give a typical example, at times it
** might be mandatory to use a single, external output for all kind of media playback, while
** Component views are building blocks of the Lumiera UI, and may, depending on their
** type, be instantiated or allocated according to specific rules and patterns. And these
** might vary in accordance to the desired working style. To give a typical example, at times
** it might be mandatory to use a single, external output for all kind of media playback, while
** other users prefer the classical editing application layout with two media viewers side by
** side. And yet another working style would be to use a stack of media viewers allocated on
** demand in MRU-fashion.
**
** To specify those standard behaviour patterns, we provide a small internal DSL to spell out
** the default configuration in a (hopefully) self explanatory way.
** @todo as of 9/2017, the intention to open this configuration DSL for some kind of
** user provided flexible configuration of screen layouts eventually; right now
** @todo as of 9/2017, we confirm the intention to open this configuration DSL for some kind
** of user provided flexible configuration of screen layouts eventually; yet right now,
** only the foundation for this flexible configuration is provided while the defaults
** are compiled in hard wired.
** are to be compiled into the UI as hard wired constants.
**
**
** # Allocation of UI component views
**
** Here, Allocation means
** Within this context, _Allocation_ means...
** - to constitute the desired element's identity
** - to consider multiplicity and possibly retrieve an existing instance
** - to determine the hosting location
@ -58,8 +59,8 @@
** and thus allow to manage them like child objects. Operating on top of these primitive operations,
** the _configuration of view access patterns_ creates a flexible binding layer, which isolates the
** users of component views (typically other parts of the UI) from the actual mechanics of locating.
** While the client just retrieves a view instance, a dedicate _allocation logic_ ensures this view
** instance is placed at the desired place within the UI and manages the active view instances.
** While the client just retrieves a view instance, a dedicated _allocation logic_ ensures this view
** instance is actually placed at the desired place within the UI, and manages active view instances.
**
** ## Configuration DSL
**
@ -133,7 +134,7 @@ namespace interact {
UNIMPLEMENTED ("build a view spec from explicitly given UI coordinates");
}
/** shortcut to allow initialisation from UI-Coordintate builder expressiong */
/** shortcut to allow initialisation from UI-Coordinate builder expression */
ViewSpec(UICoord::Builder&& coordinates)
: ViewSpec{UICoord(std::move (coordinates))}
{ }
@ -159,6 +160,17 @@ namespace interact {
};
/**
* A specification to describe the strategy for allocating (placing, retrieving) a component view.
* On a DSL-technical level, AllocSpec is a _function generator_: it produces Allocator entities,
* which in turn are functions to perform the actual allocation.
* @note AllocSpec relies on a specific *convention* how to specify the actual allocation operation:
* - the operation is a two-argument function
* - its first argument is the _work triggering argument_, namely the concrete UI coordinates
* passed to the Allocator, requesting to create or retrieve or claim the view at that location
* - its second argument serves for parametrisation or specialisation of the strategy; it will
* be "baked" into the generated allocator.
*/
template<typename PAR>
class AllocSpec
: public std::function<Allocator(PAR)>

View file

@ -1351,7 +1351,7 @@
<node CREATED="1502390886681" ID="ID_985994192" MODIFIED="1502390895409" TEXT="f&#xfc;hre Benachrichtiguns-Level ein">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502390603674" ID="ID_125356908" MODIFIED="1502390862378" TEXT="#1102 : build a message display box in the UI">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502390603674" ID="ID_125356908" MODIFIED="1515631780499" TEXT="#1102 : build a message display box in the UI">
<arrowlink COLOR="#8c8bae" DESTINATION="ID_1926586811" ENDARROW="Default" ENDINCLINATION="1456;47;" ID="Arrow_ID_1593124756" STARTARROW="None" STARTINCLINATION="-839;779;"/>
<icon BUILTIN="hourglass"/>
</node>
@ -1396,7 +1396,7 @@
<node CREATED="1504215958961" ID="ID_55797578" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-textview-buffer.html.en#textview-formatting" MODIFIED="1504215966443" TEXT="Formattierung">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1504219859389" ID="ID_653669269" MODIFIED="1512927037836" TEXT="Scrollen zum zuletzt eingef&#xfc;gten Text">
<node CREATED="1504219859389" ID="ID_653669269" MODIFIED="1515634557253" TEXT="Scrollen zum zuletzt eingef&#xfc;gten Text">
<arrowlink COLOR="#9bbabd" DESTINATION="ID_429138159" ENDARROW="Default" ENDINCLINATION="-1413;0;" ID="Arrow_ID_1025095859" STARTARROW="None" STARTINCLINATION="-1151;202;"/>
<icon BUILTIN="idea"/>
<node CREATED="1504220139416" ID="ID_1997485219" MODIFIED="1504220211965" TEXT="scroll_to(iterator) funktioniert nicht">
@ -3374,7 +3374,7 @@
<node CREATED="1492965830381" ID="ID_1556963629" MODIFIED="1493852099751" TEXT="globalCtx -&gt; find active window">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#990000" CREATED="1492965845115" ID="ID_1375700494" MODIFIED="1512926191721" TEXT="TODO Panel-Aktionen">
<node COLOR="#990000" CREATED="1492965845115" ID="ID_1375700494" MODIFIED="1515631845514" TEXT="TODO Panel-Aktionen">
<arrowlink DESTINATION="ID_1176492517" ENDARROW="Default" ENDINCLINATION="14;-313;" ID="Arrow_ID_1083220093" STARTARROW="None" STARTINCLINATION="632;-20;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1492965914018" ID="ID_1134955241" MODIFIED="1492965917669" TEXT="UNIMPLEMENTED"/>
@ -3542,7 +3542,7 @@
<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 CREATED="1506175115772" HGAP="318" ID="ID_1448696607" MODIFIED="1506262455151" VSHIFT="64">
<node CREATED="1506175115772" FOLDED="true" HGAP="318" ID="ID_1448696607" MODIFIED="1515626824896" VSHIFT="64">
<richcontent TYPE="NODE"><html>
<head>
@ -3555,7 +3555,7 @@
</html></richcontent>
<cloud COLOR="#e7d6c4"/>
<linktarget COLOR="#535189" DESTINATION="ID_1448696607" ENDARROW="Default" ENDINCLINATION="-391;179;" ID="Arrow_ID_1194909838" SOURCE="ID_342577636" STARTARROW="None" STARTINCLINATION="691;-200;"/>
<icon BUILTIN="pencil"/>
<icon BUILTIN="info"/>
<node CREATED="1506175332288" ID="ID_1487048178" MODIFIED="1506175335441" TEXT="immutable"/>
<node CREATED="1506175325136" ID="ID_569191479" MODIFIED="1506175331436" TEXT="kopierbare Werte"/>
<node CREATED="1506175344846" ID="ID_1787806028" MODIFIED="1506175357976" TEXT="Tupel von Literalen"/>
@ -9042,18 +9042,97 @@
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506181855132" ID="ID_787628963" MODIFIED="1506181859251" TEXT="ViewSpec">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506181864011" ID="ID_615395774" MODIFIED="1506181867138" TEXT="Alternativen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506181868898" ID="ID_1852393086" MODIFIED="1506181871266" TEXT="Resolver">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1515634532968" ID="ID_1968327718" MODIFIED="1515634549551" TEXT="Abrufen der UI-Coord triggert Resolver">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631590595" ID="ID_1454085887" MODIFIED="1515634594574" TEXT="wie mit ViewLocator-Service verdrahten?">
<arrowlink COLOR="#614483" DESTINATION="ID_1252372720" ENDARROW="Default" ENDINCLINATION="-106;0;" ID="Arrow_ID_1759099248" STARTARROW="Default" STARTINCLINATION="-276;-13;"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631616944" ID="ID_700537003" MODIFIED="1515631635166" TEXT="verbinden mit Navigator als LocationQuery-Implementierung">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631646108" ID="ID_1553855476" MODIFIED="1515631653387" TEXT="UICoordResolver erzeugen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506181864011" ID="ID_615395774" MODIFIED="1515634504964" TEXT="Alternativen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631663265" ID="ID_1149231463" MODIFIED="1515631712900" TEXT="ODER-Operator">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631675752" ID="ID_1586757410" MODIFIED="1515631712140" TEXT="Repr&#xe4;sentation als Liste von UICoord">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631690390" ID="ID_783849930" MODIFIED="1515631710932" TEXT="&quot;committed choice&quot; L&#xf6;sungsmechanismus">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506181842670" ID="ID_229712638" MODIFIED="1506181848613" TEXT="Allocator">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631726569" ID="ID_1252372720" MODIFIED="1515634594574" TEXT="wie mit ViewLocator-Service verdrahten?">
<linktarget COLOR="#614483" DESTINATION="ID_1252372720" ENDARROW="Default" ENDINCLINATION="-106;0;" ID="Arrow_ID_1759099248" SOURCE="ID_1454085887" STARTARROW="Default" STARTINCLINATION="-276;-13;"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631909081" ID="ID_1875881401" MODIFIED="1515631923152" TEXT="Aufrufe auf ViewLocator-API &#xfc;bersetzen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506181875481" ID="ID_941513985" MODIFIED="1506181880554" TEXT="AllocatorSpec">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631937958" ID="ID_1051141312" MODIFIED="1515631963523" TEXT="partielle Funktions-Applikation">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631948148" ID="ID_1460703660" MODIFIED="1515631961915" TEXT="Funktor generieren">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515633963179" HGAP="-9" ID="ID_423312626" MODIFIED="1515633981449" TEXT="konkrete Bausteine" VSHIFT="34">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#4d316d" CREATED="1515633990048" ID="ID_750345391" MODIFIED="1515634011515" TEXT="komplett auf abstrakter Ebene zu implementieren">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1515634030562" ID="ID_662195926" MODIFIED="1515634045724" TEXT="Frage: geht das wirklich?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515634054990" HGAP="44" ID="ID_146987308" MODIFIED="1515634075362" TEXT="Struktur-L&#xf6;sung" VSHIFT="19">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515634166656" ID="ID_760459550" MODIFIED="1515634268252" TEXT="UI-Coord-Builder">
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1515634180942" ID="ID_1485314989" MODIFIED="1515634191951" TEXT="praktisch schon da">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515634197876" ID="ID_731095389" MODIFIED="1515634259245" TEXT="existing...">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1515634208379" ID="ID_1341895683" MODIFIED="1515634226268" TEXT="Vermutung: auf backing service angewiesen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515634249365" ID="ID_498582439" MODIFIED="1515634257941" TEXT="Allokator-Strategien">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1515634282345" ID="ID_788516837" MODIFIED="1515634289551" TEXT="kl&#xe4;ren, wer sie umsetzt">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515634076196" HGAP="-17" ID="ID_1380959703" MODIFIED="1515634093951" TEXT="Implementierung" VSHIFT="20">
<icon BUILTIN="hourglass"/>
<node CREATED="1515634129061" MODIFIED="1515634129061" TEXT="locate">
<node CREATED="1515634129062" MODIFIED="1515634129062" TEXT="firstWindow"/>
<node CREATED="1515634129062" MODIFIED="1515634129062" TEXT="currentWindow"/>
<node CREATED="1515634129062" MODIFIED="1515634129062" TEXT="perspective(id)"/>
<node CREATED="1515634129062" MODIFIED="1515634129062" TEXT="panel(id)"/>
<node CREATED="1515634129062" MODIFIED="1515634129062" TEXT="existingPanel(id)"/>
<node CREATED="1515634129062" MODIFIED="1515634129062" TEXT="existingGroup WIP 9/17 not clear if possible"/>
</node>
<node CREATED="1515634129062" MODIFIED="1515634129062" TEXT="alloc">
<node CREATED="1515634129063" MODIFIED="1515634129063" TEXT="unlimited"/>
<node CREATED="1515634129063" MODIFIED="1515634129063" TEXT="onlyOne"/>
<node CREATED="1515634129063" MODIFIED="1515634129063" TEXT="limitPerWindow(cnt)"/>
</node>
</node>
</node>
</node>
<node CREATED="1506181908037" HGAP="-29" ID="ID_1925951134" MODIFIED="1506956365444" TEXT="Test" VSHIFT="21">
@ -9412,12 +9491,22 @@
<node CREATED="1506182023288" ID="ID_1539184761" MODIFIED="1506182023288" TEXT="ViewSpecDSL_test">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506182077694" ID="ID_839824654" MODIFIED="1506182098717" TEXT="verify_basicProperties">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1515633695710" ID="ID_1540478220" MODIFIED="1515633709528" TEXT="aus standardUsage ablzuleiten"/>
<node CREATED="1515633710396" ID="ID_335824710" MODIFIED="1515633719591" TEXT="spezifiziert die formalen Basis-Eigenschaften"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506182037003" ID="ID_439307131" MODIFIED="1506182109551" TEXT="verify_standardUsage">
<icon BUILTIN="pencil"/>
<node CREATED="1515633645885" ID="ID_1659749577" MODIFIED="1515633650264" TEXT="einfaches Dummy-Setup"/>
<node CREATED="1515633651212" ID="ID_704575529" MODIFIED="1515633656951" TEXT="erlaubt, die Strukturen zu bauen"/>
<node CREATED="1515633658483" ID="ID_149158343" MODIFIED="1515633686631" TEXT="l&#xe4;uft ohne die UI-Backbone">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506182087462" ID="ID_47070993" MODIFIED="1506182098716" TEXT="verify_alternatives">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1515633722883" ID="ID_9454050" MODIFIED="1515633728885" TEXT="rein technische Erweiterung"/>
<node CREATED="1515633737905" ID="ID_1500220475" MODIFIED="1515633769992" TEXT="Auswahl der ersten &quot;passenden&quot; L&#xf6;sung"/>
<node CREATED="1515633770884" ID="ID_861669562" MODIFIED="1515633784135" TEXT="Dummy: GenNodeLocationQuery anstelle eines realen UI"/>
</node>
</node>
</node>
@ -9691,7 +9780,28 @@
<node CREATED="1506034529729" ID="ID_1906856590" MODIFIED="1506034536316" TEXT="Keine Generics mehr notwendig"/>
<node CREATED="1506034536976" ID="ID_760545085" MODIFIED="1506034547716" TEXT="locationSpec ist direkt eine UICoord">
<node CREATED="1506114845775" ID="ID_98017975" MODIFIED="1506114856697" TEXT="mu&#xdf; DSL-Elemente unterst&#xfc;tzen"/>
<node CREATED="1506034566805" ID="ID_726919191" MODIFIED="1506034578279" TEXT="ODER-Behandlung wandert in UICoord"/>
<node CREATED="1506034566805" ID="ID_726919191" MODIFIED="1506034578279" TEXT="ODER-Behandlung wandert in UICoord">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515632006668" ID="ID_1085098385" MODIFIED="1515632023521" TEXT="wirklich?">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1515632050143" ID="ID_1858706501" MODIFIED="1515632086231">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
Alternative: wrap UI-Coord,
</p>
<p>
thin autmentation layer
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1506114863020" ID="ID_1749053457" MODIFIED="1506114874020" TEXT="Problem: existingPanel(id)">
<icon BUILTIN="messagebox_warning"/>
</node>
@ -9852,6 +9962,9 @@
</p>
</body>
</html></richcontent>
<node CREATED="1515632134915" ID="ID_1701452111" MODIFIED="1515632143205" TEXT="UICoordResolver kann das">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
@ -10033,7 +10146,7 @@
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493852906845" HGAP="24" ID="ID_1176492517" MODIFIED="1493852949884" TEXT="siehe auch #1097 clarify the role of the panels in the UI" VSHIFT="9">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493852906845" HGAP="24" ID="ID_1176492517" MODIFIED="1515631845514" TEXT="siehe auch #1097 clarify the role of the panels in the UI" VSHIFT="9">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1176492517" ENDARROW="Default" ENDINCLINATION="14;-313;" ID="Arrow_ID_1083220093" SOURCE="ID_1375700494" STARTARROW="None" STARTINCLINATION="632;-20;"/>
<icon BUILTIN="forward"/>
</node>
@ -12184,7 +12297,7 @@
</node>
</node>
<node CREATED="1477522287316" ID="ID_1942021610" MODIFIED="1477522290919" TEXT="TimelinePanel"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502390603674" ID="ID_1926586811" MODIFIED="1502390862378" TEXT="#1102 : build a message display box in the UI">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502390603674" ID="ID_1926586811" MODIFIED="1515631780499" TEXT="#1102 : build a message display box in the UI">
<linktarget COLOR="#8c8bae" DESTINATION="ID_1926586811" ENDARROW="Default" ENDINCLINATION="1456;47;" ID="Arrow_ID_1593124756" SOURCE="ID_125356908" STARTARROW="None" STARTINCLINATION="-839;779;"/>
<icon BUILTIN="hourglass"/>
</node>
@ -18529,9 +18642,9 @@
<node CREATED="1504462888107" ID="ID_291187993" MODIFIED="1504463167809" TEXT="[optional] Perspektive"/>
<node CREATED="1504462891394" ID="ID_1569864275" MODIFIED="1504462902036" TEXT="Panel"/>
<node CREATED="1504463016698" ID="ID_337670154" MODIFIED="1504463019877" TEXT="lokal">
<node CREATED="1504463020913" ID="ID_1114832380" MODIFIED="1504463027724" TEXT="[optional] Gruppe"/>
<node CREATED="1504463028384" ID="ID_604807253" MODIFIED="1504463033315" TEXT="View-ID"/>
<node CREATED="1504463067051" ID="ID_1393457815" MODIFIED="1504463076837" TEXT="Komponente.Komponente..."/>
<node CREATED="1504463020913" ID="ID_1114832380" MODIFIED="1515556932625" TEXT="[optional] Gruppe bzw. Tab"/>
<node CREATED="1504463067051" ID="ID_1393457815" MODIFIED="1515556942600" TEXT="Komponente/Komponente/Komponente..."/>
</node>
</node>
<node CREATED="1506956495003" ID="ID_364730867" MODIFIED="1506956499822" TEXT="konktete Topologie">
@ -18539,6 +18652,9 @@
<node CREATED="1506956501474" ID="ID_905779000" MODIFIED="1506956515389" TEXT="zug&#xe4;nglich duch Navigator">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1515556878797" ID="ID_1322161446" MODIFIED="1515556887633" TEXT="Resolver mit path matching">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
@ -25396,7 +25512,7 @@
</body>
</html></richcontent>
</node>
<node CREATED="1504215825762" ID="ID_429138159" MODIFIED="1504220029652" TEXT="zur letzten Zeile scrollen">
<node CREATED="1504215825762" ID="ID_429138159" MODIFIED="1515634557253" TEXT="zur letzten Zeile scrollen">
<linktarget COLOR="#9bbabd" DESTINATION="ID_429138159" ENDARROW="Default" ENDINCLINATION="-1413;0;" ID="Arrow_ID_1025095859" SOURCE="ID_653669269" STARTARROW="None" STARTINCLINATION="-1151;202;"/>
<node CREATED="1504220167228" ID="ID_622474093" MODIFIED="1504220186708" TEXT="scroll_to(iterator) ist ungenau">
<icon BUILTIN="broken-line"/>