public bool Execute() { var path = _txtPath.Text.Trim(); if (path.Length == 0) { NotificationService.NotifyInputError(_txtPath, Resources.ErrInvalidPath, Resources.ErrPathCannotBeEmpty); return(false); } var prov = _environment.FindProviderForDirectory(path); if (prov == null) { NotificationService.NotifyInputError(_txtPath, Resources.ErrInvalidPath, Resources.ErrPathIsNotValidRepository.UseAsFormat(path)); return(false); } var item = new RepositoryListItem(new RepositoryLink(path, prov.Name) { Description = _txtDescription.Text }); _repositoryList.Items.Add(item); return(true); }
public RepositoryGroupBinding(CustomListBoxItemsCollection items, RepositoryGroup group) { Verify.Argument.IsNotNull(items, nameof(items)); Verify.Argument.IsNotNull(group, nameof(group)); _items = items; _group = group; _groupsMapping = new Dictionary <RepositoryGroup, RepositoryGroupListItem>(); _repositoriesMapping = new Dictionary <RepositoryLink, RepositoryListItem>(); foreach (var subGroup in group.Groups) { var item = new RepositoryGroupListItem(subGroup); _groupsMapping.Add(subGroup, item); items.Add(item); } foreach (var repository in group.Respositories) { var item = new RepositoryListItem(repository); _repositoriesMapping.Add(repository, item); items.Add(item); } group.Groups.Changed += OnGroupsChanged; group.Respositories.Changed += OnRepositoriesChanged; }
protected override void LoadMoreViewFrom(Section section) { base.LoadMoreViewFrom(section); var listNode = section.TryGetSection("RepositoryList"); if (listNode != null) { _lstLocalRepositories.LoadViewFrom(listNode); _lstLocalRepositories.BeginUpdate(); _lstLocalRepositories.Items.Clear(); _lstLocalRepositories.LoadViewFrom(listNode); _repositories.Clear(); var itemsNode = listNode.TryGetSection("Items"); if (itemsNode != null) { foreach (var s in itemsNode.Sections) { var link = new RepositoryLink(s); var item = new RepositoryListItem(link); _repositories.Add(item); _lstLocalRepositories.Items.Add(item); } } _lstLocalRepositories.EndUpdate(); } }
private static bool FilterItem(RepositoryListItem item, string filter) { if (string.IsNullOrWhiteSpace(filter)) { return(true); } var index = item.DataContext.Path.IndexOf(filter, StringComparison.InvariantCultureIgnoreCase); return(index >= 0); }
public static T GetRemoveRepositoryItem <T>(RepositoryListItem repository) where T : ToolStripItem, new() { Verify.Argument.IsNotNull(repository, "repository"); var item = new T() { Text = Resources.StrRemoveRepository, Image = CachedResources.Bitmaps["ImgRepositoryRemove"], Tag = repository, }; item.Click += OnRemoveRepositoryClick; return(item); }
private void OnRepositoriesChanged(object sender, NotifyCollectionEventArgs e) { switch (e.Event) { case NotifyEvent.Insert: for (int i = e.StartIndex; i <= e.EndIndex; ++i) { var repo = _group.Respositories[i]; var item = new RepositoryListItem(repo); _repositoriesMapping.Add(repo, item); _items.Insert(i + _groupsMapping.Count, item); } break; case NotifyEvent.Remove: for (int i = e.StartIndex; i <= e.EndIndex; ++i) { var item = _items[i + _groupsMapping.Count] as RepositoryListItem; if (item != null) { _repositoriesMapping.Remove(item.DataContext); } } _items.RemoveRange(e.StartIndex + _groupsMapping.Count, e.ModifiedItems); break; case NotifyEvent.Set: for (int i = e.StartIndex; i <= e.EndIndex; ++i) { var item = _items[i + _groupsMapping.Count] as RepositoryListItem; if (item != null) { _repositoriesMapping.Remove(item.DataContext); } var repo = _group.Respositories[i]; item = new RepositoryListItem(repo); _repositoriesMapping.Add(repo, item); _items[i + _groupsMapping.Count] = item; } break; case NotifyEvent.Clear: _repositoriesMapping.Clear(); _items.RemoveRange(_groupsMapping.Count, e.ModifiedItems); break; } }
private void _btnAddLocalRepo_LinkClicked(object sender, EventArgs e) { var path = Utility.ShowPickFolderDialog(this); if (!string.IsNullOrWhiteSpace(path)) { var prov = WorkingEnvironment.FindProviderForDirectory(path); if (prov == null) { GitterApplication.MessageBoxService.Show( this, Resources.ErrPathIsNotValidRepository.UseAsFormat(path), Resources.ErrInvalidPath, MessageBoxButton.Close, MessageBoxIcon.Error); return; } var item = new RepositoryListItem(new RepositoryLink(path, prov.Name)); _lstLocalRepositories.Items.Add(item); } }
public RepositoryMenu(RepositoryListItem repository) { Verify.Argument.IsNotNull(repository, "repository"); _repository = repository; Items.Add(new ToolStripMenuItem(Resources.StrOpen, null, (s, e) => _repository.Activate())); Items.Add(GuiItemFactory.GetOpenUrlItem <ToolStripMenuItem>(Resources.StrOpenInWindowsExplorer, null, _repository.DataContext.Path)); Items.Add(GuiItemFactory.GetOpenCmdAtItem <ToolStripMenuItem>(Resources.StrOpenCommandLine, null, _repository.DataContext.Path)); var actions = GuiItemFactory.GetRepositoryActions <ToolStripMenuItem>(repository.DataContext.Path); if (actions.Count != 0) { Items.Add(new ToolStripSeparator()); foreach (var item in actions) { Items.Add(item); } } Items.Add(new ToolStripSeparator()); Items.Add(GuiItemFactory.GetRemoveRepositoryItem <ToolStripMenuItem>(_repository)); }
private void OnLocalRepositoriesDragDrop(object sender, DragEventArgs e) { if (e.Effect != DragDropEffects.None) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { var data = (string[])(e.Data.GetData(DataFormats.FileDrop)); for (int i = 0; i < data.Length; ++i) { var di = new DirectoryInfo(data[i]); if (di.Exists) { var path = di.FullName; if (!IsPresentInLocalRepositoryList(path)) { var provider = WorkingEnvironment.FindProviderForDirectory(data[i]); if (provider != null) { var link = new RepositoryLink(path, provider.Name); var point = _lstLocalRepositories.PointToClient(new Point(e.X, e.Y)); CustomListBoxItemsCollection itemsCollection; var index = _lstLocalRepositories.GetInsertIndexFormPoint(point.X, point.Y, false, out itemsCollection); if (index != -1) { itemsCollection.Insert(index, new RepositoryListItem(link)); } } } } } } else if (e.Data.GetDataPresent(typeof(RepositoryListItem))) { var itemToMove = (RepositoryListItem)e.Data.GetData(typeof(RepositoryListItem)); var point = _lstLocalRepositories.PointToClient(new Point(e.X, e.Y)); CustomListBoxItemsCollection itemsCollection; var index = _lstLocalRepositories.GetInsertIndexFormPoint(point.X, point.Y, false, out itemsCollection); if (index == -1) { return; } var currentIndex = _lstLocalRepositories.Items.IndexOf(itemToMove); if (index == currentIndex) { return; } if (currentIndex == -1) { itemsCollection.Insert(index, itemToMove); } else { if (index > _lstLocalRepositories.Items.Count - 1) { --index; } itemToMove.Remove(); itemsCollection.Insert(index, itemToMove); } } else if (e.Data.GetDataPresent(typeof(RecentRepositoryListItem))) { var itemToMove = (RecentRepositoryListItem)e.Data.GetData(typeof(RecentRepositoryListItem)); var path = itemToMove.DataContext.Path; if (IsPresentInLocalRepositoryList(path)) { return; } var point = _lstLocalRepositories.PointToClient(new Point(e.X, e.Y)); CustomListBoxItemsCollection itemsCollection; var index = _lstLocalRepositories.GetInsertIndexFormPoint(point.X, point.Y, false, out itemsCollection); if (index == -1) { return; } var itemToInsert = new RepositoryListItem(new RepositoryLink(path, string.Empty)); itemsCollection.Insert(index, itemToInsert); } } }
private bool FilterItem(RepositoryListItem item) => FilterItem(item, _txtFilter.Text);
private void InsertRepositoryItem(int index, CustomListBoxItemsCollection target, RepositoryListItem itemToInsert) { if (!string.IsNullOrWhiteSpace(_txtFilter.Text)) { if (index == 0) { _repositories.Insert(0, itemToInsert); } else { var dst = _repositories.IndexOf((RepositoryListItem)_lstLocalRepositories.Items[index - 1]); _repositories.Insert(dst + 1, itemToInsert); } if (FilterItem(itemToInsert)) { target.Insert(index, itemToInsert); } } else { _repositories.Insert(index, itemToInsert); target.Insert(index, itemToInsert); } }