public bool ResetWorkspaceDirectoryIfRequired()
        {
            if (this.IseIntegrator == null)
            {
                return(false);
            }
            var currentPath = this.IseIntegrator.SelectedFilePath;

            if (String.IsNullOrEmpty(currentPath) || currentPath == this.CurrentWorkspaceDirectory)
            {
                return(false);
            }
            if (!this.AutoUpdateRootDirectory && this.CurrentWorkspaceDirectory != null)
            {
                return(false);
            }
            string newRootDirectoryToSearch = RootDirectoryProvider.GetRootDirectoryToSearch(currentPath);

            if (newRootDirectoryToSearch == null || newRootDirectoryToSearch == this.CurrentWorkspaceDirectory ||
                FileSystemOperationsService.IsSubdirectory(this.CurrentWorkspaceDirectory, newRootDirectoryToSearch) ||
                !Directory.Exists(newRootDirectoryToSearch))
            {
                return(false);
            }
            this.SetWorkspaceDirectory(newRootDirectoryToSearch);
            return(true);
        }
Example #2
0
 public ResetWorkspaceDirectoryCommand(IseIntegrator iseIntegrator, WorkspaceDirectoryModel workspaceDirectoryModel, RootDirectoryProvider rootDirectoryProvider,
                                       FileSystemOperationsService fileSystemOperationsService)
 {
     this.iseIntegrator               = iseIntegrator;
     this.workspaceDirectoryModel     = workspaceDirectoryModel;
     this.rootDirectoryProvider       = rootDirectoryProvider;
     this.fileSystemOperationsService = fileSystemOperationsService;
 }
 public IseFileReloader(IseIntegrator iseIntegrator, FileSystemOperationsService fileSystemOperationsService, MessageBoxHelper messageBoxHelper)
 {
     this.iseIntegrator = iseIntegrator;
     this.fileSystemOperationsService = fileSystemOperationsService;
     this.messageBoxHelper            = messageBoxHelper;
     this.iseFileWatchers             = new Dictionary <string, IseFileWatcher>();
     this.pathsToIgnore = new HashSet <string>();
 }
 public DeleteItemCommand(TreeViewModel treeViewModel, MessageBoxHelper messageBoxHelper, IseIntegrator iseIntegrator,
                          FilesPatternProvider filesPatternProvider, FileSystemOperationsService fileSystemOperationsService, UnsavedFileChecker unsavedFileChecker)
 {
     this.treeViewModel               = treeViewModel;
     this.messageBoxHelper            = messageBoxHelper;
     this.iseIntegrator               = iseIntegrator;
     this.filesPatternProvider        = filesPatternProvider;
     this.fileSystemOperationsService = fileSystemOperationsService;
     this.unsavedFileChecker          = unsavedFileChecker;
 }
        public void MoveTreeItem(TreeViewEntryItemModel movedItem, TreeViewEntryItemModel destinationItem, string rootDirectory)
        {
            if (movedItem == destinationItem || movedItem == null)
            {
                return;
            }
            if (!this.HandleUnsavedFileManipulation(movedItem))
            {
                return;
            }
            string destPath = destinationItem != null ? destinationItem.Path : rootDirectory;

            if (!MessageBoxHelper.ShowConfirmMessage(String.Format("Please confirm you want to move '{0}' to '{1}'.", movedItem.Path, destPath)))
            {
                return;
            }
            try
            {
                string newPath;
                // moved to the empty place, i.e. to the workspace directory
                if (destinationItem == null)
                {
                    newPath = this.GenerateNewPathForDir(rootDirectory, movedItem.Name);
                }
                else if (destinationItem.NodeType == NodeType.File)
                {
                    newPath = this.GenerateNewPath(destinationItem.Path, movedItem.Name);
                }
                else if (destinationItem.NodeType == NodeType.Directory)
                {
                    newPath = this.GenerateNewPathForDir(destinationItem.Path, movedItem.Name);
                }
                else
                {
                    return;
                }
                this.FilesPatternProvider.RemoveAdditionalPath(movedItem.Path);
                this.FilesPatternProvider.AddAdditionalPath(newPath);
                bool closed = this.IseIntegrator.CloseFile(movedItem.Path);
                FileSystemOperationsService.RenameFileOrDirectory(movedItem.Path, newPath);
                if (closed)
                {
                    this.IseIntegrator.GoToFile(newPath);
                }
                if (destinationItem != null)
                {
                    destinationItem.IsExpanded = true;
                }
            }
            catch (Exception e)
            {
                this.PathOfItemToSelectOnRefresh = null;
                MessageBoxHelper.ShowError("Failed to move: " + e.Message);
            }
        }
Example #6
0
 public MoveItemCommand(TreeViewModel treeViewModel, MessageBoxHelper messageBoxHelper, WorkspaceDirectoryModel workspaceDirectoryModel,
                        FilesPatternProvider filesPatternProvider, FileSystemOperationsService fileSystemOperationsService, IseIntegrator iseIntegrator,
                        UnsavedFileChecker unsavedFileEnforcer)
 {
     this.treeViewModel               = treeViewModel;
     this.messageBoxHelper            = messageBoxHelper;
     this.workspaceDirectoryModel     = workspaceDirectoryModel;
     this.filesPatternProvider        = filesPatternProvider;
     this.fileSystemOperationsService = fileSystemOperationsService;
     this.iseIntegrator               = iseIntegrator;
     this.unsavedFileEnforcer         = unsavedFileEnforcer;
 }
 public EndEditingTreeItemCommand(MainViewModel mainViewModel, TreeViewModel treeViewModel, FilesPatternProvider filesPatternProvider,
                                  IseIntegrator iseIntegrator, FileSystemOperationsService fileSystemOperationsService, MessageBoxHelper messageBoxHelper,
                                  DocumentHierarchyFactory documentHierarchyFactory)
 {
     this.mainViewModel               = mainViewModel;
     this.treeViewModel               = treeViewModel;
     this.filesPatternProvider        = filesPatternProvider;
     this.iseIntegrator               = iseIntegrator;
     this.fileSystemOperationsService = fileSystemOperationsService;
     this.messageBoxHelper            = messageBoxHelper;
     this.documentHierarchyFactory    = documentHierarchyFactory;
 }
        public void DeleteTreeItem(TreeViewEntryItemModel selectedItem)
        {
            if (selectedItem == null)
            {
                return;
            }
            if (!this.HandleUnsavedFileManipulation(selectedItem))
            {
                return;
            }
            int numFilesInside = 0;

            try
            {
                numFilesInside = Directory.GetFileSystemEntries(selectedItem.Path).Count();
            }
            catch (Exception)
            {
                // ignore - this only has impact on message
            }
            string message = numFilesInside == 0 ?
                             String.Format("'{0}' will be deleted permanently.", selectedItem.Path) :
                             String.Format("'{0}' will be deleted permanently (together with {1} items inside).", selectedItem.Path, numFilesInside);

            if (MessageBoxHelper.ShowConfirmMessage(message))
            {
                try
                {
                    this.IseIntegrator.CloseFile(selectedItem.Path);
                    this.FilesPatternProvider.RemoveAdditionalPath(selectedItem.Path);
                    FileSystemOperationsService.DeleteFileOrDirectory(selectedItem.Path);
                }
                catch (Exception e)
                {
                    MessageBoxHelper.ShowError("Failed to delete: " + e.Message);
                }
            }
        }
        private void EndRenamingTreeItem(string newValue, bool save, TreeViewEntryItemModel selectedItem)
        {
            if (!save || String.IsNullOrEmpty(newValue) || selectedItem == null)
            {
                return;
            }

            try
            {
                string oldPath = selectedItem.Path;
                string newPath = this.GenerateNewPath(selectedItem.Path, newValue);
                bool   closed  = this.IseIntegrator.CloseFile(oldPath);
                FileSystemOperationsService.RenameFileOrDirectory(oldPath, newPath);
                if (closed)
                {
                    this.IseIntegrator.GoToFile(newPath);
                }
            }
            catch (Exception e)
            {
                this.PathOfItemToSelectOnRefresh = null;
                MessageBoxHelper.ShowError("Failed to rename: " + e.Message);
            }
        }
        private void EndAddingTreeItem(string newValue, bool save, TreeViewEntryItemModel selectedItem)
        {
            if (selectedItem == null)
            {
                return;
            }
            if (!save || String.IsNullOrEmpty(newValue))
            {
                this.DocumentHierarchyFactory.RemoveTemporaryNode(selectedItem.Node);
                this.DeleteTreeViewEntryItemModel(selectedItem);
                return;
            }
            var   newPath = this.GenerateNewPath(selectedItem.Path, newValue);
            INode newNode = null;

            if (this.FindTreeViewEntryItemByPath(newPath) != null)
            {
                this.DocumentHierarchyFactory.RemoveTemporaryNode(selectedItem.Node);
                this.DeleteTreeViewEntryItemModel(selectedItem);
                MessageBoxHelper.ShowError("Item '" + newPath + "' already exists.");
                return;
            }
            if (selectedItem.NodeType == NodeType.Directory)
            {
                try
                {
                    newNode = this.DocumentHierarchyFactory.UpdateTemporaryNode(selectedItem.Node, newPath);
                    var parent = selectedItem.Parent;
                    this.DeleteTreeViewEntryItemModel(selectedItem);
                    selectedItem = this.CreateTreeViewEntryItemModel(newNode, parent, true);
                    this.FilesPatternProvider.AddAdditionalPath(newPath);
                    FileSystemOperationsService.CreateDirectory(newPath);
                }
                catch (Exception e)
                {
                    if (newNode != null)
                    {
                        newNode.Remove();
                    }
                    if (selectedItem != null)
                    {
                        this.DeleteTreeViewEntryItemModel(selectedItem);
                    }
                    this.PathOfItemToSelectOnRefresh = null;
                    MessageBoxHelper.ShowError("Failed to create directory '" + newPath + "': " + e.Message);
                }
            }
            else if (selectedItem.NodeType == NodeType.File)
            {
                try
                {
                    newNode = this.DocumentHierarchyFactory.UpdateTemporaryNode(selectedItem.Node, newPath);
                    var parent = selectedItem.Parent;
                    this.DeleteTreeViewEntryItemModel(selectedItem);
                    selectedItem = this.CreateTreeViewEntryItemModel(newNode, parent, true);
                    this.FilesPatternProvider.AddAdditionalPath(newPath);
                    FileSystemOperationsService.CreateFile(newPath);
                    this.IseIntegrator.GoToFile(newPath);
                }
                catch (Exception e)
                {
                    if (newNode != null)
                    {
                        newNode.Remove();
                    }
                    if (selectedItem != null)
                    {
                        this.DeleteTreeViewEntryItemModel(selectedItem);
                    }
                    this.PathOfItemToSelectOnRefresh = null;
                    MessageBoxHelper.ShowError("Failed to create file '" + newPath + "': " + e.Message);
                }
            }
        }