Clip: draft the decision logic for the clip presentation mode
This commit is contained in:
parent
cfa8e87931
commit
765d124fff
6 changed files with 263 additions and 31 deletions
|
|
@ -155,6 +155,7 @@ namespace model {
|
|||
using Hooked = ViewHooked<WID,BASE>;
|
||||
using Canvas = CanvasHook<BASE>;
|
||||
|
||||
protected:
|
||||
Canvas&
|
||||
getCanvas()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -159,6 +159,7 @@ namespace timeline {
|
|||
target->buildMutator (buff);
|
||||
return true;
|
||||
}))
|
||||
//-Diff-Change-Listener----------------
|
||||
.onLocalChange ([this]()
|
||||
{
|
||||
this->resetAppearanceStyle();
|
||||
|
|
|
|||
|
|
@ -88,13 +88,14 @@ namespace timeline {
|
|||
|
||||
unique_ptr<ClipDelegate> widget_;
|
||||
|
||||
/** default level of detail presentation desired for each clip.
|
||||
* @note the actual appearance style is chosen based on this setting
|
||||
* yet limited by the additional information necessary to establish
|
||||
* a given level; e.g. name or content renderer must be available
|
||||
/** default maximum level of detail presentation desired for each clip.
|
||||
* @note the actual appearance style is chosen based on this setting, yet
|
||||
* limited by the additional information necessary to establish a
|
||||
* given level; e.g. name and content renderer must be available
|
||||
* to allow for a detailed rendering of the clip in the timeline. */
|
||||
static const ClipDelegate::Appearance defaultAppearance = ClipDelegate::COMPACT;
|
||||
|
||||
|
||||
public:
|
||||
ClipPresenter (ID, ctrl::BusTerm&, WidgetHook&, optional<Time> startTime);
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
//#include "lib/format-string.hpp"
|
||||
//#include "lib/format-cout.hpp"
|
||||
|
||||
//#include "lib/util.hpp"
|
||||
#include "lib/util.hpp"
|
||||
|
||||
//#include <algorithm>
|
||||
//#include <vector>
|
||||
|
|
@ -53,6 +53,7 @@
|
|||
//using Gtk::Widget;
|
||||
//using sigc::mem_fun;
|
||||
//using sigc::ptr_fun;
|
||||
using util::unConst;
|
||||
//using std::cout;
|
||||
//using std::endl;
|
||||
using std::optional;
|
||||
|
|
@ -77,8 +78,19 @@ namespace timeline {
|
|||
namespace {// details of concrete clip appearance styles...
|
||||
|
||||
using WidgetHook = model::CanvasHook<Gtk::Widget>;
|
||||
using HookedWidget = model::CanvasHooked<Gtk::Button, Gtk::Widget>; ///////////////////////////////////////////TICKET #1211 : need preliminary placeholder clip widget for timeline layout
|
||||
|
||||
using HookedWidget = model::CanvasHooked<Gtk::Button, Gtk::Widget>; ///////////////////////////////////////////TICKET #1211 : need preliminary placeholder clip widget for timeline layout
|
||||
|
||||
enum Mode { HIDDEN, SUMMARY, INDIVIDUAL };
|
||||
|
||||
inline Mode
|
||||
classify (ClipDelegate::Appearance appearance)
|
||||
{
|
||||
return appearance < ClipDelegate::SYMBOLIC? HIDDEN
|
||||
: appearance < ClipDelegate::ABRIDGED? SUMMARY
|
||||
: INDIVIDUAL;
|
||||
}
|
||||
|
||||
|
||||
class ClipData
|
||||
: public ClipDelegate
|
||||
, util::NonCopyable
|
||||
|
|
@ -87,28 +99,137 @@ namespace timeline {
|
|||
|
||||
/* === Interface ClipDelegate === */
|
||||
|
||||
Appearance
|
||||
currentAppearance() const override
|
||||
{
|
||||
return Appearance::PENDING;
|
||||
}
|
||||
|
||||
Appearance
|
||||
changeAppearance (Appearance desired) override
|
||||
{
|
||||
return currentAppearance();
|
||||
}
|
||||
|
||||
cuString
|
||||
getClipName() const override
|
||||
{
|
||||
return "lala LOLO"; ///////////////////////////////////////////////////////////////TICKET #1038 : data storage; here : store the clip name/ID
|
||||
}
|
||||
|
||||
Time
|
||||
getStartTime() const override
|
||||
{
|
||||
return Time::NEVER; ///////////////////////////////////////////////////////////////TICKET #1038 : data storage; here : store the clip start time
|
||||
}
|
||||
|
||||
WidgetHook&
|
||||
getCanvas() const override
|
||||
{
|
||||
return unConst(this)->display_;
|
||||
}
|
||||
|
||||
WidgetHook::Pos
|
||||
establishHookPoint (WidgetHook* newView) const override
|
||||
{
|
||||
if (not newView)
|
||||
newView = &display_;
|
||||
return newView->hookedAt (getStartTime(), defaultOffsetY);
|
||||
}
|
||||
|
||||
public:
|
||||
ClipData(WidgetHook& displayAnchor)
|
||||
: ClipDelegate{}
|
||||
, display_{displayAnchor}
|
||||
{ }
|
||||
|
||||
/** state switch ctor */
|
||||
ClipData(ClipDelegate& existing)
|
||||
: ClipDelegate{}
|
||||
, display_{existing.getCanvas()}
|
||||
{
|
||||
TODO("copy further clip presentation properties");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class ClipWidget
|
||||
: public HookedWidget
|
||||
, public ClipDelegate
|
||||
, util::NonCopyable
|
||||
{
|
||||
/* === Interface ClipDelegate === */
|
||||
|
||||
Appearance
|
||||
currentAppearance() const override
|
||||
{
|
||||
///////////////////////////////////////////////////////////////////////////////////////TICKET #1038 : determine appearance style dynamically
|
||||
return Appearance::COMPACT;
|
||||
}
|
||||
|
||||
Appearance
|
||||
changeAppearance (Appearance desired) override
|
||||
{
|
||||
///////////////////////////////////////////////////////////////////////////////////////TICKET #1038 : change possible appearance style dynamically
|
||||
return currentAppearance();
|
||||
}
|
||||
|
||||
cuString
|
||||
getClipName() const override
|
||||
{
|
||||
return this->get_label();
|
||||
}
|
||||
|
||||
Time
|
||||
getStartTime() const override
|
||||
{
|
||||
return Time::NEVER; ///////////////////////////////////////////////////////////////TICKET #1038 : data storage; here : store the clip start time
|
||||
}
|
||||
|
||||
WidgetHook&
|
||||
getCanvas() const override
|
||||
{
|
||||
UNIMPLEMENTED("sort the base access out"); //return static_cast<HookedWidget&> (unConst(*this)).getCanvas();
|
||||
}
|
||||
|
||||
WidgetHook::Pos
|
||||
establishHookPoint (WidgetHook* newView) const override
|
||||
{
|
||||
if (not newView)
|
||||
newView = &getCanvas();
|
||||
return newView->hookedAt (getStartTime(), defaultOffsetY);
|
||||
} ///////////////////////////////////////////////////////////////TICKET #1038 : TODO mostly duplicated implementation
|
||||
|
||||
|
||||
public:
|
||||
ClipWidget(WidgetHook::Pos hookPoint, uString clipName)
|
||||
: HookedWidget{hookPoint, clipName}
|
||||
, ClipDelegate{}
|
||||
{ }
|
||||
|
||||
/** state switch ctor */
|
||||
ClipWidget(ClipDelegate& existing, WidgetHook* newView)
|
||||
: HookedWidget{existing.establishHookPoint(newView), existing.getClipName()}
|
||||
, ClipDelegate{}
|
||||
{
|
||||
TODO("copy further clip presentation properties");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
inline ClipDelegate*
|
||||
buildDelegateFor (Mode newMode, ClipDelegate& existingDelegate, WidgetHook* newView =0)
|
||||
{
|
||||
switch (newMode)
|
||||
{
|
||||
case HIDDEN:
|
||||
return new ClipData (existingDelegate);
|
||||
case INDIVIDUAL:
|
||||
return new ClipWidget (existingDelegate, newView);
|
||||
case SUMMARY:
|
||||
UNIMPLEMENTED ("Summary/Overview presentation style");
|
||||
}
|
||||
}
|
||||
|
||||
}//(End)clip appearance details.
|
||||
|
||||
|
||||
|
|
@ -118,9 +239,20 @@ namespace timeline {
|
|||
ClipDelegate::Appearance
|
||||
ClipDelegate::switchAppearance (PDelegate& manager, Appearance desired, WidgetHook* newView)
|
||||
{
|
||||
UNIMPLEMENTED ("clip appearance style state management");
|
||||
REQUIRE (manager, "pre-existing clip delegate required");
|
||||
Mode curMode = classify (manager->currentAppearance());
|
||||
Mode newMode = classify (desired);
|
||||
if (newMode != curMode or newView)
|
||||
{ // need to switch the clip delegate
|
||||
PDelegate newState (buildDelegateFor (newMode, *manager, newView));
|
||||
swap (manager, newState);
|
||||
return manager->changeAppearance (desired);
|
||||
}
|
||||
else
|
||||
return manager->changeAppearance (desired);
|
||||
}
|
||||
|
||||
|
||||
ClipDelegate::Appearance
|
||||
ClipDelegate::buildDelegate (PDelegate& manager, WidgetHook& view, optional<Time> startTime)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ namespace timeline {
|
|||
ClipDelegate();
|
||||
|
||||
|
||||
enum Appearance {PENDING, SYMBOLIC, ABRIDGED, COMPACT, EXPANDED, DEGRADED};
|
||||
enum Appearance {PENDING, SYMBOLIC, DEGRADED, ABRIDGED, COMPACT, EXPANDED};
|
||||
|
||||
|
||||
/** vertical offset below the track start */
|
||||
|
|
@ -145,10 +145,31 @@ namespace timeline {
|
|||
/** placeholder name -- typically overridden from the model */
|
||||
static const string defaultName;
|
||||
|
||||
/** presentation mode and style currently employed */
|
||||
virtual Appearance currentAppearance() const =0;
|
||||
|
||||
/** alter appearance style, to the degree possible for this delegate.
|
||||
* @return the new #Appearance style acquired */
|
||||
virtual Appearance changeAppearance (Appearance desired) =0;
|
||||
|
||||
/** human readable rendering of the clip's name or identity */
|
||||
virtual cuString getClipName() const =0;
|
||||
|
||||
virtual Time getStartTime() const =0;
|
||||
|
||||
virtual WidgetHook& getCanvas() const =0;
|
||||
|
||||
/** (re)establish current canvas attachment coordinates,
|
||||
* thereby possibly switching to a new canvas implementation
|
||||
* @param newView (optional) new canvas; use existing if not given
|
||||
* @return record defining the canvas and the coordinates thereon
|
||||
*/
|
||||
virtual WidgetHook::Pos establishHookPoint (WidgetHook* newView) const =0;
|
||||
|
||||
|
||||
/** request to change the clip delegate's appearance style, if possible.
|
||||
* @param manager entity to hold and maintain this specific appearance state.
|
||||
* @param desired the intended style of mode to achieve
|
||||
* @param desired the intended style or mode to acquire
|
||||
* @param displayAnchor (optionally) a different view to hook up the delegate.
|
||||
* @return the actual mode the presentation was switched to
|
||||
* @remark switching the appearance style is a state transition; sometimes
|
||||
|
|
@ -161,11 +182,11 @@ namespace timeline {
|
|||
* with the current configuration.
|
||||
* @note Default and fallback appearance style is `PENDING`, which turns the
|
||||
* delegate into a mere data record without visual representation.
|
||||
* @note whenever a ViewHook (instance) different than the existing one is
|
||||
* given, the existing widget / delegate will be destroyed and
|
||||
* @note whenever a WidgetHook (instance) different than the existing one
|
||||
* is given, the existing widget / delegate will be destroyed and
|
||||
* replaced by a suitable copy hooked up into the new display.
|
||||
* The ctor #ClipDelegate(WidgetViewHook) ensures there is
|
||||
* always a display_ (ViewHook) to refer to.
|
||||
* The base ctor #ClipData(WidgetHook&) ensures there is
|
||||
* always a display_ (WidgetHook) to refer to.
|
||||
*/
|
||||
static Appearance switchAppearance (PDelegate& manager,
|
||||
Appearance desired =PENDING,
|
||||
|
|
|
|||
|
|
@ -6746,7 +6746,7 @@
|
|||
</node>
|
||||
<node CREATED="1489191732869" ID="ID_1031180144" MODIFIED="1518487921062" TEXT="nicht sofort zu lösen"/>
|
||||
<node CREATED="1489191744764" ID="ID_898481930" MODIFIED="1518487921062" TEXT="aber Grundlagen legen">
|
||||
<arrowlink COLOR="#606d94" DESTINATION="ID_346158251" ENDARROW="Default" ENDINCLINATION="842;21;" ID="Arrow_ID_726918944" STARTARROW="None" STARTINCLINATION="1012;0;"/>
|
||||
<arrowlink COLOR="#606d94" DESTINATION="ID_346158251" ENDARROW="Default" ENDINCLINATION="883;21;" ID="Arrow_ID_726918944" STARTARROW="None" STARTINCLINATION="1012;0;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1492461289101" ID="ID_1507239589" MODIFIED="1518487921062" TEXT="Frage: Objekt-Referenzen">
|
||||
|
|
@ -16696,7 +16696,7 @@
|
|||
</node>
|
||||
<node CREATED="1489777837120" ID="ID_466927949" MODIFIED="1557498707220" TEXT="Ort für Command-Definitionen"/>
|
||||
<node COLOR="#338800" CREATED="1489777846095" ID="ID_1401258681" MODIFIED="1575131582794" TEXT="Design Proc-Command-Framework vorantreiben">
|
||||
<arrowlink COLOR="#352c7d" DESTINATION="ID_1622574347" ENDARROW="Default" ENDINCLINATION="-240;-3336;" ID="Arrow_ID_1512127407" STARTARROW="None" STARTINCLINATION="1996;0;"/>
|
||||
<arrowlink COLOR="#352c7d" DESTINATION="ID_1622574347" ENDARROW="Default" ENDINCLINATION="-220;-3339;" ID="Arrow_ID_1512127407" STARTARROW="None" STARTINCLINATION="2016;0;"/>
|
||||
<font NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
|
|
@ -19182,8 +19182,8 @@
|
|||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1576757730509" FOLDED="true" ID="ID_1949130658" MODIFIED="1584932567087" TEXT="»Widget-Position« heraus-abstrahieren">
|
||||
<linktarget COLOR="#605bb8" DESTINATION="ID_1949130658" ENDARROW="Default" ENDINCLINATION="204;611;" ID="Arrow_ID_993970158" SOURCE="ID_1816490333" STARTARROW="None" STARTINCLINATION="299;12;"/>
|
||||
<linktarget COLOR="#47cdcd" DESTINATION="ID_1949130658" ENDARROW="Default" ENDINCLINATION="-1150;77;" ID="Arrow_ID_662295339" SOURCE="ID_730955223" STARTARROW="None" STARTINCLINATION="877;53;"/>
|
||||
<linktarget COLOR="#605bb8" DESTINATION="ID_1949130658" ENDARROW="Default" ENDINCLINATION="204;611;" ID="Arrow_ID_993970158" SOURCE="ID_1816490333" STARTARROW="None" STARTINCLINATION="299;12;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1576757867075" ID="ID_1947629675" MODIFIED="1576757891150" TEXT="der Themenkomplex "move()" steht isoliert da">
|
||||
<icon BUILTIN="idea"/>
|
||||
|
|
@ -22098,8 +22098,7 @@
|
|||
da weit über den Code verstreut
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1584888427300" ID="ID_1626398524" MODIFIED="1584888438510" TEXT="löst nicht das Problem mit dem re-Konstruieren"/>
|
||||
<node CREATED="1584888442705" ID="ID_1729804708" MODIFIED="1584888451663" TEXT="unterstützt keine nachträglichen Anpassungen"/>
|
||||
|
|
@ -23001,7 +23000,7 @@
|
|||
</node>
|
||||
</node>
|
||||
<node CREATED="1575050510878" ID="ID_350484232" MODIFIED="1575580714937" TEXT="Basis ist vom Diff-System zu leisten">
|
||||
<arrowlink COLOR="#624d7d" DESTINATION="ID_101148427" ENDARROW="Default" ENDINCLINATION="-3637;-782;" ID="Arrow_ID_1277214644" STARTARROW="None" STARTINCLINATION="2973;244;"/>
|
||||
<arrowlink COLOR="#624d7d" DESTINATION="ID_101148427" ENDARROW="Default" ENDINCLINATION="-3637;-782;" ID="Arrow_ID_1277214644" STARTARROW="None" STARTINCLINATION="2954;247;"/>
|
||||
<linktarget COLOR="#4d81bf" DESTINATION="ID_350484232" ENDARROW="Default" ENDINCLINATION="-77;-68;" ID="Arrow_ID_658076840" SOURCE="ID_932505699" STARTARROW="None" STARTINCLINATION="-201;12;"/>
|
||||
<node COLOR="#338800" CREATED="1576168044826" ID="ID_1912653386" MODIFIED="1576441631231" TEXT="#1206 diff structure change listener">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -27951,8 +27950,7 @@
|
|||
Nebenbei bemerkt: die Aktion muß <b>idempotent</b> sein
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -27997,12 +27995,11 @@
|
|||
wenn man das naiv coden würde, dann würden wir für jeden Clip erst mal einen ClipData-Placeholder erzeugen, nur um dann, nach dem Empfangen des vollständigen Diff, diesen wieder zu deallozieren und dafür ein ClipWidget zu erzeugen...
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1584201841529" ID="ID_1310327519" MODIFIED="1584202923362" TEXT="Nebengedanke: Eigenheiten des Populations-Diff">
|
||||
<arrowlink COLOR="#2e3f60" DESTINATION="ID_1634323626" ENDARROW="Default" ENDINCLINATION="-1672;80;" ID="Arrow_ID_1671674197" STARTARROW="None" STARTINCLINATION="-1515;90;"/>
|
||||
<arrowlink COLOR="#2e3f60" DESTINATION="ID_1634323626" ENDARROW="Default" ENDINCLINATION="-1672;80;" ID="Arrow_ID_1671674197" STARTARROW="None" STARTINCLINATION="-1522;89;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -28184,6 +28181,85 @@
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584319635024" ID="ID_1833569495" MODIFIED="1584932955050" TEXT="Logik im Detail ausimplementieren">
|
||||
<linktarget COLOR="#4768d0" DESTINATION="ID_1833569495" ENDARROW="Default" ENDINCLINATION="943;-75;" ID="Arrow_ID_416244548" SOURCE="ID_1737560927" STARTARROW="None" STARTINCLINATION="207;23;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1585012756014" HGAP="67" ID="ID_1256841575" MODIFIED="1585012768478" TEXT="konzeptionell...." VSHIFT="-6">
|
||||
<node CREATED="1585012775180" HGAP="101" ID="ID_1578039290" MODIFIED="1585012804301" TEXT="Modus vs Stil" VSHIFT="13">
|
||||
<node CREATED="1585012812495" ID="ID_112398937" MODIFIED="1585012828657" TEXT="Modus ist die grundlegende Form">
|
||||
<node CREATED="1585012830612" ID="ID_1153727552" MODIFIED="1585012839351" TEXT="verborgen (Datencontainer)"/>
|
||||
<node CREATED="1585012840187" ID="ID_313601159" MODIFIED="1585012848078" TEXT="individuelle Anzeige"/>
|
||||
<node CREATED="1585012848975" ID="ID_1618567382" MODIFIED="1585012862104" TEXT="Teil einer Übersichtsgraphik"/>
|
||||
</node>
|
||||
<node CREATED="1585012925784" ID="ID_1875100027" MODIFIED="1585012968430" TEXT="Modus entscheidet über das Delegate"/>
|
||||
<node CREATED="1585012969538" ID="ID_623305880" MODIFIED="1585012977855" TEXT="das Delegate entscheidet über den Stil"/>
|
||||
</node>
|
||||
<node CREATED="1585013243486" HGAP="65" ID="ID_1462532047" MODIFIED="1585013261423" TEXT="Ordnung der Modi" VSHIFT="4">
|
||||
<node CREATED="1585013262627" ID="ID_1902435778" MODIFIED="1585013271278" TEXT="ist nicht linear-parametrisch"/>
|
||||
<node CREATED="1585013272098" ID="ID_1116174873" MODIFIED="1585013276773" TEXT="sondern eine Verzweigung">
|
||||
<node CREATED="1585013324819" ID="ID_152773896" MODIFIED="1585013334819" TEXT="könnte auch noch komplexer werden"/>
|
||||
<node CREATED="1585013335575" ID="ID_1950230557" MODIFIED="1585013822494" TEXT="es sind wenige, und essentiell festgelegte">
|
||||
<arrowlink COLOR="#653773" DESTINATION="ID_645312696" ENDARROW="Default" ENDINCLINATION="114;0;" ID="Arrow_ID_192929536" STARTARROW="Default" STARTINCLINATION="139;0;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1585010903183" ID="ID_1658829752" MODIFIED="1585010924829" TEXT="Kernfragen">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1585010871688" ID="ID_1289641734" MODIFIED="1585010901339" TEXT="wer entscheidet über den möglichen Stil?">
|
||||
<node CREATED="1585011007329" ID="ID_1945212792" MODIFIED="1585928197710" TEXT="die Factory">
|
||||
<icon BUILTIN="smily_bad"/>
|
||||
<node CREATED="1585013037644" ID="ID_765039376" MODIFIED="1585928217290" TEXT="das geht zwar immer">
|
||||
<icon BUILTIN="smiley-angry"/>
|
||||
</node>
|
||||
<node CREATED="1585013043104" ID="ID_645312696" MODIFIED="1585013815190" TEXT="..würde aber die Logik fest verdrahten">
|
||||
<linktarget COLOR="#653773" DESTINATION="ID_645312696" ENDARROW="Default" ENDINCLINATION="114;0;" ID="Arrow_ID_192929536" SOURCE="ID_1950230557" STARTARROW="Default" STARTINCLINATION="139;0;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1585011013867" ID="ID_1777393889" MODIFIED="1585011031594" TEXT="Methode im Basis-Delegate">
|
||||
<node CREATED="1585013060956" ID="ID_1696216374" MODIFIED="1585013076512" TEXT="kann nur den Zugang zum Modus weisen"/>
|
||||
<node CREATED="1585013104936" ID="ID_280575875" MODIFIED="1585013115674" TEXT="kann aber ekennen, ob das Delgate wechselt"/>
|
||||
</node>
|
||||
<node CREATED="1585011032442" ID="ID_1163292905" MODIFIED="1585011037825" TEXT="das konkrete Delegate?">
|
||||
<node CREATED="1585013118735" ID="ID_1852369137" MODIFIED="1585013129889" TEXT="nur dieses kennt die Feinheiten des Stils"/>
|
||||
<node CREATED="1585013162456" ID="ID_1644140186" MODIFIED="1585013172896" TEXT="und justiert diese in einer virtuellen Methode"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1585010936491" ID="ID_418040349" MODIFIED="1585013943024" TEXT="wer entscheidet über den konkreten Delegate-Typ?"/>
|
||||
<node CREATED="1585013943839" ID="ID_1056640354" MODIFIED="1585013970000" TEXT="kann ein bereits eingeschlagener Weg abelehnt werden?">
|
||||
<node CREATED="1585013977195" ID="ID_727500697" MODIFIED="1585013993925" TEXT="d.h. wer prüft die Mindestanforderungen?">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1585931039924" ID="ID_29030858" MODIFIED="1585931110002" TEXT="Problem Mindestlänge">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1585931060297" ID="ID_1656250390" MODIFIED="1585931069044" TEXT="eigentlich ein generisches Kriterium"/>
|
||||
<node CREATED="1585931069824" ID="ID_432040203" MODIFIED="1585931078051" TEXT="tritt aber repliziert auf Blatt-Ebene auf"/>
|
||||
<node CREATED="1585931078903" ID="ID_702074103" MODIFIED="1585931095124" TEXT="Gefahr der massiven Daten-Duplikation"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1585928556619" ID="ID_1959943787" MODIFIED="1585928560215" TEXT="Kriterien">
|
||||
<node CREATED="1585928575585" ID="ID_1181266579" MODIFIED="1585928581974" TEXT="individueller Clip">
|
||||
<node CREATED="1585928654303" ID="ID_1323996178" MODIFIED="1585928665049" TEXT="hat Startpunkt"/>
|
||||
<node CREATED="1585928673364" ID="ID_1131131049" MODIFIED="1585928737490" TEXT="Mindestlänge"/>
|
||||
</node>
|
||||
<node CREATED="1585928582857" ID="ID_1870451258" MODIFIED="1585928588716" TEXT="Teil einer Übersicht">
|
||||
<node CREATED="1585930006760" ID="ID_1545926932" MODIFIED="1585930010979" TEXT="hat Startpunkt"/>
|
||||
<node CREATED="1585931000122" ID="ID_121156248" MODIFIED="1585931009316" TEXT="Wunsch oder Pin auf diesen Modus"/>
|
||||
</node>
|
||||
<node CREATED="1585928596439" ID="ID_1983527574" MODIFIED="1585928606156" TEXT="sonst: Datencontainer">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1585010953762" ID="ID_236488907" MODIFIED="1585010961491" TEXT="wer baut/klont ein Delegate?"/>
|
||||
</node>
|
||||
<node CREATED="1585924331517" HGAP="27" ID="ID_1558559501" MODIFIED="1585924351368" TEXT="state pattern" VSHIFT="26">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1585924411195" ID="ID_1837360138" MODIFIED="1585924430097" TEXT="das Clip-Delegate ist eine natürliche State-Repräasentation">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1585924431448" ID="ID_1611710777" MODIFIED="1585924442213" TEXT="Schwachstelle: state handling API">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1585924446046" ID="ID_554920835" MODIFIED="1585924462752" TEXT="dieses wird auf äußerer/innerer Kapsel aufgedoppelt"/>
|
||||
<node CREATED="1585924468627" ID="ID_1944983930" MODIFIED="1585924475997" TEXT="was brauchen wir hier für Operationen?"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1584319522106" ID="ID_600779996" MODIFIED="1584319541312" TEXT="Vorsicht Falle: Kopieren beim Wechsel des Anzeigestils">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
|
|
@ -28301,8 +28377,8 @@
|
|||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584932054082" ID="ID_535289114" MODIFIED="1584932261288" TEXT="#1216 Some UI components are still connected to the backbone at shutdown">
|
||||
<linktarget COLOR="#d23194" DESTINATION="ID_535289114" ENDARROW="Default" ENDINCLINATION="90;0;" ID="Arrow_ID_186398670" SOURCE="ID_429363053" STARTARROW="None" STARTINCLINATION="110;9;"/>
|
||||
<linktarget COLOR="#b183a2" DESTINATION="ID_535289114" ENDARROW="Default" ENDINCLINATION="-2880;0;" ID="Arrow_ID_1219325605" SOURCE="ID_1234616959" STARTARROW="None" STARTINCLINATION="595;36;"/>
|
||||
<linktarget COLOR="#d23194" DESTINATION="ID_535289114" ENDARROW="Default" ENDINCLINATION="90;0;" ID="Arrow_ID_186398670" SOURCE="ID_429363053" STARTARROW="None" STARTINCLINATION="110;9;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -34849,7 +34925,7 @@
|
|||
<node CREATED="1489191126256" HGAP="24" ID="ID_127004361" MODIFIED="1518487921092" TEXT="Tickets" VSHIFT="26">
|
||||
<icon BUILTIN="info"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489191161395" ID="ID_346158251" MODIFIED="1518487921092" TEXT="#1087 GUI/Session command handling">
|
||||
<linktarget COLOR="#606d94" DESTINATION="ID_346158251" ENDARROW="Default" ENDINCLINATION="842;21;" ID="Arrow_ID_726918944" SOURCE="ID_898481930" STARTARROW="None" STARTINCLINATION="1012;0;"/>
|
||||
<linktarget COLOR="#606d94" DESTINATION="ID_346158251" ENDARROW="Default" ENDINCLINATION="883;21;" ID="Arrow_ID_726918944" SOURCE="ID_898481930" STARTARROW="None" STARTINCLINATION="1012;0;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1489191208557" ID="ID_632390561" MODIFIED="1561827465704" TEXT="#1088 Command definition registration">
|
||||
|
|
@ -36062,7 +36138,7 @@
|
|||
</node>
|
||||
</node>
|
||||
<node COLOR="#252298" CREATED="1489546623162" HGAP="-24" ID="ID_1622574347" MODIFIED="1575131582794" TEXT="was wird gebraucht" VSHIFT="21">
|
||||
<linktarget COLOR="#352c7d" DESTINATION="ID_1622574347" ENDARROW="Default" ENDINCLINATION="-240;-3336;" ID="Arrow_ID_1512127407" SOURCE="ID_1401258681" STARTARROW="None" STARTINCLINATION="1996;0;"/>
|
||||
<linktarget COLOR="#352c7d" DESTINATION="ID_1622574347" ENDARROW="Default" ENDINCLINATION="-220;-3339;" ID="Arrow_ID_1512127407" SOURCE="ID_1401258681" STARTARROW="None" STARTINCLINATION="2016;0;"/>
|
||||
<font NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="help"/>
|
||||
<node COLOR="#f10a1a" CREATED="1489546678250" ID="ID_228157787" MODIFIED="1518487921093" TEXT="Vorsicht UI-Programmierung">
|
||||
|
|
@ -37719,7 +37795,7 @@
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1573837634757" ID="ID_101148427" MODIFIED="1575577381370" TEXT="Aufgabe: Ordnung (re)Konstruieren">
|
||||
<linktarget COLOR="#624d7d" DESTINATION="ID_101148427" ENDARROW="Default" ENDINCLINATION="-3637;-782;" ID="Arrow_ID_498364014" SOURCE="ID_646844971" STARTARROW="None" STARTINCLINATION="2862;94;"/>
|
||||
<linktarget COLOR="#624d7d" DESTINATION="ID_101148427" ENDARROW="Default" ENDINCLINATION="-3637;-782;" ID="Arrow_ID_1277214644" SOURCE="ID_350484232" STARTARROW="None" STARTINCLINATION="2973;244;"/>
|
||||
<linktarget COLOR="#624d7d" DESTINATION="ID_101148427" ENDARROW="Default" ENDINCLINATION="-3637;-782;" ID="Arrow_ID_1277214644" SOURCE="ID_350484232" STARTARROW="None" STARTINCLINATION="2954;247;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1573837829595" ID="ID_613778773" MODIFIED="1573837833320" TEXT="immer wenn...">
|
||||
<node CREATED="1573837834482" ID="ID_980057100" MODIFIED="1573837839549" TEXT="ein Element hinzugekommen ist"/>
|
||||
|
|
@ -46315,7 +46391,7 @@
|
|||
<node CREATED="1584202239940" ID="ID_1326489257" MODIFIED="1584202242808" TEXT="Wert-Manipulation"/>
|
||||
</node>
|
||||
<node CREATED="1584201875333" ID="ID_1634323626" MODIFIED="1584202923362" TEXT="Konstruktor vs. Populations-Diff">
|
||||
<linktarget COLOR="#2e3f60" DESTINATION="ID_1634323626" ENDARROW="Default" ENDINCLINATION="-1672;80;" ID="Arrow_ID_1671674197" SOURCE="ID_1310327519" STARTARROW="None" STARTINCLINATION="-1515;90;"/>
|
||||
<linktarget COLOR="#2e3f60" DESTINATION="ID_1634323626" ENDARROW="Default" ENDINCLINATION="-1672;80;" ID="Arrow_ID_1671674197" SOURCE="ID_1310327519" STARTARROW="None" STARTINCLINATION="-1522;89;"/>
|
||||
<node CREATED="1584202280926" ID="ID_1191279412" MODIFIED="1584202293547" TEXT="Objekte geben Invarianten via Konstruktor vor"/>
|
||||
<node CREATED="1584202294330" ID="ID_930873161" MODIFIED="1584202321186" TEXT="INS liefert einen Wert ohne Einschränkungen"/>
|
||||
<node CREATED="1584202321796" ID="ID_78459313" MODIFIED="1584202344074" TEXT="Diskrepanz -> Policy">
|
||||
|
|
|
|||
Loading…
Reference in a new issue