]> O.S.I.I.S - jp/crow.git/commitdiff
modularize
authorjpbruyere <jp.bruyere@hotmail.com>
Sat, 13 Aug 2016 13:48:51 +0000 (15:48 +0200)
committerjpbruyere <jp.bruyere@hotmail.com>
Sat, 13 Aug 2016 13:48:51 +0000 (15:48 +0200)
src/GraphicObjects/ListBox.cs
src/GraphicObjects/TreeView.cs

index e1b82f19e0f737e76ab122d8b77a1f364465743e..315bad87d04d4616e939471f27a4a2b5d85d9a60 100644 (file)
@@ -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
index b7de4b69d898b5394d147cacdf7ff850013d121b..ef22826023b72e48d5e2d06380b4dbe366fa0ae0 100644 (file)
@@ -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;