public bool SetPathChecked(string fullPath) { if (fullPath.Equals(fFullPath, StringComparison.OrdinalIgnoreCase)) { IsChecked = true; return(true); } if (fullPath.StartsWith(fFullPath, StringComparison.OrdinalIgnoreCase)) { if (!fHasLoadedChildren) { LoadChildren(); } foreach (object item in Items) { FolderTreeViewItem tvm = item as FolderTreeViewItem; if (tvm != null) { if (tvm.SetPathChecked(fullPath)) { return(true); } } } } return(false); }
private void LoadChildren() { if (fHasLoadedChildren) { return; } // Existing item count (for later removal). Should be only one. int existingCount = Items.Count; // Fill in the subfolders DirectoryInfo di = new DirectoryInfo(fFullPath); foreach (DirectoryInfo subDi in di.EnumerateDirectories()) { if ((subDi.Attributes & (FileAttributes.Hidden | FileAttributes.System)) == 0) { FolderTreeViewItem newItem = new FolderTreeViewItem(); newItem.FullPath = subDi.FullName; if (fCheckBox.IsChecked == true) { newItem.fPropogating = true; newItem.IsChecked = IsSelected; newItem.fPropogating = false; } Items.Add(newItem); } } // Remove all placeholder items (paranoid code, there should only be one) for (; existingCount > 0; --existingCount) { Items.RemoveAt(0); } fHasLoadedChildren = true; }
/// <summary> /// 模块文件中单击选择文件 /// </summary> /// <param name="t"></param> private void ModuleFileFolderSelectCallBack(FolderTreeViewItem t) { //Debug.Log(t.fullPath+ " depth :" + t.depth +" isDir :"+t.isDirectory); if (t.isDirectory) return; selectItemFullName = t.fullPath; }
public FolderTreeView() { BeginInit(); fRootItem = new FolderTreeViewItem(); SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Disabled); SetValue(KeyboardNavigation.DirectionalNavigationProperty, KeyboardNavigationMode.Cycle); Items.Add(fRootItem); EndInit(); }
/// <summary> /// 模块文件中双击操作,选择文件 /// </summary> /// <param name="t"></param> private void ModuleFileDblclickItemCallBack(FolderTreeViewItem t) { if (t.isDirectory) return; selectFullFileName = t.fullPath; currentFileDataTable = LanguageDataUtils.LoadFileData(currentLanguage, selectFullFileName); toolbarOption = 1; }
public ProjectExplorerViewModel(IProjectExplorerToolboxToolbarService toolbarService, IEventAggregator eventAggregator) : base(toolbarService) { _eventAggregator = eventAggregator; Name = "Project Explorer"; Title = "Project Explorer"; ContentId = "Project Explorer";//TODO : Move to constants IsVisible = false; _view = new ProjectExplorerView(this); View = _view; Root = new ProjectTreeViewItem(null, false) { DisplayName = "Project A" }; var pluginsFolder = new FolderTreeViewItem(Root, false) { DisplayName = "Plugins Folder" }; var pluginCs = new CsCodeTreeViewItem(pluginsFolder, false) { DisplayName = "Plugin.cs" }; var executionFolder = new FolderTreeViewItem(Root, false) { DisplayName = "Execution Folder" }; var businessUnits_Execution_Designer = new ExecutionDesignerTreeViewItem(executionFolder, false) { DisplayName = "BusinessUnits.xml" }; var businessUnits_Execution = new ExecutionTreeViewItem(businessUnits_Execution_Designer, false) { DisplayName = "Project A Execution 1.cs" }; var tempCs = new CsCodeTreeViewItem(Root, false) { DisplayName = "Temp.cs" }; OnPropertyChanged(() => Root); }
/// <summary> /// 模块文件中双击操作,选择文件 /// </summary> /// <param name="t"></param> private void ModuleFileDblclickItemCallBack(FolderTreeViewItem t) { if (t.isDirectory) { return; } selectEditorModuleName = t.fullPath.Replace("/", "_");; toolbarOption = 1; }
protected void PropogateToLeaves(bool isChecked) { if (fCheckBox.IsChecked != isChecked) { fPropogating = true; fCheckBox.IsChecked = isChecked; foreach (object item in Items) { FolderTreeViewItem tvm = item as FolderTreeViewItem; if (tvm != null && tvm.IsChecked != isChecked) { tvm.PropogateToLeaves(isChecked); } } fPropogating = false; } }
public void LoadCheckedPaths(List <string> checkedPaths) { if (fCheckBox.IsChecked == true) { checkedPaths.Add(fFullPath); return; } else { foreach (object item in Items) { FolderTreeViewItem tvm = item as FolderTreeViewItem; if (tvm != null) { tvm.LoadCheckedPaths(checkedPaths); } } } }
public FolderTreeViewItem GetParent(TreeViewItem item) { FolderTreeViewItem folderItem = null; if (item != null) { var rdpItem = item as RdpTreeViewItem; if (rdpItem != null) { folderItem = rdpItem.Parent as FolderTreeViewItem; } else { folderItem = item as FolderTreeViewItem; } } return(folderItem); }
public void AddRootToTreeView(ApplicationState appState) { _treeView.Items.Clear(); var subDirPaths = Directory.GetDirectories(_rootDirectory); foreach (var sub in subDirPaths) { var folderItem = new FolderTreeViewItem(CreateDirectoryHeader(Path.GetFileName(sub)), sub) { IsExpanded = appState.ExpandedPaths.Contains(sub) }; _treeView.Items.Add(folderItem); AddChildren(folderItem, appState); } var filePaths = Directory.GetFiles(_rootDirectory, "*.rdp"); foreach (var filePath in filePaths) { _treeView.Items.Add(CreateRdpItem(filePath)); } }
private void AddItemToTreeView(DirectoryModel item, TreeViewItem parent) { //var newItem = new TreeViewItem {Header = CreateDirectoryHeader(item.Name)}; var newItem = new FolderTreeViewItem(CreateDirectoryHeader(item.Name), item.Path); foreach (var sub in item.SubDirectories) { AddItemToTreeView(sub, newItem); } foreach (var file in item.Files) { newItem.Items.Add(CreateRdpItem(file.Name, file.Path)); } if (parent != null) { parent.Items.Add(newItem); } else { rdpTree.Items.Add(newItem); } }
private void GetExpandedFolders(FolderTreeViewItem item, IList <string> folders) { IEnumerable <FolderTreeViewItem> expandedSubs; if (item == null) { expandedSubs = _treeView.Items.Cast <TreeViewItem>() .OfType <FolderTreeViewItem>() .Where(i => i.IsExpanded); } else { expandedSubs = item.Items.Cast <TreeViewItem>() .OfType <FolderTreeViewItem>() .Where(i => i.IsExpanded); } foreach (FolderTreeViewItem sub in expandedSubs) { folders.Add(sub.Path); GetExpandedFolders(sub, folders); } }
public void AddChildren(FolderTreeViewItem parent, ApplicationState appState) { parent.Items.Clear(); var dirPath = parent.Path; var subDirPaths = Directory.GetDirectories(dirPath); foreach (var sub in subDirPaths) { var newItem = new FolderTreeViewItem(CreateDirectoryHeader(Path.GetFileName(sub)), sub) { IsExpanded = appState.ExpandedPaths.Contains(sub) }; parent.Items.Add(newItem); AddChildren(newItem, appState); } var filePaths = Directory.GetFiles(dirPath, "*.rdp"); foreach (var filePath in filePaths) { parent.Items.Add(CreateRdpItem(filePath)); } }
public FileSystemStructureViewModel() { //Drivers = new ObservableCollection<FolderTreeViewItem>(FolderTreeViewItem.GetDrivers()); Drivers = FolderTreeViewItem.GetDrivers(); }
private void AddRdpItem(object sender, RoutedEventArgs e) { //get the parent treeviewitem FolderTreeViewItem folderItem = null; var item = rdpTree.SelectedItem; if (item != null) { var rdpItem = item as RdpTreeViewItem; if (rdpItem != null) { folderItem = rdpItem.Parent as FolderTreeViewItem; } else { folderItem = item as FolderTreeViewItem; } } var directoryPath = folderItem != null ? folderItem.Path : _executingDirectory; var dialog = new AddDialog(directoryPath); var addLocation = GetElementPoint(add); dialog.Owner = this; dialog.Left = Left + addLocation.X + add.ActualWidth + 7; dialog.Top = Top + addLocation.Y + HORRIBLE_CONSTANT; var result = dialog.ShowDialog(); if (result.HasValue && result.Value) { var name = dialog.NewName; var host = dialog.Host; var filePath = Path.Combine(directoryPath, $"{name}.rdp"); if (!File.Exists(filePath)) { FileHelper.GenerateRdpFile(filePath, host); var newRdpItem = CreateRdpItem(name, filePath); if (folderItem != null) { folderItem.Items.Add(newRdpItem); folderItem.Items.Refresh(); } else { rdpTree.Items.Add(newRdpItem); rdpTree.Items.Refresh(); } _root = new DirectoryModel(_executingDirectory); LaunchRDPEdit(filePath); } else { //todo handle } } }
protected void PropogateToRoot(Nullable <bool> isChecked) { // If isChecked is not null (some checked), find out what it's value should be if (isChecked != null) { bool hasChecked = false; bool hasUnchecked = false; foreach (object item in Items) { FolderTreeViewItem tvm = item as FolderTreeViewItem; if (tvm != null) { if (tvm.IsChecked == null) { hasChecked = true; hasUnchecked = true; break; } else if (tvm.IsChecked == true) { hasChecked = true; if (hasUnchecked) { break; } } else { hasUnchecked = true; if (hasChecked) { break; } } } } if (hasChecked && hasUnchecked) { isChecked = null; } else if (hasChecked) { isChecked = true; } else { isChecked = false; } } // If isChecked is different from current value, update it and propogate if (fCheckBox.IsChecked != isChecked) { fPropogating = true; fCheckBox.IsChecked = isChecked; FolderTreeViewItem tvm = Parent as FolderTreeViewItem; if (tvm != null) { tvm.PropogateToRoot(isChecked); } fPropogating = false; } }
protected override TreeViewItem BuildRoot() { FolderTreeViewItem root = new FolderTreeViewItem { id = 0, depth = -1, displayName = "Root" }; var rows = GetFolderRows(); if (allPath == null) { return(root); } foreach (var p in allPath) { string[] items = p.Split('/'); string fullPath = ""; for (int i = 0; i < items.Length; i++) { string displayName = items[i]; if (string.IsNullOrEmpty(fullPath)) { fullPath = displayName; } else { fullPath += "/" + displayName; } bool isDirectory = !(i == (items.Length - 1)); bool isHaveItem = false; foreach (var item in rows) { if (item.fullPath == fullPath && item.isDirectory == isDirectory) { isHaveItem = true; break; } } if (!isHaveItem) { FolderTreeViewItem temp = new FolderTreeViewItem(index, i, displayName, fullPath, isDirectory); string dir = Path.GetDirectoryName(fullPath); FolderTreeViewItem parent = null; foreach (var item in rows) { if (item.fullPath == dir && item.isDirectory) { parent = item; break; } } if (parent != null) { parent.AddChild(temp); } else { root.AddChild(temp); } rows.Add(temp); index++; } } } List <TreeViewItem> list = new List <TreeViewItem>(); foreach (var item in rows) { list.Add(item); } //SetupParentsAndChildrenFromDepths(root, list); foreach (var item in rows) { if (item.hasChildren) { item.icon = folderIcon; } else { item.icon = fileIcon; } } return(root); }