Ejemplo n.º 1
0
        internal static void Open(List <ExtendedItem> items, Microsoft.TeamFoundation.VersionControl.Client.Workspace workspace)
        {
            using (var dialog = new LockDialog())
            {
                dialog.FillStore(items);
                if (dialog.Run(Toolkit.CurrentEngine.WrapWindow(MessageService.RootWindow)) == Command.Ok)
                {
                    var itemsToLock = dialog.SelectedItems;
                    var lockLevel   = dialog.LockLevel;

                    using (var progress = VersionControlService.GetProgressMonitor("Lock Files", VersionControlOperationType.Pull))
                    {
                        progress.BeginTask("Lock Files", itemsToLock.Count);
                        var folders = new List <string>(itemsToLock.Where(i => i.ItemType == ItemType.Folder).Select(i => (string)i.ServerPath));
                        var files   = new List <string>(itemsToLock.Where(i => i.ItemType == ItemType.File).Select(i => (string)i.ServerPath));
                        workspace.LockFolders(folders, lockLevel);
                        workspace.LockFiles(files, lockLevel);
                        progress.EndTask();
                        progress.ReportSuccess("Finish locking.");
                    }
                }
            }
        }
        private List <MenuItem> EditGroup(List <ExtendedItem> items)
        {
            var groupItems = new List <MenuItem>();
            //Check Out
            var checkOutItems = items.Where(i => i.ChangeType == ChangeType.None || i.ChangeType == ChangeType.Lock || i.ItemType == ItemType.Folder).ToList();

            if (checkOutItems.Any())
            {
                MenuItem checkOutItem = new MenuItem(GettextCatalog.GetString("Check out items"));
                checkOutItem.Activated += (sender, e) =>
                {
                    CheckOutDialog.Open(checkOutItems, _currentWorkspace);
                    FireFilesChanged(checkOutItems);
                    RefreshList(items);
                };
                groupItems.Add(checkOutItem);
            }
            //Lock
            var lockItems = items.Where(i => !i.IsLocked).ToList();

            if (lockItems.Any())
            {
                MenuItem lockItem = new MenuItem(GettextCatalog.GetString("Lock"));
                lockItem.Activated += (sender, e) =>
                {
                    LockDialog.Open(lockItems, _currentWorkspace);
                    FireFilesChanged(lockItems);
                    RefreshList(items);
                };
                groupItems.Add(lockItem);
            }
            //UnLock
            var unLockItems = items.Where(i => i.IsLocked && !i.HasOtherPendingChange).ToList();

            if (unLockItems.Any())
            {
                MenuItem unLockItem = new MenuItem(GettextCatalog.GetString("UnLock"));
                unLockItem.Activated += (sender, e) =>
                {
                    var folders = new List <string>(unLockItems.Where(i => i.ItemType == ItemType.Folder).Select(i => (string)i.ServerPath));
                    var files   = new List <string>(unLockItems.Where(i => i.ItemType == ItemType.File).Select(i => (string)i.ServerPath));
                    _currentWorkspace.LockFolders(folders, LockLevel.None);
                    _currentWorkspace.LockFiles(files, LockLevel.None);
                    FireFilesChanged(unLockItems);
                    RefreshList(items);
                };
                groupItems.Add(unLockItem);
            }
            //Rename
            var ableToRename = items.FirstOrDefault(i => !i.ChangeType.HasFlag(ChangeType.Delete));

            if (ableToRename != null)
            {
                MenuItem renameItem = new MenuItem(GettextCatalog.GetString("Rename"));
                renameItem.Activated += (sender, e) =>
                {
                    RenameDialog.Open(ableToRename, _currentWorkspace);
                    FireFilesChanged(new List <ExtendedItem> {
                        ableToRename
                    });
                    RefreshList(items);
                };
                groupItems.Add(renameItem);
            }
            //Delete
            var ableToDelete = items.Where(i => !i.ChangeType.HasFlag(ChangeType.Delete)).ToList();

            if (ableToDelete.Any())
            {
                MenuItem deleteItem = new MenuItem(GettextCatalog.GetString("Delete"));
                deleteItem.Activated += (sender, e) => DeleteItems(ableToDelete);
                groupItems.Add(deleteItem);
            }
            //Undo
            var undoItems = items.Where(i => !i.ChangeType.HasFlag(ChangeType.None) || i.ItemType == ItemType.Folder).ToList();

            if (undoItems.Any())
            {
                MenuItem revertItem = new MenuItem(GettextCatalog.GetString("Undo Changes"));
                revertItem.Activated += (sender, e) =>
                {
                    UndoDialog.Open(undoItems, _currentWorkspace);
                    FireFilesChanged(undoItems);
                    RefreshList(items);
                };
                groupItems.Add(revertItem);

                MenuItem checkinItem = new MenuItem(GettextCatalog.GetString("Check In pending changes"));
                checkinItem.Activated += (sender, e) =>
                {
                    CheckInDialog.Open(undoItems, _currentWorkspace);
                    FireFilesChanged(undoItems);
                    RefreshList(items);
                };
                groupItems.Add(checkinItem);
            }
            return(groupItems);
        }