/// <summary>Create <see cref="RemoteBranchMenu"/>.</summary> /// <param name="remoteTag">Remote branch, for which menu is generated.</param> public RemoteTagMenu(RemoteRepositoryTag remoteTag) { Verify.Argument.IsNotNull(remoteTag, "remoteTag"); Verify.Argument.IsFalse(remoteTag.IsDeleted, "remote", Resources.ExcObjectIsDeleted.UseAsFormat("RemoteTag")); _remoteTag = remoteTag; Items.Add(GuiItemFactory.GetRemoveRemoteTagItem<ToolStripMenuItem>(_remoteTag, "{0}")); var copyToClipboardItem = new ToolStripMenuItem(Resources.StrCopyToClipboard); copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem<ToolStripMenuItem>( Resources.StrName, _remoteTag.Name)); copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem<ToolStripMenuItem>( Resources.StrFullName, _remoteTag.FullName)); copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyHashToClipboardItem<ToolStripMenuItem>( Resources.StrPosition, _remoteTag.Hash.ToString())); Items.Add(copyToClipboardItem); }
/// <summary>Create <see cref="RemoteBranchMenu"/>.</summary> /// <param name="remoteTag">Remote branch, for which menu is generated.</param> public RemoteTagMenu(RemoteRepositoryTag remoteTag) { Verify.Argument.IsNotNull(remoteTag, nameof(remoteTag)); Verify.Argument.IsFalse(remoteTag.IsDeleted, nameof(remoteTag), Resources.ExcObjectIsDeleted.UseAsFormat("RemoteTag")); RemoteTag = remoteTag; Items.Add(GuiItemFactory.GetRemoveRemoteTagItem <ToolStripMenuItem>(RemoteTag, "{0}")); var copyToClipboardItem = new ToolStripMenuItem(Resources.StrCopyToClipboard); copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>( Resources.StrName, RemoteTag.Name)); copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>( Resources.StrFullName, RemoteTag.FullName)); copyToClipboardItem.DropDownItems.Add(GuiItemFactory.GetCopyHashToClipboardItem <ToolStripMenuItem>( Resources.StrPosition, RemoteTag.Hash.ToString())); Items.Add(copyToClipboardItem); }
private void OnFetchCompleted(IList<RemoteReferenceData> refs) { var branches = new Dictionary<string, RemoteReferenceData>(refs.Count); var tags = new Dictionary<string, RemoteReferenceData>(refs.Count); foreach(var r in refs) { switch(r.ReferenceType) { case ReferenceType.LocalBranch: branches.Add(r.Name.Substring(GitConstants.LocalBranchPrefix.Length), r); break; case ReferenceType.Tag: tags.Add(r.Name.Substring(GitConstants.TagPrefix.Length), r); break; } } List<RemoteRepositoryBranch> deletedBranches; if(_remoteBranches.Count != 0) { deletedBranches = new List<RemoteRepositoryBranch>(_remoteBranches.Count); if(branches.Count == 0) { deletedBranches.AddRange(_remoteBranches.Values); } else { foreach(var b in _remoteBranches) { if(!branches.ContainsKey(b.Key)) { deletedBranches.Add(b.Value); } else { branches.Remove(b.Key); } } } } else { deletedBranches = null; foreach(var b in _remoteBranches) { branches.Remove(b.Key); } } if(branches.Count != 0) { foreach(var b in branches) { var branch = new RemoteRepositoryBranch(this, b.Key, b.Value.Hash); _remoteBranches.Add(branch.Name, branch); InvokeBranchCreated(branch); } } if(deletedBranches != null && deletedBranches.Count != 0) { foreach(var b in deletedBranches) { _remoteBranches.Remove(b.Name); b.MarkAsDeleted(); InvokeBranchDeleted(b); } } List<RemoteRepositoryTag> deletedTags; if(_remoteTags.Count != 0) { deletedTags = new List<RemoteRepositoryTag>(_remoteTags.Count); if(tags.Count == 0) { deletedTags.AddRange(_remoteTags.Values); } else { foreach(var t in _remoteTags) { if(!tags.ContainsKey(t.Key)) { deletedTags.Add(t.Value); } else { tags.Remove(t.Key); } } } } else { deletedTags = null; foreach(var t in _remoteTags) { if(tags.ContainsKey(t.Key)) { tags.Remove(t.Key); } } } if(tags.Count != 0) { foreach(var t in tags) { var tag = new RemoteRepositoryTag(this, t.Key, t.Value.TagType, t.Value.Hash); _remoteTags.Add(tag.Name, tag); InvokeTagCreated(tag); } } if(deletedTags != null && deletedTags.Count != 0) { foreach(var t in deletedTags) { _remoteTags.Remove(t.Name); t.MarkAsDeleted(); InvokeTagDeleted(t); } } }
private void InvokeTagDeleted(RemoteRepositoryTag tag) { var handler = TagDeleted; if(handler != null) handler(this, new RemoteReferenceEventArgs(tag)); }
internal Task RemoveTagAsync(RemoteRepositoryTag tag, IProgress<OperationProgress> progress, CancellationToken cancellationToken) { Verify.Argument.IsNotNull(tag, "tag"); Verify.Argument.IsFalse(tag.IsDeleted, "tag", Resources.ExcSuppliedObjectIsDeleted.UseAsFormat("tag")); var parameters = GetRemoveRemoteReferenceParameters(tag); return _remote.Repository.Accessor .RemoveRemoteReferences.InvokeAsync(parameters, progress, cancellationToken) .ContinueWith( t => { TaskUtility.PropagateFaultedStates(t); _remoteTags.Remove(tag.Name); tag.MarkAsDeleted(); InvokeTagDeleted(tag); }, cancellationToken, TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default); }
internal void RemoveTag(RemoteRepositoryTag tag) { Verify.Argument.IsNotNull(tag, "tag"); Verify.Argument.IsFalse(tag.IsDeleted, "tag", Resources.ExcSuppliedObjectIsDeleted.UseAsFormat("tag")); var parameters = GetRemoveRemoteReferenceParameters(tag); _remote.Repository.Accessor.RemoveRemoteReferences.Invoke(parameters); _remoteTags.Remove(tag.Name); tag.MarkAsDeleted(); InvokeTagDeleted(tag); }