130 lines
3.5 KiB
C#
130 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.IO;
|
|
using Perforce;
|
|
|
|
namespace Perforce.sln.bld.gui
|
|
{
|
|
public partial class DepotPathDlg : Form
|
|
{
|
|
public DepotPathDlg(P4.Repository rep)
|
|
{
|
|
InitializeComponent();
|
|
|
|
Init(rep);
|
|
}
|
|
|
|
public String SelectedFile
|
|
{
|
|
get
|
|
{
|
|
return mSolutionPathTxt.Text;
|
|
}
|
|
}
|
|
|
|
private P4.P4Server pServer;
|
|
|
|
public void Init(P4.Repository rep)
|
|
{
|
|
if (rep == null)
|
|
{
|
|
mDepotTreeView.Enabled = false;
|
|
return;
|
|
}
|
|
// Initialize the depot tree view
|
|
P4.P4Directory root = new P4.P4Directory(rep, null, "depot", "//depot", null, null);
|
|
TreeNode rootNode = new TreeNode("Depot");
|
|
rootNode.Tag = root;
|
|
rootNode.ImageIndex = 0;
|
|
rootNode.SelectedImageIndex = 0;
|
|
rootNode.Nodes.Add(new TreeNode("empty"));
|
|
mDepotTreeView.Nodes.Clear();
|
|
mDepotTreeView.Nodes.Add(rootNode);
|
|
}
|
|
|
|
private void mDepotTreeView_BeforeExpand(object sender, TreeViewCancelEventArgs e)
|
|
{
|
|
// insanity check, should never be null
|
|
if (e.Node == null)
|
|
{
|
|
e.Cancel = true;
|
|
return;
|
|
}
|
|
|
|
TreeNode node = e.Node;
|
|
// clear any old data
|
|
node.Nodes.Clear();
|
|
|
|
P4.P4Directory p4Dir = (P4.P4Directory)node.Tag;
|
|
|
|
if (String.IsNullOrEmpty(p4Dir.DepotPath) || !p4Dir.Expand())
|
|
{
|
|
e.Cancel = true;
|
|
return;
|
|
}
|
|
|
|
if ((p4Dir.Files != null) && (p4Dir.Files.Count > 0))
|
|
{
|
|
foreach (P4.FileMetaData file in p4Dir.Files)
|
|
{
|
|
if (Path.GetExtension(file.DepotPath.Path) == ".sln")
|
|
{
|
|
TreeNode child = new TreeNode(file.DepotPath.Path);
|
|
child.Tag = file;
|
|
child.ImageIndex = 2;
|
|
child.SelectedImageIndex = 2;
|
|
e.Node.Nodes.Add(child);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((p4Dir.Subdirectories != null) && (p4Dir.Subdirectories.Count > 0))
|
|
{
|
|
foreach (P4.P4Directory p4SubDir in p4Dir.Subdirectories)
|
|
{
|
|
if (!p4SubDir.InDepot)
|
|
continue;
|
|
|
|
TreeNode child = new TreeNode(p4SubDir.Name);
|
|
child.Tag = p4SubDir;
|
|
child.ImageIndex = 1;
|
|
child.SelectedImageIndex = 1;
|
|
child.Nodes.Add(new TreeNode("<empty>"));
|
|
e.Node.Nodes.Add(child);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void mDepotTreeView_AfterSelect(object sender, TreeViewEventArgs e)
|
|
{
|
|
Object obj = mDepotTreeView.SelectedNode.Tag;
|
|
if (obj is P4.FileMetaData)
|
|
{
|
|
mSolutionPathTxt.Text = mDepotTreeView.SelectedNode.Text.ToString();
|
|
}
|
|
else
|
|
{
|
|
mSolutionPathTxt.Text = string.Empty;
|
|
}
|
|
}
|
|
|
|
private void mOkBtn_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void mSolutionPathTxt_TextChanged(object sender, EventArgs e)
|
|
{
|
|
string path = mSolutionPathTxt.Text;
|
|
|
|
mOkBtn.Enabled = !string.IsNullOrEmpty(path);
|
|
}
|
|
}
|
|
}
|