From: jpbruyere Date: Sat, 13 Aug 2016 13:48:51 +0000 (+0200) Subject: modularize X-Git-Tag: v0.4~7^2~4 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=4f1128a8001b90e1d163056ef66763bc3b7b8576;p=jp%2Fcrow.git modularize --- diff --git a/src/GraphicObjects/ListBox.cs b/src/GraphicObjects/ListBox.cs index e1b82f19..315bad87 100644 --- a/src/GraphicObjects/ListBox.cs +++ b/src/GraphicObjects/ListBox.cs @@ -162,36 +162,8 @@ namespace Crow if (cancelLoading) return; - GraphicObject g = null; - ItemTemplate iTemp = null; - Type dataType = data [i].GetType (); + loadItem (i, page); - if (ItemTemplates.ContainsKey (dataType.FullName)) - iTemp = ItemTemplates [dataType.FullName]; - else - iTemp = ItemTemplates ["default"]; - - lock (Interface.CurrentInterface.LayoutMutex) { - g = iTemp.CreateInstance(); - page.AddChild (g); - g.DataSource = data [i]; - } - if (this is TreeView) { - TreeView tv = this as TreeView; - while (!tv.IsRoot) { - ILayoutable tmp = tv.Parent; - while (!(tmp is TreeView)) { - tmp = tmp.Parent; - } - tv = tmp as TreeView; - } - g.MouseClick += tv.itemClick; - }else - g.MouseClick += itemClick; - - if (iTemp.Expand != null && g is Expandable) { - (g as Expandable).Expand += iTemp.Expand; - } //g.LogicalParent = this; } @@ -205,6 +177,31 @@ namespace Crow loadingTime.ElapsedMilliseconds, this.ToString()); #endif } + protected void loadItem(int i, Group page){ + GraphicObject g = null; + ItemTemplate iTemp = null; + Type dataType = data [i].GetType (); + + if (ItemTemplates.ContainsKey (dataType.FullName)) + iTemp = ItemTemplates [dataType.FullName]; + else + iTemp = ItemTemplates ["default"]; + + lock (Interface.CurrentInterface.LayoutMutex) { + g = iTemp.CreateInstance(); + page.AddChild (g); + g.DataSource = data [i]; + } + + registerItemClick (g); + + if (iTemp.Expand != null && g is Expandable) { + (g as Expandable).Expand += iTemp.Expand; + } + } + protected virtual void registerItemClick(GraphicObject g){ + g.MouseClick += itemClick; + } protected void _list_LayoutChanged (object sender, LayoutingEventArgs e) { #if DEBUG_LAYOUTING diff --git a/src/GraphicObjects/TreeView.cs b/src/GraphicObjects/TreeView.cs index b7de4b69..ef228260 100644 --- a/src/GraphicObjects/TreeView.cs +++ b/src/GraphicObjects/TreeView.cs @@ -78,6 +78,20 @@ namespace Crow "" : selectedItemContainer.DataSource; } } + + protected override void registerItemClick (GraphicObject g) + { + //register ItemClick on the Root node + TreeView tv = this as TreeView; + while (!tv.IsRoot) { + ILayoutable tmp = tv.Parent; + while (!(tmp is TreeView)) { + tmp = tmp.Parent; + } + tv = tmp as TreeView; + } + g.MouseClick += tv.itemClick; + } internal override void itemClick (object sender, MouseButtonEventArgs e) { GraphicObject tmp = sender as GraphicObject;