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);
		}
    }
}
                     
                                
                    
                
            
                | # | 
                Change | 
                User | 
                Description | 
                Committed | 
                 | 
            
        
        
        
        
            
                | 
                    
                        #3                    
                 | 
                
                    28480                 | 
                
                    eskopljak                 | 
                
                    submit                 | 
                
                    
                 | 
                
                                            
                                                                
                                                                
                                                         | 
            
        
            
                | 
                    
                        #2                    
                 | 
                
                    28479                 | 
                
                    eskopljak                 | 
                
                    submit                 | 
                
                    
                 | 
                
                                                                                                        
                                     | 
            
        
            
                | 
                    
                        #1                    
                 | 
                
                    28441                 | 
                
                    eskopljak                 | 
                
                    Merging using p4api.net_branch                 | 
                
                    
                 | 
                
                                            
                                                                
                                                                
                                                         | 
            
                
    
                
            
                | 
                    
                    //guest/perforce_software/p4api-net/main/examples/sln-bld-gui/DepotPathDlg.cs                 | 
            
        
        
        
        
            
                | 
                    
                        #1                    
                 | 
                
                    19043                 | 
                
                    Liz Lam                 | 
                
                    Rename p4api.net to p4api-net                 | 
                
                    
                 | 
                
                                            
                                                                
                                                                
                                                         | 
            
                
    
                
            
                | 
                    
                    //guest/perforce_software/p4api.net/main/examples/sln-bld-gui/DepotPathDlg.cs                 | 
            
        
        
        
        
            
                | 
                    
                        #1                    
                 | 
                
                    19042                 | 
                
                    Liz Lam                 | 
                
                    Rename/move file(s) to proper main branch.                 | 
                
                    
                 | 
                
                                            
                                                                
                                                                
                                                         | 
            
                
    
                
            
                | 
                    
                    //guest/perforce_software/p4api.net/examples/sln-bld-gui/DepotPathDlg.cs                 | 
            
        
        
        
        
            
                | 
                    
                        #2                    
                 | 
                
                    8964                 | 
                
                    Bill                 | 
                
                    fix line endings                 | 
                
                    
                 | 
                
                                            
                                                                
                                                                
                                                         | 
            
        
            
                | 
                    
                        #1                    
                 | 
                
                    8873                 | 
                
                    Matt Attaway                 | 
                
                    Initial add of the P4API.NET source code                 | 
                
                    
                 | 
                
                                            
                                                                
                                                                
                                                         |