Exemple #1
0
        public static DialogResult Show(IWin32Window owner, string[] notCheckedOutFiles)
        {
            CheckOutErrorDialog coed = new CheckOutErrorDialog(notCheckedOutFiles);

            coed.StartPosition = FormStartPosition.CenterParent;
            return(coed.ShowDialog(owner));
        }
        /// <summary>
        ///   Checks out version files for the array of <c>ProjectInfo</c>
        ///   objects provided.
        /// </summary>
        /// <param name="projectsToCheckOut">
        ///   An array of <c>ProjectInfo</c> objects for which version files
        ///   have to be checked out.
        /// </param>
        public override void CheckOut(ProjectInfo[] projectsToCheckOut)
        {
            Debug.Assert(projectsToCheckOut != null);
            Debug.Assert(m_projectInfosFailedToCheckOut != null && m_projectInfosFailedToCheckOut.Count == 0);
            if (projectsToCheckOut.Length == 0)
            {
                return;
            }
            object[] filesToCheckOut = GetFilesToCheckOut(projectsToCheckOut);
            if (filesToCheckOut.Length == 0)
            {
                return;
            }
            bool checkedOut = CheckOutFilesThroughDTE(filesToCheckOut);

            // in the case that SourceSafe is configured so that each checkout is prompted,
            // it may not be possible to checkout items through DTE
            if (!checkedOut)
            {
                CheckOutFilesManually(projectsToCheckOut);
            }
            // now check if all files have successfully been checked out
            ArrayList filesNotCheckedOut = new ArrayList();

            foreach (ProjectInfo pi in projectsToCheckOut)
            {
                foreach (string filename in pi.VersionFilenames)
                {
                    if (!m_environment.SourceControl.IsItemCheckedOut(filename))
                    {
                        filesNotCheckedOut.Add(filename);
                        if (!m_projectInfosFailedToCheckOut.Contains(pi))
                        {
                            m_projectInfosFailedToCheckOut.Add(pi);
                        }
                    }
                    else
                    {
                        m_filesCheckedOut.Add(filename);
                    }
                }
            }
            if (filesNotCheckedOut.Count > 0)
            {
                //Try checking files out via
                if (!CheckOutFilesThroughShell(filesToCheckOut))
                {
                    if (CheckOutErrorDialog.Show(new WindowAdapter(m_environment.MainWindow.HWnd), (string[])filesNotCheckedOut.ToArray(typeof(string))) == DialogResult.No)
                    {
                        throw new UserCancelledException();
                    }
                }
            }
        }