Example #1
0
 public void FetchChangeData()
 {
     if (ChangeDataFetched == false)
     {
         P4.Options describeOptions = new P4.ChangeCmdOptions(P4.ChangeCmdFlags.IncludeJobs);
         if (_changeData.Id > 0)
         {
             describeOptions = new P4.DescribeCmdOptions(P4.DescribeChangelistCmdFlags.Shelved | P4.DescribeChangelistCmdFlags.Omit, -1, -1);
         }
         P4.Changelist sc = Scm.GetChangelist(_changeData.Id, describeOptions);
         if (sc != null)
         {
             if ((sc.ShelvedFiles != null) && (sc.ShelvedFiles.Count > 0))
             {
                 _changeData.ShelvedFiles = sc.ShelvedFiles;
             }
             else
             {
                 _changeData.ShelvedFiles = null;
             }
             if ((sc.Jobs != null) && (sc.Jobs.Count > 0))
             {
                 _changeData.Jobs = sc.Jobs;
             }
             else
             {
                 _changeData.Jobs = null;
             }
         }
         ChangeDataFetched = true;
     }
 }
Example #2
0
        private void removeFixToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // remove the selected changelist from the job

            P4.Changelist selected = fixesLV.SelectedItems[0].Tag as P4.Changelist;
            try
            {
                P4.Options     opts        = new P4.Options(P4.FixJobsCmdFlags.Delete, -1, null);
                IList <P4.Fix> fixToRemove = selected.FixJobs(opts, currentJob);
            }
            catch (Exception ex)
            {
                scm.ShowException(ex);
                return;
            }
            attachedFixes.Remove(selected);
            P4FileTreeListViewItem itemToRemove = fixesLV.SelectedItems[0] as P4FileTreeListViewItem;

            foreach (TreeListViewItem child in itemToRemove.ChildNodes)
            {
                fixesLV.Items.Remove(child);
            }

            fixesLV.Nodes.Remove(itemToRemove);
            fixesLV.Items.Remove(itemToRemove);
            fixesLV.BuildTreeList();
        }
Example #3
0
        public static string ChangeListToString(P4.Changelist change)
        {
            string line = change.Description;

            line = line.Replace('\r', ' ');
            line = line.Replace('\n', ' ');
            return(string.Format("{0} {1}", change.Id, line));
        }
Example #4
0
        private void addChangeToFixesLV(P4.Changelist change)
        {
            if (change != null)
            {
                ListViewItem[] dupe = fixesLV.Items.Find(change.Id.ToString(), false);

                if (dupe.Length == 0)
                {
                    List <object> changeFields = new List <object>();
                    changeFields.Add(change.Id.ToString());
                    changeFields.Add(change.ClientId.ToString());
                    // check for date format
                    if (p4Date() == true)
                    {
                        DateTime local = change.ModifiedDate;

                        // we need a pref for local time, until then, don't do this:
                        //local = TimeZone.CurrentTimeZone.ToLocalTime(local);
                        changeFields.Add(local.ToString("yyyy/MM/dd HH:mm:ss"));
                    }
                    else
                    {
                        DateTime local = change.ModifiedDate;

                        // we need a pref for local time, until then, don't do this:
                        //local = TimeZone.CurrentTimeZone.ToLocalTime(local);
                        changeFields.Add(string.Format("{0} {1}", local.ToShortDateString(),
                                                       local.ToShortTimeString()));
                    }

                    changeFields.Add(change.OwnerName.ToString());
                    changeFields.Add(change.Type.ToString());
                    changeFields.Add(change.Description.ToString());
                    P4FileTreeListViewItem changeItem = new P4FileTreeListViewItem(null, null, changeFields);
                    changeItem.Tag = change;
                    if (change.Pending)
                    {
                        changeItem.CenterImageIndices.Clear();
                        changeItem.CenterImageIndices.Add(6);
                    }
                    else
                    {
                        changeItem.CenterImageIndices.Clear();
                        changeItem.CenterImageIndices.Add(15);
                    }
                    changeItem.Checked = true;
                    changeItem.Name    = change.Id.ToString();
                    FileMetaData           blank     = new FileMetaData();
                    P4FileTreeListViewItem childItem = new P4FileTreeListViewItem(changeItem, blank, changeFields);
                    changeItem.ChildNodes.Add(childItem);
                    changeItem.Collapse();
                    fixesLV.Nodes.Add(changeItem);
                }
            }
            fixesLV.BuildTreeList();
        }
        public void SetData(P4.Changelist changeData, SwarmServer.Review reviewData)
        {
            _changeData = changeData;
            //_reviewData = reviewData;

            FileDataFetched   = false;
            ChangeDataFetched = false;

            ImageIndex = (int)CenterImages.ShelvedFolder;
        }
Example #6
0
        public void SetData(P4.Changelist changeData, SwarmServer.Review reviewData)
        {
            _changeData = changeData;
            _reviewData = reviewData;

            FileDataFetched   = false;
            ChangeDataFetched = false;

            InitSubitems();
            SelectImagesFromMetaData();
        }
Example #7
0
        private P4.Changelist SaveNumberedChangelist()
        {
            P4.Changelist  editChange = _scm.GetChangelist(ChangeListId);
            IList <P4.Job> jobs       = SelectedJobList;

            editChange.Jobs = null;
            if (jobs != null && jobs.Count > 0)
            {
                P4.Options fixOptions = new P4.FixJobsCmdOptions(P4.FixJobsCmdFlags.None, -1, null);

                P4.Connection con = _scm.Connection.Repository.Connection;
                editChange.initialize(con);

                editChange.FixJobs(jobs, fixOptions);
            }

            jobs            = UnselectedJobList;
            editChange.Jobs = null;
            if (jobs != null && jobs.Count > 0)
            {
                P4.Options fixOptions = new P4.FixJobsCmdOptions(P4.FixJobsCmdFlags.Delete, -1, null);

                P4.Connection con = _scm.Connection.Repository.Connection;
                editChange.initialize(con);

                editChange.FixJobs(jobs, fixOptions);
            }

            if (editChange.OwnerName != _scm.Connection.User)
            {
                return(editChange);
            }

            editChange = _scm.GetChangelist(ChangeListId);

            editChange.Type = ChangeListType.Public;
            if (RestrictAccessCB.Checked == true)
            {
                editChange.Type = ChangeListType.Restricted;
            }

            editChange.Description = DescriptionTB.Text;

            editChange.Files = null;

            ChangeList = _scm.SaveSubmittedChangelist(editChange);

            return(editChange);
        }
Example #8
0
        public P4ChangeTreeListViewItem(TreeListViewItem parentItem, P4.Changelist changeData,
                                        P4ScmProvider scm, IList <object> fields)
            : base()
        {
            ParentItem = parentItem;
            Fields     = fields;
            NodeType   = nodeType.Pending;           // default
            Scm        = scm;
            Tag        = changeData;

            Ours = (changeData.ClientId == Scm.Connection.Workspace);

            if (Ours)
            {
                P4.Options opts = new P4.Options();

                if (changeData.Id > 0)
                {
                    opts["-e"] = changeData.Id.ToString();
                }
                else
                {
                    opts["-e"] = "default";
                    NodeType.Set(nodeType.Default);
                }
                opts["-Ru"] = null;
                opts["-m"]  = "1";
                P4.FileSpec        fs  = new P4.FileSpec(new P4.ClientPath(@"//" + Scm.Connection.Workspace + @"/..."), null);
                List <P4.FileSpec> lfs = new List <P4.FileSpec>();
                lfs.Add(fs);
                IList <P4.FileMetaData> unresolved = Scm.GetFileMetaData(lfs, opts);

                if ((unresolved != null) && (unresolved.Count > 0))
                {
                    NeedsResolve = true;
                }
            }

            _changeData = changeData;             // don't call InitSubitems() or SelectImagesFromMetaData() yet

            if (changeData.Id > 0)
            {
                _reviewData = Scm.Connection.Swarm.IsChangelistAttachedToReview(changeData.Id);
            }
            InitSubitems();
            SelectImagesFromMetaData();
        }
Example #9
0
        private void browseBtn_Click(object sender, EventArgs e)
        {
            SubmittedChangelistsBrowserDlg dlg = new SubmittedChangelistsBrowserDlg(scm, "get_revision");

            if (DialogResult.Cancel != dlg.ShowDialog())
            {
                if (dlg.SelectedChangelist != null)
                {
                    P4.Changelist changeToAdd = scm.GetChangelist(dlg.SelectedChangelist.Id);
                    if (changeToAdd != null)
                    {
                        addChangeToFixesLV(changeToAdd);
                        attachedFixes.Add(changeToAdd);
                    }
                }
            }
        }
Example #10
0
        private void path1BrowseBtn_Click(object sender, EventArgs e)
        {
            if (specifier1stCB.SelectedIndex == 1)             // changelist
            {
                string path = path1TB.Text;
                SubmittedChangelistsBrowserDlg dlg = new SubmittedChangelistsBrowserDlg(_scm, "diff_" + path);

                if (DialogResult.Cancel != dlg.ShowDialog())
                {
                    _changelistToAdd = dlg.SelectedChangelist;
                    if (_changelistToAdd != null)
                    {
                        Text = _changelistToAdd.Id.ToString();
                    }
                }
            }

            if (specifier1stCB.SelectedIndex == 3)             // label
            {
                LabelsBrowserDlg dlg = new LabelsBrowserDlg();
                if (DialogResult.OK == dlg.ShowDialog(this))
                {
                    P4.Label label = dlg.Label;
                    if (label != null)
                    {
                        path1ValueTB.Text = label.Id;
                    }
                }
            }

            if (specifier1stCB.SelectedIndex == 4)             // workspace
            {
                WorkspacesBrowserDlg dlg = new WorkspacesBrowserDlg(_scm, "diff_against", null, null);

                if (DialogResult.Cancel != dlg.ShowDialog())
                {
                    _workspaceToAdd = dlg.SelectedWorkspace;

                    if (_workspaceToAdd != null)
                    {
                        path1ValueTB.Text = _workspaceToAdd.Name.ToString();
                    }
                }
            }
        }
Example #11
0
        private void browseBtn_Click(object sender, EventArgs e)
        {
            if (specifierCB.SelectedIndex == 1)             // changelist
            {
                SubmittedChangelistsBrowserDlg dlg = new SubmittedChangelistsBrowserDlg(_scm, "get_revision");

                if (DialogResult.Cancel != dlg.ShowDialog())
                {
                    if (dlg.SelectedChangelist != null)
                    {
                        _changelistToAdd = dlg.SelectedChangelist;
                        ValueTB.Text     = _changelistToAdd.Id.ToString();
                    }
                }
            }

            if (specifierCB.SelectedIndex == 3)             // label
            {
                LabelsBrowserDlg dlg = new LabelsBrowserDlg();
                if (DialogResult.OK == dlg.ShowDialog(this))
                {
                    P4.Label label = dlg.Label;
                    if (label != null)
                    {
                        ValueTB.Text = label.Id;
                    }
                }
            }

            if (specifierCB.SelectedIndex == 4)             // workspace
            {
                WorkspacesBrowserDlg dlg = new WorkspacesBrowserDlg(_scm, "get_revision", null, null);

                if (DialogResult.Cancel != dlg.ShowDialog())
                {
                    if (dlg.SelectedWorkspace != null)
                    {
                        ValueTB.Text = dlg.SelectedWorkspace.Name.ToString();
                    }
                }
            }
        }
Example #12
0
 private void fixesContextMenuStrip_Opening(object sender, CancelEventArgs e)
 {
     // check to confirm that an item is selected
     if (fixesLV.SelectedItems != null && fixesLV.SelectedItems.Count > 0)
     {
         // check here to confirm that a changelist is the selected item
         P4FileTreeListViewItem selected = fixesLV.SelectedItems[0] as P4FileTreeListViewItem;
         P4.FileMetaData        file     = selected.FileData;
         if (selected.ParentItem == null)
         {
             P4.Changelist fix = selected.Tag as P4.Changelist;
             if (fix != null && fix.Jobs != null && fix.Jobs.ContainsKey(currentJob.Id))
             {
                 removeFixToolStripMenuItem.Enabled           = true;
                 removeFixToolStripMenuItem.Visible           = true;
                 diffAgainstPreviousToolStripMenuItem.Enabled = false;
                 diffAgainstPreviousToolStripMenuItem.Visible = false;
             }
             else
             {
                 e.Cancel = true;
             }
         }
         else if (file != null && file.HeadRev > 1)
         {
             diffAgainstPreviousToolStripMenuItem.Enabled = true;
             diffAgainstPreviousToolStripMenuItem.Visible = true;
             removeFixToolStripMenuItem.Enabled           = false;
             removeFixToolStripMenuItem.Visible           = false;
         }
         else
         {
             e.Cancel = true;
         }
     }
     else
     {
         e.Cancel = true;
     }
 }
Example #13
0
        private void actionBtn_Click(object sender, EventArgs e)
        {
            previewTB.Clear();
            string sourceSelection = string.Empty;

            if (sourceCB.Enabled)
            {
                sourceSelection = this.sourceCB.SelectedItem.ToString();
            }
            else if (sourceTB.Enabled)
            {
                sourceSelection = this.sourceTB.Text;
            }

            P4.Stream effectiveTarget = _scm.GetStream(_target, null, null);
            P4.Stream effectiveSource = _scm.GetStream(sourceSelection, null, null);

            if (effectiveSource == null || effectiveTarget == null)
            {
                return;
            }

            if (effectiveTarget.Type == P4.StreamType.Virtual)
            {
                if (effectiveTarget.BaseParent != null)
                {
                    effectiveTarget = _scm.GetStream(effectiveTarget.BaseParent.Path, null, null);
                }
                else if (effectiveTarget.Parent != null)
                {
                    effectiveTarget = _scm.GetStream(effectiveTarget.Parent.Path, null, null);
                }
            }

            if (effectiveSource.Type == P4.StreamType.Virtual)
            {
                if (effectiveSource.BaseParent != null)
                {
                    effectiveSource = _scm.GetStream(effectiveSource.BaseParent.Path, null, null);
                }
                else if (effectiveSource.Parent != null)
                {
                    effectiveSource = _scm.GetStream(effectiveSource.Parent.Path, null, null);
                }
            }

            P4.Options          opts  = new P4.Options();
            IList <P4.FileSpec> files = new List <P4.FileSpec>();

            if ((effectiveSource.Parent != null && effectiveSource.Parent.Path == effectiveTarget.Id) || (effectiveSource.BaseParent != null && effectiveSource.BaseParent.Path == effectiveTarget.Id))
            {
                opts["-S"] = effectiveSource.Id;
            }
            else if ((effectiveTarget.Parent != null && effectiveTarget.Parent.Path == effectiveSource.Id) || (effectiveTarget.BaseParent != null && effectiveTarget.BaseParent.Path == effectiveSource.Id))
            {
                opts["-S"] = effectiveTarget.Id;
                opts["-r"] = null;
            }

            if (_action == "merge")
            {
                files = _scm.MergeFiles(opts);
            }
            else if (_action == "copy")
            {
                files = _scm.CopyFiles(opts);
            }

            P4.P4CommandResult results = _scm.Connection.Repository.Connection.LastResults;
            string             preview = null;

            if (_scm.Connection.Repository.Connection.LastResults.ErrorList != null)
            {
                previewTB.Text = preview;
                foreach (P4.P4ClientError error in _scm.Connection.Repository.Connection.LastResults.ErrorList)
                {
                    previewTB.AppendText(error.ErrorMessage);
                }
                DialogResult = DialogResult.None;
                return;
            }
            if (files != null)
            {
                // if there are files to merge or copy, offer
                // changelist selection and submit or save
                int                   count   = files.Count();
                string                target  = targetTB.Text;
                string                action  = null;
                string                summary = string.Empty;
                P4.Changelist         getDesc = _scm.GetChangelist(-1);
                string                newChangeDescription = getDesc.Description;
                IList <P4.Changelist> changes = _scm.GetAvailibleChangelists(-1);

                if (count > 1)
                {
                    if (_action == "merge")
                    {
                        summary = string.Format(Resources.P4VsProviderService_MergeSummary, count);
                        if (newChangeDescription == null ||
                            newChangeDescription == Resources.DefaultChangeListDescription)
                        {
                            newChangeDescription = string.Format(
                                Resources.P4VsProviderService_MergeChangeDescription, target);
                        }
                    }
                    else if (_action == "copy")
                    {
                        summary = string.Format(Resources.P4VsProviderService_CopySummary, count);
                        if (newChangeDescription == null ||
                            newChangeDescription == Resources.DefaultChangeListDescription)
                        {
                            newChangeDescription = string.Format(
                                Resources.P4VsProviderService_CopyChangeDescription, target);
                        }
                        if (submitCopiedRB.Checked)
                        {
                            string[] fileStringArray = new string[count];
                            for (int idx = 0; idx < count; idx++)
                            {
                                fileStringArray[idx] = files[idx].LocalPath.Path;
                            }
                            _scm.SubmitFiles(newChangeDescription, null, false, fileStringArray);
                            return;
                        }
                    }
                }
                else
                {
                    if (_action == "merge")
                    {
                        summary = Resources.P4VsProviderService_Merge1Summary;
                        if (newChangeDescription == null ||
                            newChangeDescription == Resources.DefaultChangeListDescription)
                        {
                            newChangeDescription = string.Format(
                                Resources.P4VsProviderService_Merge1ChangeDescription, target);
                        }
                    }
                    else if (_action == "copy")
                    {
                        summary = Resources.P4VsProviderService_Copy1Summary;
                        if (newChangeDescription == null ||
                            newChangeDescription == Resources.DefaultChangeListDescription)
                        {
                            newChangeDescription = string.Format(
                                Resources.P4VsProviderService_Copy1ChangeDescription, target);
                        }
                        if (submitCopiedRB.Checked)
                        {
                            _scm.SubmitFiles(newChangeDescription, null, false, files[0].LocalPath.Path);
                            return;
                        }
                    }
                }

                int           changeListId = -1;
                P4.Changelist changelist   = SelectChangelistDlg.ShowChooseChangelistSubmit(
                    summary,
                    changes, ref newChangeDescription, out action, true, true, _scm);
                changeListId = changelist.Id;

                if (changeListId == -2)
                {
                    // user hit 'No'
                    return;
                }
                opts = new P4.Options();

                if (changeListId > 0)
                {
                    opts["-c"] = changeListId.ToString();
                }

                P4.Changelist changeToSubmit = _scm.Connection.Repository.NewChangelist();
                if (changeListId == -1)
                {
                    // Overwrite new changelist files. If default has files in it, a new
                    // changelist will automatically get those files.
                    changeToSubmit.Files       = files as IList <P4.FileMetaData>;
                    changeToSubmit.Description = changelist.Description;
                    changeToSubmit             = _scm.SaveChangelist(changeToSubmit, null);
                    opts["-c"]   = changeToSubmit.Id.ToString();
                    changeListId = changeToSubmit.Id;
                }

                if (opts.ContainsKey("-c"))
                {
                    Int32 c = Convert.ToInt32(opts["-c"]);
                    changeToSubmit = _scm.GetChangelist(c);
                    _scm.MoveFilesToChangeList(c, changelist.Description, files);
                    changeListId = changeToSubmit.Id;
                }

                // done, unless submit was hit
                if (action == "submit")
                {
                    changeToSubmit.Description = changelist.Description;

                    if (changeListId > 0)
                    {
                        SubmitDlg.SubmitPendingChanglist(changeToSubmit, changeToSubmit.Files, _scm);
                    }
                    else
                    {
                        IList <string> list = new List <string>();
                        foreach (P4.FileSpec fs in files)
                        {
                            list.Add(fs.LocalPath.Path.ToString());
                        }
                        SubmitDlg.SubmitFiles(list, _scm, false, changeToSubmit.Description);
                    }
                }
            }
            returnedFiles = files;
            DialogResult  = DialogResult.OK;
            return;
        }
Example #14
0
        public static int ShowChooseChangelistMove(string prompt, IList <string> files, IList <P4.Changelist> items, ref string NewChangeDescription, P4ScmProvider scm)
        {
            if (ActiveChangeList > -1)
            {
                CurrentChangeListLastUse = DateTime.Now;
                //					NewChangeDescription = CurrentChangeDescription;
                return(CurrentChangeList);
            }
            SelectChangelistDlg2 dlg = new SelectChangelistDlg2(prompt, files, items);

            dlg.DontShowAgainCB.Enabled = false;
            dlg.DontShowAgainCB.Visible = false;

            dlg.saveToChangelistBtn.Visible = false;
            dlg.submitBtn.Visible           = false;

            dlg.NewChangelistDescription = NewChangeDescription;

            dlg.OkBtn.Visible     = true;
            dlg.CancelBtn.Visible = true;

            dlg.YesBtn1.Visible = false;
            dlg.NoBtn1.Visible  = false;
            dlg.YesBtn2.Visible = false;
            dlg.NoBtn2.Visible  = false;

            dlg.BtnBar.Controls.Clear();
            dlg.BtnBar.Controls.Add(dlg.BtnSpacer);
            dlg.BtnBar.Controls.Add(dlg.OkBtn);
            dlg.BtnBar.Controls.Add(dlg.CancelBtn);

            dlg.OkBtn.Column     = 1;
            dlg.CancelBtn.Column = 2;
            dlg.BtnBar.InitializeGrid(true);

            if (dlg.ShowDialog() == DialogResult.Cancel)
            {
                CurrentChangeList = -2;
                return(CurrentChangeList);
            }
            int changelistId = dlg.Result;

            if (changelistId == -1)
            {
                P4.Changelist newChange = scm.Connection.Repository.NewChangelist();
                // Make sure files is empty. If default has files in it, a new changelist
                // will automatically get those files.
                newChange.Files       = new List <P4.FileMetaData>();
                newChange.Description = dlg.DescriptionTB.Text;
                newChange             = scm.SaveChangelist(newChange, null);
                if (newChange != null)
                {
                    return(newChange.Id);
                }
                else
                {
                    return(changelistId);
                }
            }
            CurrentChangeListLastUse = DateTime.Now;
            CurrentChangeList        = changelistId;
            return(changelistId);
        }
Example #15
0
        private void OkBtn_Click(object sender, EventArgs e)
        {
            int changeId = -1;

            if (ItemsCB.SelectedIndex >= 2)
            {
                string[] parts = ItemsCB.Text.Split(' ');

                if (parts.Length > 0)
                {
                    int.TryParse(parts[0], out changeId);
                }
            }
            else if (ItemsCB.SelectedIndex == 0)
            {
                // new changelist
                P4.Changelist change = SccService.ScmProvider.Connection.Repository.NewChangelist();
                change.Description = "Reconciled offline work";
                // Make sure files is empty. If default has files in it, a new changelist
                // will automatically get those files.
                change.Files = new List <P4.FileMetaData>();
                change       = SccService.ScmProvider.SaveChangelist(change, null);

                changeId = change.Id;
            }
            // otherwise it's the default
            else if (ItemsCB.SelectedIndex == 1)
            {
                changeId = 0;
            }

            IList <P4.FileSpec> dlgList = new List <P4.FileSpec>();

            foreach (ListViewItem item in listView1.Items)
            {
                if (item.Checked)
                {
                    P4.FileSpec fs = new P4.FileSpec();
                    fs.LocalPath = new P4.LocalPath(item.Tag.ToString());
                    dlgList.Add(fs);
                }
            }

            foreach (ListViewItem item in listView2.Items)
            {
                if (item.Checked)
                {
                    P4.FileSpec fs = new P4.FileSpec();
                    fs.LocalPath = new P4.LocalPath(item.Tag.ToString());
                    dlgList.Add(fs);
                }
            }

            foreach (ListViewItem item in listView3.Items)
            {
                if (item.Checked)
                {
                    P4.FileSpec fs = new P4.FileSpec();
                    fs.LocalPath = new P4.LocalPath(item.Tag.ToString());
                    dlgList.Add(fs);
                }
            }

            // do nothing if there are no files selected on click of Reconcile
            if (dlgList.Count > 0)
            {
                P4.Options sFlags = new P4.Options(P4.ReconcileFilesCmdFlags.NotOpened,
                                                   changeId);
                IList <P4.FileSpec> recList =
                    SccService.ScmProvider.ReconcileStatus(dlgList, sFlags);

                SccService.ScmProvider.BroadcastChangelistUpdate(this, new P4ScmProvider.ChangelistUpdateArgs(changeId,
                                                                                                              P4ScmProvider.ChangelistUpdateArgs.UpdateType.ContentUpdate));
            }

            this.Close();
        }
Example #16
0
		public static void ShelveFiles(IList<P4.FileMetaData> files, P4.Changelist changelist, P4ScmProvider ScmProvider, bool ShowUi)
		{
			ShelveFileDlg dlg = new ShelveFileDlg(ScmProvider);
            bool shelvedFiles = changelist.Shelved;

			dlg.ChangelistId = changelist.Id;
			if ((files != null) && (files.Count > 0))
			{
			    List<P4.FileMetaData> linkedFiles = new List<P4.FileMetaData>();
				foreach (P4.FileMetaData fmd in files)
				{
					if (fmd.MovedFile != null)
					{
						P4.FileMetaData movedFmd = ScmProvider.GetFileMetaData(fmd.MovedFile.Path);
						linkedFiles.Add(movedFmd);
					}
                   
				}
                foreach (P4.FileMetaData fmd in linkedFiles)
                {

                    files.Add(fmd);
                }
			    dlg.SelectedFileList = files;

                
			}
			if (dlg.SelectedFileList.Count <= 0)
			{
				dlg.SelectAllCB.Checked = true;
			}

            if (!(shelvedFiles))
            {
                dlg.ClearChangelistTB.Checked = false;
                dlg.ClearChangelistTB.Enabled = false;
            }
			DialogResult res = DialogResult.OK;

			dlg.Description = Resources.ShelveFileDlg_FilesShelvedFromDefaultChangelist;
			if (changelist.Id > 0)
			{
				dlg.Description = string.Format(
					Resources.ShelveFileDlg_FilesShelvedFromNumberedChangelist, changelist.Id);
			}
			if (ShowUi)
			{
				res = dlg.ShowDialog();
			}
			if (res == DialogResult.Cancel)
			{
				return;
			}
			// If requested delete the existing shelved flags
			if ((changelist.Id > 0) && (dlg.ReplaceExistingShelvedFiles))
			{
				if (ScmProvider.ShelveFiles(changelist.Id, null, P4.ShelveFilesCmdFlags.Delete, true, null) == false)
				{
					return;
				}
			}
			P4.ShelveFilesCmdFlags flags = P4.ShelveFilesCmdFlags.Force;
			if (dlg.DontShelveUnchangedFiles)
			{
				flags |= ShelveFilesCmdFlags.LeaveUnchanged;
			}
			// Shelve the files
			if (ScmProvider.ShelveFiles(changelist.Id, dlg.Description, flags, dlg.SelectedFileList) == false)
			{
				return;
			}

			// If requested, revert the files after shelving

			if (dlg.RevertAfterShelving)
			{
				ScmProvider.RevertFiles(false, true, null, dlg.GetSelectedFiles().ToArray());
			}
			ScmProvider.BroadcastChangelistUpdate(null, new P4ScmProvider.ChangelistUpdateArgs(changelist.Id, P4ScmProvider.ChangelistUpdateArgs.UpdateType.ContentUpdate));
		}
Example #17
0
        public void CheckoutResource(IList <string> sel)
        {
            IList <VSITEMSELECTION> nodes = SccService.SelectedNodes;

            IList <string> lockedFiles   = new List <string>();
            IList <string> lockUsers     = new List <string>();
            IList <string> staleFiles    = new List <string>();
            IList <string> checkoutFiles = new List <string>();

            for (int idx = 0; idx < sel.Count; idx++)
            {
                string file = sel[idx];

                bool isWildcard = file.EndsWith("...") || file.EndsWith("*");

                if (isWildcard == false)
                {
                    P4.FileMetaData fmd = null;

                    if (string.IsNullOrEmpty(file) == false)
                    {
                        fmd = SccService.ScmProvider.Fetch(file);
                    }

                    if (fmd != null &&
                        fmd.HeadType.Modifiers.HasFlag(P4.FileTypeModifier.ExclusiveOpen) &&
                        fmd.OtherOpen > 0)
                    {
                        // Show the error for exclusive open file and continue
                        // without adding file to list of files to checkout
                        P4ErrorDlg.Show(Resources.P4VsProvider_ExclusiveOpenError, false, false);
                        continue;
                    }
                    if ((fmd == null) || (fmd.HeadAction == P4.FileAction.Delete))
                    {
                        sel.RemoveAt(idx--);
                        continue;
                    }
                    if (fmd.OtherLock)
                    {
                        lockedFiles.Add(fmd.LocalPath.Path);
                        string otherlocks = string.Empty;
                        foreach (string otherLock in fmd.OtherLockUserClients)
                        {
                            if (string.IsNullOrEmpty(otherlocks) == false)
                            {
                                otherlocks += ",";
                            }
                            otherlocks += otherLock;
                        }
                        lockUsers.Add(otherlocks);
                    }
                    if (fmd.IsStale)
                    {
                        staleFiles.Add(fmd.LocalPath.Path);
                    }
                }
                else
                {
                    IList <P4.FileMetaData> fmdList = SccService.ScmProvider.GetFileMetaData(null, file);

                    foreach (P4.FileMetaData fmd in fmdList)
                    {
                        if (fmd.OtherLock)
                        {
                            lockedFiles.Add(fmd.LocalPath.Path);
                            string otherlocks = string.Empty;
                            foreach (string otherLock in fmd.OtherLockUserClients)
                            {
                                if (string.IsNullOrEmpty(otherlocks) == false)
                                {
                                    otherlocks += ",";
                                }
                                otherlocks += otherLock;
                            }
                            lockUsers.Add(otherlocks);
                        }
                        if (fmd.IsStale)
                        {
                            staleFiles.Add(fmd.LocalPath.Path);
                        }
                    }
                }
                checkoutFiles.Add(file);
            }
            if ((lockedFiles != null) && (lockedFiles.Count > 0))
            {
                string lockWarning = Resources.WarningStyle_Locked_Prompt;
                if (FileListWarningDlg.Show(lockedFiles, lockUsers, FileListWarningDlg.WarningStyle.Locked) == DialogResult.Cancel)
                {
                    return;
                }
            }

            if ((staleFiles != null) && (staleFiles.Count > 0))
            {
                DialogResult answer = FileListWarningDlg.Show(staleFiles, null, FileListWarningDlg.WarningStyle.GetLatest);
                if (answer == DialogResult.Cancel)
                {
                    return;
                }
                if (answer == DialogResult.OK)
                {
                    if (!SccService.SyncFiles(null, staleFiles))
                    {
                        return;
                    }
                }
            }

            if (checkoutFiles.Count < 1)
            {
                return;
            }

            P4.Changelist getDesc = SccService.ScmProvider.GetChangelist(-1);
            if (getDesc == null)
            {
                return;
            }

            string newChangeDescription = getDesc.Description;

            if (newChangeDescription == Resources.DefaultChangeListDescription)
            {
                newChangeDescription = Resources.P4VsProvider_CheckoutFilesDefaultChangelistDescription;
            }
            IList <P4.Changelist> changes = SccService.ScmProvider.GetAvailibleChangelists(-1);

            int    changeListId = -1;
            string prompt       = Resources.P4VsProvider_CheckoutFilePrompt;

            if (sel.Count >= 2)
            {
                prompt = Resources.P4VsProvider_CheckoutFilesPrompt;
            }
            changeListId = SelectChangelistDlg2.ShowChooseChangelistYesNo(prompt, checkoutFiles, changes, ref newChangeDescription);

            if (changeListId < -1)
            {
                // user hit cancel
                return;
            }
            if (string.IsNullOrEmpty(newChangeDescription))
            {
                newChangeDescription = Resources.P4VsProvider_CheckoutFilesDefaultChangelistDescription;
            }
            SelectChangelistDlg.CurrentChangeList = SccService.CheckoutFiles(sel, changeListId, newChangeDescription);

            // now refresh the selected nodes' glyphs
            Glyphs.RefreshNodesGlyphs(nodes, sel);
        }
Example #18
0
        public static int ShowChooseChangelistMove(string prompt, IList <P4.Changelist> items, ref string NewChangeDescription, P4ScmProvider scm)
        {
            if (Preferences.LocalSettings.GetBool("PromptForChanglist", true))
            {
                if (ActiveChangeList > -1)
                {
                    CurrentChangeListLastUse = DateTime.Now;
                    //					NewChangeDescription = CurrentChangeDescription;
                    return(CurrentChangeList);
                }
                SelectChangelistDlg dlg = new SelectChangelistDlg(prompt, items);

                dlg.DontShowAgainCB.Enabled = false;
                dlg.DontShowAgainCB.Visible = false;

                dlg.saveToChangelistBtn.Visible = false;
                dlg.submitBtn.Visible           = false;

                dlg.NewChangelistDescription = NewChangeDescription;

                dlg.OkBtn.Visible     = true;
                dlg.CancelBtn.Visible = true;

                dlg.CancelButton = dlg.CancelBtn;

                dlg.CheckoutAndSaveBtn.Visible = false;
                dlg.SkipSaveBtn.Visible        = false;
                dlg.SaveAsBtn.Visible          = false;
                dlg.CancelSaveBtn.Visible      = false;

                dlg.CancelEditBtn.Visible = false;
                dlg.EditFileBtn.Visible   = false;
                dlg.CheckoutBtn.Visible   = false;

                dlg.BtnPanel.Controls.Clear();
                dlg.BtnPanel.Controls.Add(dlg.BtnPanelBuffer);
                //dlg.BtnPanel.Controls.Add(dlg.CancelEditBtn);
                dlg.BtnPanel.Controls.Add(dlg.CancelBtn);
                //dlg.BtnPanel.Controls.Add(dlg.CancelSaveBtn);
                //dlg.BtnPanel.Controls.Add(dlg.SkipSaveBtn);
                //dlg.BtnPanel.Controls.Add(dlg.SaveAsBtn);
                //dlg.BtnPanel.Controls.Add(dlg.CheckoutAndSaveBtn);
                //dlg.BtnPanel.Controls.Add(dlg.CheckoutBtn);
                //dlg.BtnPanel.Controls.Add(dlg.EditFileBtn);
                //dlg.BtnPanel.Controls.Add(dlg.submitBtn);
                dlg.BtnPanel.Controls.Add(dlg.OkBtn);
                //dlg.BtnPanel.Controls.Add(dlg.saveToChangelistBtn);

                dlg.OkBtn.Column     = 1;
                dlg.CancelBtn.Column = 2;
                dlg.BtnPanel.InitializeGrid(true);

                if (dlg.ShowDialog() == DialogResult.Cancel)
                {
                    CurrentChangeList = -2;
                    return(CurrentChangeList);
                }
                int changelistId = dlg.Result;
                if (changelistId == -1)
                {
                    P4.Changelist newChange = scm.Connection.Repository.NewChangelist();
                    // Make sure files is empty. If default has files in it, a new changelist
                    // will automatically get those files.
                    newChange.Files = null;

                    newChange.Description = dlg.DescriptionTB.Text;
                    newChange             = scm.SaveChangelist(newChange, null);
                    return(newChange.Id);
                }
                CurrentChangeListLastUse = DateTime.Now;
                CurrentChangeList        = changelistId;
                return(changelistId);
            }
            else
            {
                return(P4VsProvider.Instance.ChangeLists.ActiveChangeList);
            }
        }
Example #19
0
        private void fixesLV_BeforeExpand(object Sender, TreeListViewEventArgs args)
        {
            P4.Changelist changeToExpand = args.Node.Tag as P4.Changelist;
            args.Node.ChildNodes.Clear();
            if ((changeToExpand.Files == null || changeToExpand.Files.Count == 0) &&
                (changeToExpand.Jobs == null || changeToExpand.Jobs.Count == 0))
            {
                return;
            }

            foreach (P4.FileMetaData file in changeToExpand.Files)
            {
                IList <object> fields = new List <object>();
                fields.Add(file.DepotPath + "#" + file.HeadRev.ToString());
                P4FileTreeListViewItem childItem = new P4FileTreeListViewItem(args.Node,
                                                                              file, fields);
                childItem.Tag = file;
                if (!(changeToExpand.Pending))
                {
                    childItem.LeftImageIndices.Clear();
                    childItem.RightImageIndices.Clear();

                    if (file.Action == P4.FileAction.Add ||
                        file.Action == P4.FileAction.AddInto ||
                        file.Action == P4.FileAction.Added)
                    {
                        childItem.CenterImageIndices.Clear();
                        childItem.CenterImageIndices.Add(17); //add icon
                    }

                    if (file.Action == P4.FileAction.None)
                    {
                        childItem.CenterImageIndices.Clear();
                        childItem.CenterImageIndices.Add(18); //archive icon
                    }

                    if (file.Action == P4.FileAction.Branch ||
                        file.Action == P4.FileAction.BranchFrom ||
                        file.Action == P4.FileAction.BranchInto)
                    {
                        childItem.CenterImageIndices.Clear();
                        childItem.CenterImageIndices.Add(19); //branch icon
                    }

                    if (file.Action == P4.FileAction.Delete ||
                        file.Action == P4.FileAction.DeleteFrom ||
                        file.Action == P4.FileAction.DeleteInto)
                    {
                        childItem.CenterImageIndices.Clear();
                        childItem.CenterImageIndices.Add(20); //delete icon
                    }

                    if (file.Action == P4.FileAction.Edit ||
                        file.Action == P4.FileAction.EditFrom ||
                        file.Action == P4.FileAction.EditIgnored ||
                        file.Action == P4.FileAction.EditInto)
                    {
                        childItem.CenterImageIndices.Clear();
                        childItem.CenterImageIndices.Add(21); //edit icon
                    }

                    if (file.Action == P4.FileAction.Integrate ||
                        file.Action == P4.FileAction.CopyFrom ||
                        file.Action == P4.FileAction.CopyInto ||
                        file.Action == P4.FileAction.MergeFrom ||
                        file.Action == P4.FileAction.MergeInto)
                    {
                        childItem.CenterImageIndices.Clear();
                        childItem.CenterImageIndices.Add(22); //integrate icon
                    }

                    if (file.Action == P4.FileAction.MoveAdd)
                    {
                        childItem.CenterImageIndices.Clear();
                        childItem.CenterImageIndices.Add(23); //moveadd icon
                    }

                    if (file.Action == P4.FileAction.MoveDelete)
                    {
                        childItem.CenterImageIndices.Clear();
                        childItem.CenterImageIndices.Add(24); //movedelete icon
                    }

                    if (file.Action == P4.FileAction.Purge)
                    {
                        childItem.CenterImageIndices.Clear();
                        childItem.CenterImageIndices.Add(25); //purge icon
                    }
                }

                args.Node.ChildNodes.Add(childItem);
            }

            if (changeToExpand.Jobs != null)
            {
                foreach (KeyValuePair <string, string> job in changeToExpand.Jobs)
                {
                    IList <object> fields = new List <object>();
                    fields.Add(job.Key);
                    P4FileTreeListViewItem childItem = new P4FileTreeListViewItem(args.Node,
                                                                                  null, fields);
                    childItem.CenterImageIndices.Clear();
                    childItem.LeftImageIndices.Clear();
                    childItem.RightImageIndices.Clear();
                    childItem.CenterImageIndices.Add(16); //job icon

                    args.Node.ChildNodes.Add(childItem);
                }
            }
        }
Example #20
0
 public ChangelistItem(P4.Changelist _change)
 {
     change = _change;
 }
Example #21
0
        public static void ChangeFileType(P4ScmProvider scm, IList <string> paths)
        {
            FileAttributesDlg dlg = new FileAttributesDlg(scm);

            int changelistId = 0;

            IList <string> CheckedinFiles  = new List <string>();
            IList <string> CheckedoutFiles = new List <string>();

            IList <P4.FileMetaData> fmd = scm.GetFileMetaData(paths, null);

            P4.FileType ft = null;
            if (fmd != null)
            {
                foreach (P4.FileMetaData md in fmd)
                {
                    if (ft == null)
                    {
                        ft = md.Type;
                        if (md.Change > 0)
                        {
                            changelistId = md.Change;
                        }
                    }
                    else
                    {
                        // only keep the base type if all the same
                        if (ft.BaseType != md.Type.BaseType)
                        {
                            ft.BaseType = P4.BaseFileType.Unspecified;
                        }
                        // only keep fags that are the same
                        ft.Modifiers &= md.Type.Modifiers;
                        if (changelistId != md.Change)
                        {
                            changelistId = 0;
                        }
                    }
                    if (md.Action == P4.FileAction.None)
                    {
                        CheckedinFiles.Add(md.LocalPath.Path);
                    }
                    else
                    {
                        CheckedoutFiles.Add(md.LocalPath.Path);
                    }
                }
            }

            dlg.FileType           = ft;
            dlg.TargetChangelistId = changelistId;

            if (dlg.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            int targetChangelist = dlg.TargetChangelistId;

            P4.Options options = null;

            if (targetChangelist < 0)
            {
                // if selected, create a new numbered changelist with the files.

                P4.Changelist change = scm.Connection.Repository.NewChangelist();
                change.Description = "<P4VS Change FileType>";
                change.ClientId    = scm.Connection.Repository.Connection.Client.Name;
                change.OwnerName   = scm.Connection.Repository.Connection.UserName;
                change.Files       = null;           // new List<P4.FileMetaData>();

                P4.Changelist newChange = scm.Connection.Repository.CreateChangelist(change);

                targetChangelist = newChange.Id;
            }

            if (CheckedoutFiles.Count > 0)
            {
                options = new P4.ReopenCmdOptions(targetChangelist, dlg.FileType);
                if ((options.ContainsKey("-t")) && (string.IsNullOrEmpty(options["-t"]) == false))
                {
                    scm.ReopenFiles(P4.FileSpec.LocalSpecList(CheckedoutFiles), options);
                }
            }

            if (CheckedinFiles.Count > 0)
            {
                options = new P4.EditCmdOptions(P4.EditFilesCmdFlags.None, targetChangelist, dlg.FileType);

                if ((options.ContainsKey("-t")) && (string.IsNullOrEmpty(options["-t"]) == false))
                {
                    scm.EditFiles(P4.FileSpec.LocalSpecList(CheckedinFiles), options);
                }
            }
            scm.BroadcastChangelistUpdate(null, new P4ScmProvider.ChangelistUpdateArgs(targetChangelist,
                                                                                       P4ScmProvider.ChangelistUpdateArgs.UpdateType.Edit));
        }
Example #22
0
        public static P4.Changelist ShowChooseChangelistSubmit(string prompt, IList <P4.Changelist> items,
                                                               ref string NewChangeDescription, out string action, bool streams, bool integ, P4ScmProvider scm)
        {
            action = null;
            P4.Changelist changelist = scm.Connection.Repository.NewChangelist();
            // Make sure files is empty. If default has files in it, a new changelist
            // will automatically get those files.
            changelist.Files = new List <P4.FileMetaData>();
            if (Preferences.LocalSettings.GetBool("PromptForChanglist", true) ||
                integ == true)
            {
                SelectChangelistDlg dlg = new SelectChangelistDlg(prompt, items);

                dlg.saveToChangelistBtn.Enabled = true;
                dlg.saveToChangelistBtn.Visible = true;
                dlg.submitBtn.Enabled           = true;
                dlg.submitBtn.Visible           = true;

                if (streams)
                {
                    dlg.CancelBtn.Visible = false;
                    dlg.CancelBtn.Enabled = false;
                    dlg.ControlBox        = false;

                    dlg.BtnPanel.Controls.Clear();
                    dlg.BtnPanel.Controls.Add(dlg.BtnPanelBuffer);
                    dlg.BtnPanel.Controls.Add(dlg.saveToChangelistBtn);
                    dlg.BtnPanel.Controls.Add(dlg.submitBtn);

                    dlg.saveToChangelistBtn.Column = 1;
                    dlg.submitBtn.Column           = 2;
                    dlg.submitBtn.Column           = 3;
                    dlg.BtnPanel.InitializeGrid(true);
                }
                else
                {
                    dlg.CancelBtn.Visible = true;

                    dlg.BtnPanel.Controls.Clear();
                    dlg.BtnPanel.Controls.Add(dlg.BtnPanelBuffer);
                    dlg.BtnPanel.Controls.Add(dlg.saveToChangelistBtn);
                    dlg.BtnPanel.Controls.Add(dlg.submitBtn);
                    dlg.BtnPanel.Controls.Add(dlg.CancelBtn);

                    dlg.saveToChangelistBtn.Column = 1;
                    dlg.submitBtn.Column           = 2;
                    dlg.submitBtn.Column           = 3;
                    dlg.CancelBtn.Column           = 4;
                    dlg.BtnPanel.InitializeGrid(true);
                }
                dlg.NewChangelistDescription = NewChangeDescription;

                dlg.CancelButton = dlg.CancelBtn;

                dlg.OkBtn.Visible = false;

                dlg.CheckoutAndSaveBtn.Visible = false;
                dlg.SkipSaveBtn.Visible        = false;
                dlg.SaveAsBtn.Visible          = false;
                dlg.CancelSaveBtn.Visible      = false;

                dlg.CancelEditBtn.Visible = false;
                dlg.EditFileBtn.Visible   = false;
                dlg.CheckoutBtn.Visible   = false;

                //dlg.BtnPanel.Controls.Add(dlg.CancelEditBtn);
                //dlg.BtnPanel.Controls.Add(dlg.CancelBtn);
                //dlg.BtnPanel.Controls.Add(dlg.CancelSaveBtn);
                //dlg.BtnPanel.Controls.Add(dlg.SkipSaveBtn);
                //dlg.BtnPanel.Controls.Add(dlg.SaveAsBtn);
                //dlg.BtnPanel.Controls.Add(dlg.CheckoutAndSaveBtn);
                //dlg.BtnPanel.Controls.Add(dlg.CheckoutBtn);
                //dlg.BtnPanel.Controls.Add(dlg.EditFileBtn);

                if (dlg.ShowDialog() == DialogResult.Cancel)
                {
                    return(null);
                }

                if (dlg.DialogResult == DialogResult.OK)
                {
                    // Save to Changelist
                    changelist.Description = dlg.DescriptionTB.Text;
                    return(changelist);
                }

                if (dlg.DialogResult == DialogResult.Yes)
                {
                    // Submit...
                    action = "submit";
                    changelist.Description = dlg.DescriptionTB.Text;
                    return(changelist);
                }

                int changelistId = dlg.Result;
                if (changelistId == -1)
                {
                    changelist.Description = dlg.DescriptionTB.Text;
                }
                return(changelist);
            }
            else
            {
                changelist = P4VsProvider.CurrentScm.GetChangelist(P4VsProvider.Instance.ChangeLists.ActiveChangeList, null);
                return(changelist);
            }
        }