public PathListViewItem(LogChangedPathsView view, ISvnLogItem logItem, SvnChangeItem change, Uri reposRoot, bool isInSelection, Color[] colorInfo) : base(view) { if (logItem == null) { throw new ArgumentNullException("logItem"); } if (change == null) { throw new ArgumentNullException("change"); } _logItem = logItem; _change = change; _isInSelection = isInSelection; Uri uri; string path = change.Path.TrimStart('/'); if (string.IsNullOrEmpty(path)) { uri = reposRoot; } else { uri = SvnTools.AppendPathSuffix(reposRoot, path); } _origin = new SvnOrigin(new SvnUriTarget(uri, logItem.Revision), reposRoot); RefreshText(); UpdateColors(colorInfo); }
public void OnUpdate(CommandUpdateEventArgs e) { ISvnLogItem item = EnumTools.GetSingle(e.Selection.GetSelection <ISvnLogItem>()); if (item == null || EnumTools.IsEmpty(item.Issues)) { e.Enabled = false; } }
void FocusChanged(object sender, EventArgs e) { Items.Clear(); ISvnLogItem item = ItemSource.FocusedItem; if (item != null && item.ChangedPaths != null) { IAnkhCommandStates states = null; if (Context != null) { states = Context.GetService <IAnkhCommandStates>(); } Color[] colorInfo = null; if (!SystemInformation.HighContrast && (states != null && (!states.ThemeDefined || states.ThemeLight))) { colorInfo = new Color[] { Color.Gray, Color.FromArgb(100, 0, 100), Color.DarkRed, Color.DarkBlue }; } List <PathListViewItem> paths = new List <PathListViewItem>(); List <string> origins = new List <string>(); foreach (SvnOrigin o in LogSource.Targets) { string origin = SvnTools.UriPartToPath(o.RepositoryRoot.MakeRelativeUri(o.Uri).ToString()).Replace('\\', '/'); if (origin.Length == 0 || origin[0] != '/') { origin = "/" + origin; } origins.Add(origin.TrimEnd('/')); } if (item.ChangedPaths != null) { foreach (SvnChangeItem i in item.ChangedPaths) { bool hasFocus = (colorInfo != null) && HasFocus(origins, i.Path); paths.Add(new PathListViewItem(this, item, i, item.RepositoryRoot, hasFocus, colorInfo)); } } Items.AddRange(paths.ToArray()); } }
private void versionBrowse_Click(object sender, EventArgs e) { using (LogViewerDialog lvd = new LogViewerDialog(new SvnOrigin(Context, SrcUri, null))) { if (lvd.ShowDialog(Context) != DialogResult.OK) { return; } ISvnLogItem li = EnumTools.GetSingle(lvd.SelectedItems); if (li != null) { Revision = li.Revision; specificVersionRadio.Checked = true; } } }
public void OnExecute(CommandEventArgs e) { if (_issueService == null) { _issueService = e.Context.GetService <IAnkhIssueService>(); } if (_issueService == null) { return; } ISvnLogItem selectedLog = EnumTools.GetSingle(e.Selection.GetSelection <ISvnLogItem>()); if (selectedLog == null) { return; } string issueid = null; IEnumerable <TextMarker> issues = selectedLog.Issues; if (!EnumTools.IsEmpty <TextMarker>(issues)) { using (Ankh.UI.IssueTracker.IssueSelector dlg = new Ankh.UI.IssueTracker.IssueSelector()) { dlg.Context = e.Context; dlg.LoadIssues(issues); if (!dlg.IsSingleIssue(out issueid)) { if (dlg.ShowDialog(e.Context) == System.Windows.Forms.DialogResult.OK) { issueid = dlg.SelectedIssue; } } } } if (!string.IsNullOrEmpty(issueid)) { _issueService.OpenIssue(issueid); } }
private void browseButton_Click(object sender, EventArgs e) { using (LogViewerDialog lvd = new LogViewerDialog(SvnOrigin)) { if (DialogResult.OK != lvd.ShowDialog(Context)) { return; } ISvnLogItem li = EnumTools.GetSingle(lvd.SelectedItems); if (li == null) { return; } Revision = li.Revision; } }
public void OnExecute(CommandEventArgs e) { // All checked in OnUpdate ILogControl logWindow = e.Selection.GetActiveControl <ILogControl>(); SvnOrigin origin = EnumTools.GetSingle(logWindow.Origins); ISvnLogItem item = EnumTools.GetSingle(e.Selection.GetSelection <ISvnLogItem>()); IAnkhDiffHandler diff = e.GetService <IAnkhDiffHandler>(); AnkhDiffArgs da = new AnkhDiffArgs(); da.BaseFile = diff.GetTempFile(origin.Target, item.Revision, true); if (da.BaseFile == null) { return; // User cancel } da.MineFile = ((SvnPathTarget)origin.Target).FullPath; da.BaseTitle = string.Format("Base (r{0})", item.Revision); da.MineTitle = "Working"; diff.RunDiff(da); }
public void OnUpdate(CommandUpdateEventArgs e) { ISvnLogItem item = EnumTools.GetSingle(e.Selection.GetSelection <ISvnLogItem>()); if (item != null) { ILogControl logWindow = e.Selection.GetActiveControl <ILogControl>(); if (logWindow != null) { SvnOrigin origin = EnumTools.GetSingle(logWindow.Origins); if (origin != null) { SvnPathTarget pt = origin.Target as SvnPathTarget; if (pt != null) { SvnItem svnItem = e.GetService <ISvnStatusCache>()[pt.FullPath]; if (svnItem != null && !svnItem.IsDirectory) { if (null == e.Selection.GetActiveControl <ILogControl>()) { e.Enabled = false; } return; } } } } } e.Enabled = false; }
public void OnExecute(CommandEventArgs e) { ILogControl logWindow = e.Selection.GetActiveControl <ILogControl>(); IProgressRunner progressRunner = e.GetService <IProgressRunner>(); if (logWindow == null) { return; } List <SvnRevisionRange> revisions = new List <SvnRevisionRange>(); if (e.Command == AnkhCommand.LogRevertTo) { ISvnLogItem item = EnumTools.GetSingle(e.Selection.GetSelection <ISvnLogItem>()); if (item == null) { return; } // Revert to revision, is revert everything after revisions.Add(new SvnRevisionRange(SvnRevision.Working, item.Revision)); } else { foreach (ISvnLogItem item in e.Selection.GetSelection <ISvnLogItem>()) { revisions.Add(new SvnRevisionRange(item.Revision, item.Revision - 1)); } } if (revisions.Count == 0) { return; } IAnkhOpenDocumentTracker tracker = e.GetService <IAnkhOpenDocumentTracker>(); HybridCollection <string> nodes = new HybridCollection <string>(StringComparer.OrdinalIgnoreCase); foreach (SvnOrigin o in logWindow.Origins) { SvnPathTarget pt = o.Target as SvnPathTarget; if (pt == null) { continue; } foreach (string file in tracker.GetDocumentsBelow(pt.FullPath)) { if (!nodes.Contains(file)) { nodes.Add(file); } } } if (nodes.Count > 0) { tracker.SaveDocuments(nodes); // Saves all open documents below all specified origins } using (DocumentLock dl = tracker.LockDocuments(nodes, DocumentLockType.NoReload)) using (dl.MonitorChangesForReload()) { SvnMergeArgs ma = new SvnMergeArgs(); progressRunner.RunModal(LogStrings.Reverting, delegate(object sender, ProgressWorkerArgs ee) { foreach (SvnOrigin item in logWindow.Origins) { SvnPathTarget target = item.Target as SvnPathTarget; if (target == null) { continue; } ee.Client.Merge(target.FullPath, target, revisions, ma); } }); } }
public void OnExecute(CommandEventArgs e) { ISvnLogItem selectedLog = EnumTools.GetSingle(e.Selection.GetSelection <ISvnLogItem>()); if (selectedLog == null) { return; } using (PropertyEditorDialog dialog = new PropertyEditorDialog(selectedLog.RepositoryRoot, selectedLog.Revision, true)) { SvnRevisionPropertyListArgs args = new SvnRevisionPropertyListArgs(); args.ThrowOnError = false; SvnPropertyCollection properties = null; if (!e.GetService <IProgressRunner>().RunModal(LogStrings.RetrievingRevisionProperties, delegate(object sender, ProgressWorkerArgs wa) { if (!wa.Client.GetRevisionPropertyList(selectedLog.RepositoryRoot, selectedLog.Revision, args, out properties)) { properties = null; } }).Succeeded) { return; } else if (properties != null) { List <PropertyEditItem> propItems = new List <PropertyEditItem>(); foreach (SvnPropertyValue prop in properties) { PropertyEditItem pi = new PropertyEditItem(dialog.ListView, prop.Key); pi.OriginalValue = pi.Value = pi.BaseValue = prop; propItems.Add(pi); } dialog.PropertyValues = propItems.ToArray(); } if (dialog.ShowDialog(e.Context) != DialogResult.OK) { return; } PropertyEditItem[] finalItems = dialog.PropertyValues; bool hasChanges = false; foreach (PropertyEditItem ei in finalItems) { if (ei.ShouldPersist) { hasChanges = true; break; } } if (!hasChanges) { return; } IProgressRunner progressRunner = e.GetService <IProgressRunner>(); ProgressRunnerResult result = progressRunner.RunModal(LogStrings.UpdatingRevisionProperties, delegate(object sender, ProgressWorkerArgs ee) { foreach (PropertyEditItem ei in finalItems) { if (!ei.ShouldPersist) { continue; } if (ei.IsDeleted) { ee.Client.DeleteRevisionProperty(selectedLog.RepositoryRoot, selectedLog.Revision, ei.PropertyName); } else if (ei.Value.StringValue != null) { ee.Client.SetRevisionProperty(selectedLog.RepositoryRoot, selectedLog.Revision, ei.PropertyName, ei.Value.StringValue); } else { ee.Client.SetRevisionProperty(selectedLog.RepositoryRoot, selectedLog.Revision, ei.PropertyName, ei.Value.RawValue); } } }); if (result.Succeeded) { ILogControl logWindow = e.Selection.GetActiveControl <ILogControl>(); if (logWindow != null) { logWindow.Restart(); } } } // using }