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