simplified.ui.step1
[tfs.git] / class / Gtk.TeamFoundation / ExploreView.cs
blob84055403f0d9ee04c039fb35e9eb0f400520fc2b
1 using System;
2 using System.Net;
3 using Gtk;
5 using Microsoft.TeamFoundation.Client;
6 using Microsoft.TeamFoundation.VersionControl.Common;
7 using Microsoft.TeamFoundation.VersionControl.Client;
9 namespace Gtk.TeamFoundation
11 public interface IExploreViewChild
13 void UpdatePath(VersionControlServer vcs, string path);
16 public class ExploreView : Gtk.VBox
18 private RepositoryView repositoryView;
19 private ChangesetView changesetView;
20 private DirectoryView directoryView;
21 private VPaned viewChildren;
22 private string currentSelectedPath;
23 private VersionControlServer currentVcs;
24 private ICredentialsProvider credentialsProvider;
26 public ExploreView(ICredentialsProvider credentialsProvider,
27 int stopAfter) : base (false, 1)
29 this.credentialsProvider = credentialsProvider;
31 HPaned hPaned = new HPaned();
32 Add(hPaned);
34 ScrolledWindow scrolledWindow = new ScrolledWindow();
35 hPaned.Add1(scrolledWindow);
37 repositoryView = new RepositoryView(credentialsProvider);
38 scrolledWindow.Add(repositoryView);
40 viewChildren = new VPaned();
42 directoryView = new DirectoryView();
43 viewChildren.Add(directoryView);
45 changesetView = new ChangesetView(stopAfter);
46 viewChildren.Add(changesetView);
48 int x, y, width, height, depth;
49 RootWindow.GetGeometry (out x, out y, out width, out height, out depth);
51 hPaned.Add2(viewChildren);
52 hPaned.Position = (width - 50) / 3;
54 // add status bar
55 Statusbar sb = new Statusbar ();
56 sb.HasResizeGrip = false;
57 PackEnd(sb, false, false, 1);
59 ShowAll();
60 repositoryView.Selection.Changed += OnPathSelectionChanged;
63 void OnPathSelectionChanged (object o, EventArgs args)
65 TreeIter iter;
66 TreeModel model;
68 if (!((TreeSelection)o).GetSelected (out model, out iter)) return;
70 TreeIter iterParent;
71 if (model.IterParent(out iterParent, iter))
73 string url = (string) model.GetValue (iterParent, 0);
74 ICredentials credentials = credentialsProvider.GetCredentials(new Uri(url), null);
75 TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(url, credentials);
76 currentVcs = tfs.GetService(typeof(VersionControlServer)) as VersionControlServer;
78 currentSelectedPath = (string) model.GetValue (iter, 1);
79 UpdateChildPath(directoryView);
80 UpdateChildPath(changesetView);
84 protected void UpdateChildPath(IExploreViewChild child)
86 if (currentVcs == null) return;
87 GdkWindow.Cursor = new Gdk.Cursor(Gdk.CursorType.Watch);
88 child.UpdatePath(currentVcs, currentSelectedPath);
89 GdkWindow.Cursor = null;