예제 #1
0
        public override void Execute(object parameter)
        {
            var selectedItems = GetSelectedItems();

            if (selectedItems.Count != 1)
            {
                return;
            }

            var items = GetProjects(selectedItems);

            var project = ProjectManager.GetProject(items[0].FileName);

            if (project == null)
            {
                return;
            }

            var site = project.Site;

            if (site == null)
            {
                return;
            }

            var dialog = new CheckOutDialog(site);

            if (AppHost.Shell.ShowDialog(dialog) != true)
            {
                return;
            }

            var projectItems = CreateProjectItems(project, dialog.Files.SelectedItems);

            Download(projectItems);

            AddItems(projectItems);

            project.Save();
        }
        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);
        }