コード例 #1
0
        public void Execute(object parameter)
        {
            var container = parameter as ResourceContainer;
            var path = container.Tag as FileBrowseLink;
            
            var fileInfo = new FileInfo(path.Path);
            
            if (fileInfo.Attributes.HasFlag(FileAttributes.Directory))
            {
                // We are opening a new folder
                path.FileExplorer.Items.Clear();

                var backUpPath = new DirectoryInfo(Path.Combine(path.Path, ".."));
                var backUp = new ResourceContainer("..", new FileBrowseLink(backUpPath.FullName, path.FileExplorer));
                path.FileExplorer.Items.Add(backUp);

                var dirs = default(string[]);
                try
                {
                    dirs = Directory.GetDirectories(path.Path);
                }
                catch (UnauthorizedAccessException)
                {
                    MessageBox.Show("Access denied.", "Error");

                    path = new FileBrowseLink(backUpPath.FullName, path.FileExplorer);
                    dirs = Directory.GetDirectories(backUpPath.FullName);
                }

                foreach (var dir in dirs)
                {
                    var dirInfo = new DirectoryInfo(dir);

                    var resource = new ResourceContainer(dirInfo.Name, new FileBrowseLink(dir, path.FileExplorer), IconsDescription.Folder);
                    path.FileExplorer.Items.Add(resource);

                    dirInfo = null;
                }

                var files = Directory.GetFiles(path.Path);

                foreach (var file in files)
                {
                    var fi = new FileInfo(file);
                    if (!FileExplorerViewModel.ValidFileTypes.Contains(fi.Extension))
                        continue;

                    var resource = new ResourceContainer(fi.Name, new FileBrowseLink(file, path.FileExplorer), IconsDescription.Runbook);
                    path.FileExplorer.Items.Add(resource);

                    fileInfo = null;
                }
            }
            else
            {
                // File to open!
                var shell = IoC.Get<IShell>();
                shell.OpenDocument(new ScriptViewModel());
            }
        }
コード例 #2
0
        private void Initialize()
        {
            var backUp = new ResourceContainer("..", new FileBrowseLink(Path.Combine(_currentPath, ".."), this));
            Items.Add(backUp);

            // Enumerate folders and files
            var dirs = Directory.GetDirectories(_currentPath);

            // Add them to the file explorer
            foreach (var dir in dirs)
            {
                var dirInfo = new DirectoryInfo(dir);

                var resource = new ResourceContainer(dirInfo.Name, new FileBrowseLink(dir, this), IconsDescription.Folder);
                Items.Add(resource);

                dirInfo = null;
            }

            var files = Directory.GetFiles(_currentPath);

            // Add them to the file explorer
            foreach (var file in files)
            {
                var fileInfo = new FileInfo(file);
                if (!ValidFileTypes.Contains(fileInfo.Extension))
                    continue;

                var resource = new ResourceContainer(fileInfo.Name, new FileBrowseLink(file, this), IconsDescription.Runbook);
                Items.Add(resource);

                fileInfo = null;
            }
        }
コード例 #3
0
        public static ResourceContainer TreeFind(this IEnumerable <ResourceContainer> coll, ResourceContainer parent, ResourceContainer nodeToFind)
        {
            if (coll == null)
            {
                return(null);
            }

            var result = coll.FindElement(nodeToFind);

            if (result == null)
            {
                foreach (var item in coll)
                {
                    result = item.Items.TreeFind(item, nodeToFind);

                    if (result != null)
                    {
                        return(result);
                    }
                }

                if (result == null)
                {
                    return(null);
                }
            }

            return(parent);
        }
コード例 #4
0
        public ResourceContainer GetStructure()
        {
            var resource = new ResourceContainer(_connectionData.Name, this, IconsDescription.Cloud);
            resource.Context = _backendContext;
            resource.IsExpanded = true;
            resource.Title = _connectionData.Name;

            // Runbooks
            var runbooks = new ResourceContainer("Runbooks", new Folder("Runbooks"), IconsDescription.Folder);
            runbooks.Context = _backendContext;
            runbooks.Items = _backendContext.Tags;
            runbooks.IsExpanded = true;
            resource.Items.Add(runbooks);

            // Connections
            var connections = new ResourceContainer("Connections", new Folder("Connections"), IconsDescription.Folder);
            connections.Context = _backendContext;
            connections.Items = _backendContext.Connections;
            resource.Items.Add(connections);

            // Credentials
            var credentials = new ResourceContainer("Credentials", new Folder("Credentials"), IconsDescription.Folder);
            credentials.Context = _backendContext;
            credentials.Items = _backendContext.Credentials;
            resource.Items.Add(credentials);

            // Modules
            var modules = new ResourceContainer("Modules", new Folder("Modules"), IconsDescription.Folder);
            modules.Context = _backendContext;
            modules.Items = _backendContext.Modules;
            resource.Items.Add(modules);

            // Schedules
            var schedules = new ResourceContainer("Schedules", new Folder("Schedules"), IconsDescription.Folder);
            schedules.Context = _backendContext;
            schedules.Items = _backendContext.Schedules;
            resource.Items.Add(schedules);

            // Variables
            var variables = new ResourceContainer("Variables", new Folder("Variables"), IconsDescription.Folder);
            variables.Context = _backendContext;
            variables.Items = _backendContext.Variables;
            resource.Items.Add(variables);

            return resource;
        }