From 1f1182331f611acc691550e83f8ea2fd6890091c Mon Sep 17 00:00:00 2001 From: MichalMoskal Date: Thu, 14 Oct 2010 21:46:08 +0000 Subject: Move SkeletonItem to a separate file --- Source/ModelViewer/Main.cs | 99 ----------------------------------- Source/ModelViewer/ModelViewer.csproj | 1 + Source/ModelViewer/TreeSkeleton.cs | 98 ++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 99 deletions(-) create mode 100644 Source/ModelViewer/TreeSkeleton.cs diff --git a/Source/ModelViewer/Main.cs b/Source/ModelViewer/Main.cs index 985d0211..c1801f4c 100644 --- a/Source/ModelViewer/Main.cs +++ b/Source/ModelViewer/Main.cs @@ -69,13 +69,6 @@ namespace Microsoft.Boogie.ModelViewer { currentState = id; SyncListView(); - - /* - - SkeletonItem sel = null; - if (currentStateView.SelectedItems.Count > 0) - sel = ((DisplayItem)currentStateView.SelectedItems[0]).skel; - */ } internal void Activate(TreeNode treeNode) @@ -105,9 +98,7 @@ namespace Microsoft.Boogie.ModelViewer var textBrush = Brushes.Black; if (currentStateView.SelectedIndices.Count > 0 && currentStateView.SelectedIndices[0] == e.ItemIndex) { - // Draw the background and focus rectangle for a selected item. e.Graphics.FillRectangle(Brushes.Navy, rect); - // e.DrawFocusRectangle(); textBrush = Brushes.White; } else { e.Graphics.FillRectangle(Brushes.White, rect); @@ -240,96 +231,6 @@ namespace Microsoft.Boogie.ModelViewer } - internal class SkeletonItem - { - readonly string name; - readonly List children = new List(); - internal readonly IDisplayNode[] displayNodes; - readonly SkeletonItem parent; - readonly Main main; - internal readonly int level; - internal bool expanded, wasExpanded; - - public void Iter(Action handler) - { - handler(this); - children.Iter(u => u.Iter(handler)); - } - - public IEnumerable RecChildren - { - get - { - if (expanded) { - foreach (var c in children) { - yield return c; - foreach (var ch in c.RecChildren) - yield return ch; - } - } - } - } - - public void PopulateRoot(IEnumerable states) - { - var i = 0; - foreach(var s in states) { - displayNodes[i++] = new ContainerNode(this.name, x => x, s.Nodes); - } - } - - public SkeletonItem(Main m, int stateCount) - { - name = ""; - main = m; - displayNodes = new IDisplayNode[stateCount]; - } - - internal SkeletonItem(string n, SkeletonItem par) - : this(par.main, par.displayNodes.Length) - { - parent = par; - name = n; - level = par.level + 1; - } - - public bool Expandable - { - get { return displayNodes.Any(d => d != null && d.Expandable); } - } - - public bool Expanded - { - get { return expanded; } - set - { - if (!value) { - expanded = false; - } else { - if (expanded) return; - expanded = true; - if (wasExpanded) return; - wasExpanded = true; - - var created = new Dictionary(); - for (int i = 0; i < displayNodes.Length; ++i) { - var dn = displayNodes[i]; - if (dn == null || !dn.Expandable) continue; - foreach (var child in dn.Expand()) { - SkeletonItem skelChild; - if (!created.TryGetValue(child.EdgeName, out skelChild)) { - skelChild = new SkeletonItem(child.EdgeName, this); - created.Add(child.EdgeName, skelChild); - children.Add(skelChild); - } - skelChild.displayNodes[i] = child; - } - } - } - } - } - } - internal class DisplayItem : ListViewItem { internal SkeletonItem skel; diff --git a/Source/ModelViewer/ModelViewer.csproj b/Source/ModelViewer/ModelViewer.csproj index a2d22f30..8acb4760 100644 --- a/Source/ModelViewer/ModelViewer.csproj +++ b/Source/ModelViewer/ModelViewer.csproj @@ -83,6 +83,7 @@ SearchBox.cs + Main.cs diff --git a/Source/ModelViewer/TreeSkeleton.cs b/Source/ModelViewer/TreeSkeleton.cs new file mode 100644 index 00000000..47f65e5d --- /dev/null +++ b/Source/ModelViewer/TreeSkeleton.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Microsoft.Boogie.ModelViewer +{ + internal class SkeletonItem + { + readonly string name; + readonly List children = new List(); + internal readonly IDisplayNode[] displayNodes; + readonly SkeletonItem parent; + readonly Main main; + internal readonly int level; + internal bool expanded, wasExpanded; + + public void Iter(Action handler) + { + handler(this); + children.Iter(u => u.Iter(handler)); + } + + public IEnumerable RecChildren + { + get + { + if (expanded) { + foreach (var c in children) { + yield return c; + foreach (var ch in c.RecChildren) + yield return ch; + } + } + } + } + + public void PopulateRoot(IEnumerable states) + { + var i = 0; + foreach (var s in states) { + displayNodes[i++] = new ContainerNode(this.name, x => x, s.Nodes); + } + } + + public SkeletonItem(Main m, int stateCount) + { + name = ""; + main = m; + displayNodes = new IDisplayNode[stateCount]; + } + + internal SkeletonItem(string n, SkeletonItem par) + : this(par.main, par.displayNodes.Length) + { + parent = par; + name = n; + level = par.level + 1; + } + + public bool Expandable + { + get { return displayNodes.Any(d => d != null && d.Expandable); } + } + + public bool Expanded + { + get { return expanded; } + set + { + if (!value) { + expanded = false; + } else { + if (expanded) return; + expanded = true; + if (wasExpanded) return; + wasExpanded = true; + + var created = new Dictionary(); + for (int i = 0; i < displayNodes.Length; ++i) { + var dn = displayNodes[i]; + if (dn == null || !dn.Expandable) continue; + foreach (var child in dn.Expand()) { + SkeletonItem skelChild; + if (!created.TryGetValue(child.EdgeName, out skelChild)) { + skelChild = new SkeletonItem(child.EdgeName, this); + created.Add(child.EdgeName, skelChild); + children.Add(skelChild); + } + skelChild.displayNodes[i] = child; + } + } + } + } + } + } + +} -- cgit v1.2.3