3 using System
.Collections
;
4 using System
.Collections
.Generic
;
8 using Microsoft
.TeamFoundation
.Client
;
9 using Microsoft
.TeamFoundation
.VersionControl
.Common
;
10 using Microsoft
.TeamFoundation
.VersionControl
.Client
;
12 public interface IChangesetViewChild
14 void UpdateCid(int cid
);
17 public class ChangesetView
: Gtk
.VPaned
, IExploreViewChild
19 private Driver driver
;
20 private Gtk
.ListStore changesetListStore
;
21 private Gtk
.TreeView changesetList
;
22 private ChangesetDetailView changesetDetailView
;
23 private ChangesetDiffView changesetDiffView
;
24 private Notebook viewChildren
;
25 private int stopAfter
;
26 private int currentCid
= 0;
28 public void InitializeChangesetList()
30 changesetList
= new Gtk
.TreeView();
32 changesetList
.AppendColumn ("Id", new Gtk
.CellRendererText (), "text", 0);
33 changesetList
.AppendColumn ("Owner", new Gtk
.CellRendererText (), "text", 1);
34 changesetList
.AppendColumn ("Date", new Gtk
.CellRendererText (), "text", 2);
35 changesetList
.AppendColumn ("Comment", new Gtk
.CellRendererText (), "text", 3);
37 changesetListStore
= new Gtk
.ListStore (typeof(string), typeof(string), typeof(string), typeof(string));
38 changesetList
.Model
= changesetListStore
;
39 changesetList
.Selection
.Changed
+= OnSelectionChanged
;
41 #if HAVE_ATLEAST_GTK_210
42 changesetList
.EnableGridLines
= TreeViewGridLines
.Vertical
;
46 public ChangesetView(Driver driver
, int stopAfter
)
49 this.stopAfter
= stopAfter
;
51 InitializeChangesetList();
53 ScrolledWindow scrolledWindow1
= new ScrolledWindow();
54 scrolledWindow1
.Add(changesetList
);
56 Add1(scrolledWindow1
);
58 viewChildren
= new Notebook ();
59 viewChildren
.TabPos
= PositionType
.Bottom
;
62 changesetDetailView
= new ChangesetDetailView(driver
);
63 viewChildren
.AppendPage (changesetDetailView
, new Label ("Details"));
65 changesetDiffView
= new ChangesetDiffView(driver
);
66 viewChildren
.AppendPage (changesetDiffView
, new Label ("Unified Diff"));
68 int x
, y
, width
, height
, depth
;
69 RootWindow
.GetGeometry (out x
, out y
, out width
, out height
, out depth
);
70 Position
= Convert
.ToInt32((height
- 40) * 0.4);
72 viewChildren
.SwitchPage
+= OnSwitchPage
;
75 public void OnSwitchPage (object o
, SwitchPageArgs args
)
77 if (currentCid
== 0) return;
78 Console
.WriteLine((int)args
.PageNum
);
79 IChangesetViewChild child
= viewChildren
.GetNthPage((int)args
.PageNum
) as IChangesetViewChild
;
80 if (child
== null) return;
81 Console
.WriteLine("here");
82 UpdateChildCid(child
);
85 protected void UpdateChildCid(IChangesetViewChild child
)
87 if (child
== null) return;
88 GdkWindow
.Cursor
= new Gdk
.Cursor(Gdk
.CursorType
.Watch
);
89 child
.UpdateCid(currentCid
);
90 GdkWindow
.Cursor
= null;
93 void OnSelectionChanged (object o
, EventArgs args
)
98 TreeSelection treeSelection
= o
as TreeSelection
;
99 if (!(treeSelection
.GetSelected (out model
, out iter
))) return;
101 currentCid
= Convert
.ToInt32(model
.GetValue (iter
, 0));
103 IChangesetViewChild child
= viewChildren
.CurrentPageWidget
as IChangesetViewChild
;
104 UpdateChildCid(child
);
107 public void UpdatePath(string path
)
109 if (String
.IsNullOrEmpty(path
)) return;
111 changesetListStore
.Clear();
112 changesetDetailView
.Clear();
113 changesetDiffView
.Clear();
115 bool detailed
= false;
116 IEnumerable changeSets
= driver
.VersionControlServer
.QueryHistory(path
, VersionSpec
.Latest
, 0, RecursionType
.Full
, null,
117 null, null, stopAfter
, detailed
, false, false);
119 foreach (Changeset changeSet
in changeSets
)
121 changesetListStore
.AppendValues(changeSet
.ChangesetId
.ToString(),
123 changeSet
.CreationDate
.ToString("d"),
127 // this would be nice be seems to cause a segfault
128 //changesetList.ColumnsAutosize();