push on the topic of global action definitions (#1085)
...because this topic serves as a vehicle to elaborate various core concepts of the UI backbone, especially how to access, bind and invoke Proc-Layer commands
This commit is contained in:
parent
57a336ab49
commit
ff42530f25
5 changed files with 149 additions and 32 deletions
|
|
@ -386,12 +386,8 @@ namespace ctrl {
|
|||
void
|
||||
onMenu_sequence_add()
|
||||
{
|
||||
///////////////////////////////////////////////////////TODO this is bad user interaction design. Just create the sequence! The user is free to change the default name afterwards
|
||||
dialog::NameChooser dialog(getWorkspaceWindow(),
|
||||
_("Add Sequence"), _("New Sequence"));
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////TICKET #1070 need a way how to issue session commands
|
||||
// if(dialog.run() == RESPONSE_OK)
|
||||
// workspaceWindow().getProject().add_new_sequence(dialog.getName()); //////global -> InteractionDirector
|
||||
/////////////////////////////////////////////////////////////////////////////////////TODO consider to invoke those one-liners directly from the lambda!
|
||||
globalCtx_.director_.newSequence();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -401,7 +397,7 @@ namespace ctrl {
|
|||
void
|
||||
onMenu_track_add()
|
||||
{
|
||||
g_message("Hello"); //////TODO Problem is how to find the context!!!!
|
||||
globalCtx_.director_.newSequence();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -155,5 +155,40 @@ namespace interact {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Establish a pristine new sequence within the session.
|
||||
* The goal is to create a new _playground_ for the user to add content.
|
||||
* Actually, not only a new sequence is created, but also a new fork (track tree)
|
||||
* and a new timeline to hold that sequence. And finally, this new timeline is opened for editing.
|
||||
* This action invokes a command into the session, which in turn is responsible for figuring out
|
||||
* all the contextual details sensibly.
|
||||
*/
|
||||
void
|
||||
InteractionDirector::newSequence()
|
||||
{
|
||||
UNIMPLEMENTED ("create new sequence and expose it as timeline");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Establish a empty new track close to the current scope.
|
||||
* Like for #newSequence, the goal is to create a new empty workspace.
|
||||
* But since a track can be attached anywhere within the fork (track tree), the currently active element
|
||||
* is used to establish a current scope, which in turn is used as anchor to attach the new track in a
|
||||
* sensible way, with a preference to add the new track as a sibling to the current scope. The actual
|
||||
* details of this decision are delegated to the session, but the command invoked by this action does
|
||||
* need a current element as argument, and this current element thus needs to be figured out from
|
||||
* the context of invocation (current focus and possibly selection)
|
||||
* @todo as of 3/2017 this is an initial draft: It is not clear yet, if this lookup of context
|
||||
* will always be treated implicitly, or if it is better to have a public _content discovery operation_
|
||||
* on InteractionDirector and pass the current element explicitly as argument
|
||||
*/
|
||||
void
|
||||
InteractionDirector::newTrack()
|
||||
{
|
||||
UNIMPLEMENTED ("create new track and attach it sensibly at the current scope");
|
||||
}
|
||||
|
||||
|
||||
|
||||
}}// namespace gui::interact
|
||||
|
|
|
|||
|
|
@ -128,6 +128,9 @@ namespace interact {
|
|||
void forkProject();
|
||||
void openFile();
|
||||
|
||||
void newSequence();
|
||||
void newTrack();
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1539,7 +1539,7 @@ To support this handling scheme, some infrastructure is in place:
|
|||
* performing the actual execution is delegated to a handling pattern object, accessed by name.
|
||||
</pre>
|
||||
</div>
|
||||
<div title="CommandInvocationAnalysis" creator="Ichthyostega" modifier="Ichthyostega" created="201702142329" modified="201703031814" tags="draft impl GuiPattern example discuss" changecount="13">
|
||||
<div title="CommandInvocationAnalysis" creator="Ichthyostega" modifier="Ichthyostega" created="201702142329" modified="201703140129" tags="draft impl GuiPattern example discuss" changecount="14">
|
||||
<pre>//This page is a scrapbook to collect observations about command invocation in the UI//
|
||||
{{red{2/2017}}} the goal is to shape some generic patterns of InteractionControl (&rarr; GuiCommandBinding, &rarr; GuiCommandCycle)
|
||||
|
||||
|
|
@ -1549,7 +1549,7 @@ As discussed in &rarr; ModelDependencies, there is quite some degree of magi
|
|||
* a Session always has at least one Timeline; even a default-created Session has
|
||||
* when the Session is just //closed,// the UI becomes mostly disabled, with the exception of {{{Help}}}, {{{Quit}}} and {{{New Session}}}...
|
||||
* what this operation //actually means,// depends on the user's expectations. Here "the user" is an abstracted user we conceive, since there are no real-world users of Lumiera yet.
|
||||
** when just invokind "add Sequence", the user wants a new playground
|
||||
** when just invoking "add Sequence", the user wants a new playground
|
||||
** when, on the other hand, the user right-clicks a scope-fork ("track" or "media bin"), she wants a new sequence made out of the contents of this fork
|
||||
* in both cases, after creating the new Sequence, it should become visible in the UI -- <br/>which means we have to set up a new timeline too, taking a copy of the currently active timeline. (When the latter is just pristine, we want the new one to take its place)
|
||||
At this point, it seems adequate to limit "add Sequence" to the first use case, and name the second one as "make Sequence".
|
||||
|
|
@ -1558,7 +1558,7 @@ The latter will probably be used within a context menu, but don't forget that ac
|
|||
//add Sequence// thus means a global command, which can be issued against the current session with no further arguments...
|
||||
* it will fabricate a new fork (appearing as track in this context)
|
||||
* it will //root-attach// this fork, i.e. it will [[place|Placement]] it as child of the ModelRootMO scope, and this act automagically creates a new [[Sequence]] asset
|
||||
* it will fabricate a new BindingMO as a prototype copy from the currently active one, and likewise root-attach it, which automagically creates a new [[Timeline]] asset
|
||||
* it will fabricate a new BindingMO as a prototype copy from the currently active one, and likewise root-attach it, which magically creates a new [[Timeline]] asset
|
||||
* it will create a new ''focus goal'' ({{red{TODO new term coined 2/2017}}}), which should lead to activating the corresponding tab in the timeline pane, once this exists...
|
||||
|
||||
Now, while all of this means a lot of functionality and complexity down in Proc, regarding the UI this action is quite simple: it is offered as an operation on the InteractionDirector, which most conveniently also corresponds to "the session as such" and thus can fire off the corresponding command without much further ado. On a technical level we just somehow need to know the corresponding command ID in proc, which is not subject to configuration, but rather requires some kind of well behaved hard-wiring. And, additionally, we need to build something like the aforementioned //focus goal...// {{red{TODO}}}
|
||||
|
|
@ -2582,7 +2582,7 @@ This contrastive approach attempts to keep knowledge and definition clustered in
|
|||
&rarr; GuiCommandCycle
|
||||
</pre>
|
||||
</div>
|
||||
<div title="GuiCommandCycle" creator="Ichthyostega" modifier="Ichthyostega" created="201703031817" modified="201703110107" tags="design operational GuiPattern GuiIntegration draft discuss img" changecount="29">
|
||||
<div title="GuiCommandCycle" creator="Ichthyostega" modifier="Ichthyostega" created="201703031817" modified="201703140110" tags="design operational GuiPattern GuiIntegration draft discuss img" changecount="31">
|
||||
<pre>//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.
|
||||
|
|
@ -2621,8 +2621,8 @@ from these use cases, we can derive the //crucial activities for command handlin
|
|||
* when a command is completely parametrised, it can be invoked. The managing {{{InteractionStateManager}}} knows about this
|
||||
* 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 {{{InteractionStateManager}}} instance.// 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...
|
||||
[img[Access to Session Commands from UI|uml/Command-ui-access.png]]
|
||||
</pre>
|
||||
</div>
|
||||
<div title="GuiConnection" modifier="Ichthyostega" created="200812050543" modified="201703031816" tags="GuiIntegration overview" changecount="9">
|
||||
|
|
@ -3298,7 +3298,7 @@ The InstanceHandle is created by the service implementation and will automatical
|
|||
&rarr; see [[detailed description here|LayerSeparationInterfaces]]
|
||||
</pre>
|
||||
</div>
|
||||
<div title="InteractionControl" creator="Ichthyostega" modifier="Ichthyostega" created="201511272315" modified="201703031747" tags="design decision Concepts GuiPattern draft discuss" changecount="15">
|
||||
<div title="InteractionControl" creator="Ichthyostega" modifier="Ichthyostega" created="201511272315" modified="201703140208" tags="design decision Concepts GuiPattern draft discuss" changecount="23">
|
||||
<pre>This overarching topic is where the arrangement of our interface components meets considerations about interaction design.
|
||||
The interface programming allows us to react on events and trigger behaviour, and it allows us to arrange building blocks within a layout framework. Beyond that, there needs to be some kind of coherency in the way matters are arranged -- this is the realm of conventions and guidelines. Yet in any more than trivial UI application, there is an intermediate and implicit level of understanding, where things just happen, which can not fully be derived from first principles. It is fine to have a convention to put the "OK" button right -- but how to we get at trimming a clip? How do we how we are to get at trimming a clip? if we work with the mouse? or the keyboard? or with a pen? or with a hardware controller we don't even know yet? We could deal with such on a case-by-case base (as the so called reasonable people do) or we could aim at an abstract intermediary space, with the ability to assimilate the practical situation yet to come.
|
||||
|
||||
|
|
@ -3321,12 +3321,14 @@ The primary insight is //that we build upon a spatial metaphor// -- and thus we
|
|||
:a distinct, coherent place where some ongoing work is done
|
||||
:the WorkSite might move along with the work, but we also may leave it temporarily to visit some other work site
|
||||
;the spot
|
||||
:the [[Spot]] is where we currently are -- taken both in the sense of a location and a spotlight
|
||||
:the [[Spot]] is //where we currently are// -- taken both in the sense of a location and a spotlight
|
||||
:thus a spot is potentially at some work site, but it can be navigated to another one
|
||||
;focus
|
||||
:the concrete realisation of the spot within a given control system
|
||||
;control system
|
||||
:a practical technical realisation of an human-computer-interface, like keyboard input/navigation, mouse, pen, hardware controller, touch
|
||||
;focus goal
|
||||
:an order or instruction to bring something //into focus,// which also means to move the spot to the designated location.
|
||||
;UI frame
|
||||
:the overall interface is arranged into independent top-level segments of equal importance.
|
||||
:practically speaking, we may have multiple top-level windows residing on multiple desktops...
|
||||
|
|
@ -3339,6 +3341,8 @@ The primary insight is //that we build upon a spatial metaphor// -- and thus we
|
|||
;the spot locator
|
||||
:navigating means to move the SpotLocator, in order to move the spot from work site to work site
|
||||
:the spot locator is relocated by loading a new focus path to another [[work site|WorkSite]]
|
||||
|
||||
The concept of a //focus goal// has several ramifications: for one it implies that there is something like //"current cotrol system",// which also could be the //currently active control system(s).// Simply because focus, as the realisation of the abstract notion of the spot, is always tied to a control system able to implement it. And when we're able to define generic location coordinates and then //"move there",// with the help of the spotLocator, we draw the conclusion that there must be a focus (implementation) be moving towards that location. Like e.g. the desired entity gaining the keyboard focus. And the second thing we may conclude is that there is some degree of leeway in the way how such a focus goal is reached. Since the inner logic of control systems can be quite drastically different from each other, we need to leave it to the actual control system //how a focus goal is reached.// To point out an obvious example: it is not a good idea to move the mouse pointer forcibly onto a screen element. Rather, we must use the established mechanisms of switching, scrolling and unfolding to bring the desired target element into the visible area, leaving the last step to the user, which must actively move the mouse onto the target. And we must give good visual clues as to what happened, and what we expect from the user (namely to direct her attention onto the element brought into focus).
|
||||
</pre>
|
||||
</div>
|
||||
<div title="InteractionDirector" creator="Ichthyostega" modifier="Ichthyostega" created="201702102146" modified="201703021658" tags="def draft" changecount="9">
|
||||
|
|
|
|||
|
|
@ -1702,7 +1702,7 @@
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node CREATED="1485562029644" ID="ID_1022779645" MODIFIED="1485562063560" TEXT="wieder das Problem mit dem BInden der Actions">
|
||||
<arrowlink DESTINATION="ID_530209145" ENDARROW="Default" ENDINCLINATION="-17;-195;" ID="Arrow_ID_626063593" STARTARROW="None" STARTINCLINATION="9;270;"/>
|
||||
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_530209145" ENDARROW="Default" ENDINCLINATION="-17;-195;" ID="Arrow_ID_626063593" STARTARROW="None" STARTINCLINATION="9;270;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -1753,9 +1753,8 @@
|
|||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1485126457025" ID="ID_1698853761" MODIFIED="1488419683056" TEXT="ctrl::UiManager">
|
||||
<node CREATED="1485126457025" ID="ID_1698853761" MODIFIED="1489460543116" TEXT="ctrl::UiManager">
|
||||
<linktarget COLOR="#667b93" DESTINATION="ID_1698853761" ENDARROW="Default" ENDINCLINATION="19;-86;" ID="Arrow_ID_1952755524" SOURCE="ID_40172420" STARTARROW="None" STARTINCLINATION="-290;0;"/>
|
||||
<linktarget COLOR="#75d3f9" DESTINATION="ID_1698853761" ENDARROW="Default" ENDINCLINATION="52;178;" ID="Arrow_ID_1969801735" SOURCE="ID_1440190469" STARTARROW="None" STARTINCLINATION="-140;-47;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1485454242368" ID="ID_482639947" MODIFIED="1485454312303" TEXT="Hub für Framework">
|
||||
|
|
@ -1779,6 +1778,17 @@
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485549716225" ID="ID_1584608575" MODIFIED="1485549726513" TEXT="passende Repräsentation hierfür finden">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node CREATED="1485454243767" ID="ID_3699127" MODIFIED="1485454247467" TEXT="konsistentes UI">
|
||||
<node CREATED="1485454248335" ID="ID_623536019" MODIFIED="1485454252273" TEXT="globales Menü"/>
|
||||
<node CREATED="1485454259637" ID="ID_432211008" MODIFIED="1485454262840" TEXT="globale Toolbar"/>
|
||||
<node CREATED="1485454252789" ID="ID_310049457" MODIFIED="1485454258553" TEXT="globale Aktionen"/>
|
||||
<node CREATED="1485454263876" ID="ID_543704434" MODIFIED="1485454270615" TEXT="globale Keybindings"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1489460861250" HGAP="91" ID="ID_771159819" MODIFIED="1489460927424" TEXT="globaler Kontext" VSHIFT="-26">
|
||||
<font NAME="SansSerif" SIZE="15"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485549049388" ID="ID_530209145" MODIFIED="1485562057742" TEXT="Problem: Aktionen binden">
|
||||
<linktarget COLOR="#a9b4c1" DESTINATION="ID_530209145" ENDARROW="Default" ENDINCLINATION="-17;-195;" ID="Arrow_ID_626063593" SOURCE="ID_1022779645" STARTARROW="None" STARTINCLINATION="9;270;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
|
|
@ -1800,7 +1810,7 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1485902627783" FOLDED="true" HGAP="42" ID="ID_88029282" MODIFIED="1488423342659" VSHIFT="-13">
|
||||
<node CREATED="1485902627783" HGAP="42" ID="ID_88029282" MODIFIED="1489460444614" VSHIFT="-13">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -1833,8 +1843,8 @@
|
|||
<node CREATED="1485902809813" ID="ID_648457506" MODIFIED="1485902817775" TEXT="kennt den UI-Bus"/>
|
||||
<node CREATED="1485902794479" ID="ID_1389010579" MODIFIED="1485902806377" TEXT="und ggffs weitere"/>
|
||||
</node>
|
||||
<node CREATED="1485902832698" HGAP="48" ID="ID_1440190469" MODIFIED="1485902944593" TEXT="genau dies ist der UiManager" VSHIFT="14">
|
||||
<arrowlink COLOR="#75d3f9" DESTINATION="ID_1698853761" ENDARROW="Default" ENDINCLINATION="52;178;" ID="Arrow_ID_1969801735" STARTARROW="None" STARTINCLINATION="-140;-47;"/>
|
||||
<node CREATED="1485902832698" HGAP="48" ID="ID_1440190469" MODIFIED="1489460786881" TEXT="genau dies ist der InteractionDirector" VSHIFT="14">
|
||||
<arrowlink COLOR="#798eba" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-218;-590;" ID="Arrow_ID_757867749" STARTARROW="None" STARTINCLINATION="15;121;"/>
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
|
|
@ -1888,7 +1898,25 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1485917582383" FOLDED="true" HGAP="163" ID="ID_394170572" MODIFIED="1488423675637" TEXT="Struktur" VSHIFT="-30">
|
||||
<node COLOR="#6979a7" CREATED="1489460657437" HGAP="101" ID="ID_674641985" MODIFIED="1489460701613" TEXT="Einsicht: Problem verschiebt sich" VSHIFT="-20">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1489460707774" ID="ID_1580714352" MODIFIED="1489460718184" TEXT="Actions wird ein reiner Binde-Kontext"/>
|
||||
<node CREATED="1489460736370" ID="ID_794231700" MODIFIED="1489460755587" TEXT="delegiert wird an einen globalen controller"/>
|
||||
<node CREATED="1489460756271" ID="ID_392157120" MODIFIED="1489460770166">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<i>dort </i>wird der Kontext aufgegriffen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1485917582383" FOLDED="true" HGAP="163" ID="ID_394170572" MODIFIED="1489460652863" TEXT="Struktur" VSHIFT="-30">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485917587927" ID="ID_891876702" MODIFIED="1485917622265" TEXT="wohin kommen jetzt die Funktionen, die gebunden werden">
|
||||
<icon BUILTIN="help"/>
|
||||
|
|
@ -1992,7 +2020,7 @@
|
|||
<node CREATED="1487039125984" ID="ID_622974182" MODIFIED="1487039133027" TEXT="weiß, welche Aktion wohin zu delegieren ist"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488422770096" ID="ID_53463593" MODIFIED="1488422801797" TEXT="#1085 solve setup of top-level menu actions">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488422770096" HGAP="56" ID="ID_53463593" MODIFIED="1489462035367" TEXT="#1085 solve setup of top-level menu actions" VSHIFT="-17">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1488423688763" ID="ID_1950800234" MODIFIED="1488423701821" TEXT="UI-Komponenten">
|
||||
<node CREATED="1488423702977" ID="ID_292894978" MODIFIED="1488423843843" TEXT="TimelinePane">
|
||||
|
|
@ -2031,11 +2059,56 @@
|
|||
generisches <i>Öffnen</i>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1488423720319" ID="ID_1455353650" MODIFIED="1488423727098" TEXT="Sequence-Aktionen">
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1489461756655" ID="ID_1625364312" MODIFIED="1489461771628" TEXT="neue Sequenz">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1489461773213" ID="ID_344390825" MODIFIED="1489461824472" TEXT="als Treiber verwenden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...um die Entwicklung des Designs zu erzwingen
|
||||
</p>
|
||||
<p>
|
||||
und den Teufelskreis zu durchbrechen!
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1489461838228" ID="ID_283502486" MODIFIED="1489461843087" TEXT="im InteractionDirector"/>
|
||||
<node CREATED="1489461843747" ID="ID_1499714490" MODIFIED="1489461922546" TEXT="die Command-ID beziehen">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1489461856042" ID="ID_1097689316" MODIFIED="1489461862061" TEXT="bedingt Command-ID"/>
|
||||
<node CREATED="1489461862937" ID="ID_1649764088" MODIFIED="1489461871843" TEXT="bedingt Command-Definition"/>
|
||||
<node CREATED="1489461872367" ID="ID_1191906862" MODIFIED="1489461882010" TEXT="bedingt CmdAccessor"/>
|
||||
<node CREATED="1489461905083" ID="ID_1232900605" MODIFIED="1489461911390" TEXT="bedingt Service-Zugang"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1488423720319" ID="ID_1455353650" MODIFIED="1488423727098" TEXT="Sequence-Aktionen"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489461946997" HGAP="-10" ID="ID_1526466868" MODIFIED="1489462026528" TEXT="direkt von den Lambdas aus delegieren" VSHIFT="7">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
wir können den größten Teil dieser Einzeiler-Funktionen loswerden,
|
||||
</p>
|
||||
<p>
|
||||
da es nur darum geht, via globalCtx auf den passenden Controller zuzugreifen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485898796393" ID="ID_1217726538" MODIFIED="1485898814419" TEXT="#1069 how to refer to the current window">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
@ -2155,23 +2228,18 @@
|
|||
<node CREATED="1486942583053" ID="ID_1367249768" MODIFIED="1486942592343" TEXT="...und das wäre der InteractionDirector"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1487034156380" FOLDED="true" HGAP="29" ID="ID_1632778987" MODIFIED="1488494816719" TEXT="globaler Kontext" VSHIFT="11">
|
||||
<node CREATED="1487034156380" FOLDED="true" HGAP="29" ID="ID_1632778987" MODIFIED="1489460849340" TEXT="globaler Kontext" VSHIFT="11">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1487034162275" ID="ID_28375182" MODIFIED="1487034171926" TEXT="wenige, eng zusammenarbeitende Objekte"/>
|
||||
<node CREATED="1487034172393" ID="ID_1167812745" MODIFIED="1487034180237" TEXT="...von denen doch jedes seine Aufgabe hat"/>
|
||||
<node CREATED="1487034180712" ID="ID_1371598611" MODIFIED="1487034193170" TEXT="und jedes genau weiß, was die andern können"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1485454243767" ID="ID_3699127" MODIFIED="1485454247467" TEXT="konsistentes UI">
|
||||
<node CREATED="1485454248335" ID="ID_623536019" MODIFIED="1485454252273" TEXT="globales Menü"/>
|
||||
<node CREATED="1485454259637" ID="ID_432211008" MODIFIED="1485454262840" TEXT="globale Toolbar"/>
|
||||
<node CREATED="1485454252789" ID="ID_310049457" MODIFIED="1485454258553" TEXT="globale Aktionen"/>
|
||||
<node CREATED="1485454263876" ID="ID_543704434" MODIFIED="1485454270615" TEXT="globale Keybindings"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1486763185746" HGAP="33" ID="ID_362749694" MODIFIED="1488420115378" TEXT="InteractionDirector" VSHIFT="21">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1486763185746" HGAP="33" ID="ID_362749694" MODIFIED="1489460786881" TEXT="InteractionDirector" VSHIFT="21">
|
||||
<linktarget COLOR="#683c5b" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-394;0;" ID="Arrow_ID_1979576517" SOURCE="ID_113005643" STARTARROW="None" STARTINCLINATION="-24;-159;"/>
|
||||
<linktarget COLOR="#1b3863" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-518;1012;" ID="Arrow_ID_959577029" SOURCE="ID_735655054" STARTARROW="Default" STARTINCLINATION="-376;-568;"/>
|
||||
<linktarget COLOR="#798eba" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-218;-590;" ID="Arrow_ID_757867749" SOURCE="ID_1440190469" STARTARROW="None" STARTINCLINATION="15;121;"/>
|
||||
<linktarget COLOR="#5e4463" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-57;-739;" ID="Arrow_ID_1847127764" SOURCE="ID_474441211" STARTARROW="None" STARTINCLINATION="32;89;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1486763268223" ID="ID_199328732" MODIFIED="1486763277392" TEXT="nicht der Meister">
|
||||
|
|
@ -2210,7 +2278,7 @@
|
|||
<icon BUILTIN="flag-pink"/>
|
||||
<node CREATED="1486768080502" ID="ID_1759740464" MODIFIED="1487039233982" TEXT="Binde-Kontext für globale Aktionen"/>
|
||||
<node CREATED="1486768086869" ID="ID_173538981" MODIFIED="1488566299019" TEXT="Idee/Konzept für kontextabhängige Aktionen">
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1487119208622" FOLDED="true" ID="ID_728171298" MODIFIED="1488566307446" TEXT="Analyse anhand einiger Beispiele">
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1487119208622" FOLDED="true" ID="ID_728171298" MODIFIED="1489454868257" TEXT="Analyse anhand einiger Beispiele">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1488419440935" ID="ID_802346253" MODIFIED="1488419449712" TEXT="add Sequence">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -11552,14 +11620,25 @@
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489191208557" ID="ID_632390561" MODIFIED="1489191213157" TEXT="#1088 Command definition registration">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1489196546018" ID="ID_1282964530" MODIFIED="1489196556661" TEXT="ggfs nur vorläufige Lösung"/>
|
||||
<node CREATED="1489196562816" ID="ID_1001161089" MODIFIED="1489196567059" TEXT="siehe DummyCommand"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489191229098" ID="ID_341428100" MODIFIED="1489191638320" TEXT="#1089 Command instance management">
|
||||
<linktarget COLOR="#584d79" DESTINATION="ID_341428100" ENDARROW="Default" ENDINCLINATION="1995;-1317;" ID="Arrow_ID_879741123" SOURCE="ID_1331796226" STARTARROW="None" STARTINCLINATION="334;-13;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1489196572055" ID="ID_339289633" MODIFIED="1489196577154" TEXT="Command-ID">
|
||||
<node CREATED="1489196578470" ID="ID_1460242316" MODIFIED="1489196591032" TEXT="extensible ID anschauen"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489191252503" ID="ID_1621107057" MODIFIED="1489191308469" TEXT="#1090 Command access for UI-Elements">
|
||||
<arrowlink COLOR="#758ba4" DESTINATION="ID_827179653" ENDARROW="Default" ENDINCLINATION="173;83;" ID="Arrow_ID_57938013" STARTARROW="None" STARTINCLINATION="550;-93;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1489196597635" ID="ID_850892898" MODIFIED="1489196604278" TEXT="Access-Front-End">
|
||||
<node CREATED="1489196605530" ID="ID_1235925214" MODIFIED="1489196611189" TEXT="anschauen">
|
||||
<node CREATED="1489196613065" ID="ID_1738286518" MODIFIED="1489196617396" TEXT="Proxy-Instanz"/>
|
||||
<node CREATED="1489196617873" ID="ID_1676140831" MODIFIED="1489196620860" TEXT="Session Services"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue