public override void OnExecute(CommandEventArgs e) { string name; if (e.Command == AnkhCommand.MoveToIgnoreChangeList) name = IgnoreOnCommit; else if (e.Command == AnkhCommand.RemoveFromChangeList) name = null; else if (e.Command >= AnkhCommand.MoveToExistingChangeList0 && e.Command < AnkhCommand.MoveToExistingChangeListMax) { List<string> names = GetRecentNames(e); int n = e.Command - AnkhCommand.MoveToExistingChangeList0; if (n >= names.Count) return; name = names[n]; } else using(CreateChangeListDialog dlg = new CreateChangeListDialog()) { if(DialogResult.OK != dlg.ShowDialog(e.Context)) return; name = dlg.ChangeListName; } if(string.IsNullOrEmpty(name)) name = null; List<string> paths = new List<string>(); foreach (SvnItem item in e.Selection.GetSelectedSvnItems(false)) { if (item.IsVersioned && (name != null) ? (item.IsFile || item.IsModified || item.IsDocumentDirty) : !string.IsNullOrEmpty(item.Status.ChangeList)) { paths.Add(item.FullPath); } } if (paths.Count == 0) return; e.Selection.Cache.Remove(typeof(ItemMoveToChangeList)); // Remove cached list of items using (SvnClient cl = e.GetService<ISvnClientPool>().GetNoUIClient()) { if (name == null) { SvnRemoveFromChangeListArgs ra = new SvnRemoveFromChangeListArgs(); ra.ThrowOnError = false; cl.RemoveFromChangeList(paths, ra); } else { SvnAddToChangeListArgs ca = new SvnAddToChangeListArgs(); ca.ThrowOnError = false; cl.AddToChangeList(paths, name, ca); } // The svn client broadcasts glyph updates to fix our UI } }
public override void OnExecute(CommandEventArgs e) { string name; if (e.Command == AnkhCommand.MoveToIgnoreChangeList) { name = IgnoreOnCommit; } else if (e.Command == AnkhCommand.RemoveFromChangeList) { name = null; } else if (e.Command >= AnkhCommand.MoveToExistingChangeList0 && e.Command < AnkhCommand.MoveToExistingChangeListMax) { List <string> names = GetRecentNames(e); int n = e.Command - AnkhCommand.MoveToExistingChangeList0; if (n >= names.Count) { return; } name = names[n]; } else { using (CreateChangeListDialog dlg = new CreateChangeListDialog()) { if (DialogResult.OK != dlg.ShowDialog(e.Context)) { return; } name = dlg.ChangeListName; } } if (string.IsNullOrEmpty(name)) { name = null; } List <string> paths = new List <string>(); foreach (SvnItem item in e.Selection.GetSelectedSvnItems(false)) { if (item.IsVersioned && (name != null) ? (item.IsFile || item.IsModified || item.IsDocumentDirty) : !string.IsNullOrEmpty(item.Status.ChangeList)) { paths.Add(item.FullPath); } } if (paths.Count == 0) { return; } e.Selection.Cache.Remove(typeof(ItemMoveToChangeList)); // Remove cached list of items using (SvnClient cl = e.GetService <ISvnClientPool>().GetNoUIClient()) { if (name == null) { SvnRemoveFromChangeListArgs ra = new SvnRemoveFromChangeListArgs(); ra.ThrowOnError = false; cl.RemoveFromChangeList(paths, ra); } else { SvnAddToChangeListArgs ca = new SvnAddToChangeListArgs(); ca.ThrowOnError = false; cl.AddToChangeList(paths, name, ca); } // The svn client broadcasts glyph updates to fix our UI } }