internal static void Open(List <ExtendedItem> items, Microsoft.TeamFoundation.VersionControl.Client.Workspace workspace)
 {
     using (var dialog = new CheckOutDialog())
     {
         dialog.FillStore(items);
         if (dialog.Run(Xwt.Toolkit.CurrentEngine.WrapWindow(MessageService.RootWindow)) == Command.Ok)
         {
             var itemsToCheckOut = dialog.SelectedItems;
             using (var progress = VersionControlService.GetProgressMonitor("Check Out", VersionControlOperationType.Pull))
             {
                 progress.BeginTask("Check Out", itemsToCheckOut.Count);
                 foreach (var item in itemsToCheckOut)
                 {
                     var path = item.IsInWorkspace ? item.LocalItem : workspace.GetLocalPathForServerPath(item.ServerPath);
                     workspace.Get(new GetRequest(item.ServerPath, RecursionType.Full, VersionSpec.Latest), GetOptions.None, progress);
                     progress.Log.WriteLine("Check out item: " + item.ServerPath);
                     var failures = workspace.PendEdit(new List <FilePath> {
                         path
                     }, RecursionType.Full, dialog.LockLevel);
                     if (failures != null && failures.Any())
                     {
                         if (failures.Any(f => f.SeverityType == SeverityType.Error))
                         {
                             foreach (var failure in failures.Where(f => f.SeverityType == SeverityType.Error))
                             {
                                 progress.ReportError(failure.Code, new Exception(failure.Message));
                             }
                             break;
                         }
                         foreach (var failure in failures.Where(f => f.SeverityType == SeverityType.Warning))
                         {
                             progress.ReportWarning(failure.Message);
                         }
                     }
                 }
                 progress.EndTask();
                 progress.ReportSuccess("Finish Check Out.");
             }
         }
     }
 }
        private void OnListItemClicked(object sender, RowActivatedArgs e)
        {
            TreeIter iter;

            if (!_listStore.GetIter(out iter, e.Path))
            {
                return;
            }

            var item = (ExtendedItem)_listStore.GetValue(iter, 0);

            if (item.ItemType == ItemType.Folder)
            {
                ExpandPath(item.TargetServerItem);
                return;
            }
            if (item.ItemType == ItemType.File)
            {
                if (IsMapped(item.ServerPath))
                {
                    if (item.IsInWorkspace)
                    {
                        if (MonoDevelop.Projects.Services.ProjectService.IsWorkspaceItemFile(item.LocalItem))
                        {
                            IdeApp.Workspace.OpenWorkspaceItem(item.LocalItem, true);
                        }
                        else
                        {
                            IdeApp.Workbench.OpenDocument(item.LocalItem, null, true);
                        }
                    }
                    else
                    {
                        var filePath = this.DownloadItemToTemp(item);
                        if (MonoDevelop.Projects.Services.ProjectService.IsWorkspaceItemFile(filePath))
                        {
                            var parentFolder = _currentWorkspace.GetExtendedItem(item.ServerPath.ParentPath, ItemType.Folder);
                            if (parentFolder == null)
                            {
                                return;
                            }
                            GetLatestVersion(new List <ExtendedItem> {
                                parentFolder
                            });
                            var futurePath = _currentWorkspace.GetLocalPathForServerPath(item.ServerPath);
                            IdeApp.Workspace.OpenWorkspaceItem(futurePath, true);
                            FileHelper.FileDelete(filePath);
                        }
                        else
                        {
                            IdeApp.Workbench.OpenDocument(filePath, null, null);
                        }
                    }
                }
                else
                {
                    var filePath = this.DownloadItemToTemp(item);
                    IdeApp.Workbench.OpenDocument(filePath, null, true);
                }
            }
        }