summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar MichalMoskal <unknown>2010-10-14 21:46:08 +0000
committerGravatar MichalMoskal <unknown>2010-10-14 21:46:08 +0000
commit1f1182331f611acc691550e83f8ea2fd6890091c (patch)
tree1b62ce925b772e6d5cba3d4b0594ba08d3a6c19b
parenta827cc46921fcf06e248eaa6f32485779ee365f9 (diff)
Move SkeletonItem to a separate file
-rw-r--r--Source/ModelViewer/Main.cs99
-rw-r--r--Source/ModelViewer/ModelViewer.csproj1
-rw-r--r--Source/ModelViewer/TreeSkeleton.cs98
3 files changed, 99 insertions, 99 deletions
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<SkeletonItem> children = new List<SkeletonItem>();
- internal readonly IDisplayNode[] displayNodes;
- readonly SkeletonItem parent;
- readonly Main main;
- internal readonly int level;
- internal bool expanded, wasExpanded;
-
- public void Iter(Action<SkeletonItem> handler)
- {
- handler(this);
- children.Iter(u => u.Iter(handler));
- }
-
- public IEnumerable<SkeletonItem> 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<IState> states)
- {
- var i = 0;
- foreach(var s in states) {
- displayNodes[i++] = new ContainerNode<IDisplayNode>(this.name, x => x, s.Nodes);
- }
- }
-
- public SkeletonItem(Main m, int stateCount)
- {
- name = "<root>";
- 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<string, SkeletonItem>();
- 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 @@
<Compile Include="SearchBox.Designer.cs">
<DependentUpon>SearchBox.cs</DependentUpon>
</Compile>
+ <Compile Include="TreeSkeleton.cs" />
<Compile Include="VccProvider.cs" />
<EmbeddedResource Include="Main.resx">
<DependentUpon>Main.cs</DependentUpon>
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<SkeletonItem> children = new List<SkeletonItem>();
+ internal readonly IDisplayNode[] displayNodes;
+ readonly SkeletonItem parent;
+ readonly Main main;
+ internal readonly int level;
+ internal bool expanded, wasExpanded;
+
+ public void Iter(Action<SkeletonItem> handler)
+ {
+ handler(this);
+ children.Iter(u => u.Iter(handler));
+ }
+
+ public IEnumerable<SkeletonItem> 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<IState> states)
+ {
+ var i = 0;
+ foreach (var s in states) {
+ displayNodes[i++] = new ContainerNode<IDisplayNode>(this.name, x => x, s.Nodes);
+ }
+ }
+
+ public SkeletonItem(Main m, int stateCount)
+ {
+ name = "<root>";
+ 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<string, SkeletonItem>();
+ 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;
+ }
+ }
+ }
+ }
+ }
+ }
+
+}