public ConnectionsTreeController(TreeView connectionsTreeView) { _treeView = connectionsTreeView; _treeView.SelectedItemChanged += new RoutedPropertyChangedEventHandler<object>(SelectionChanged); SettingsManager.Instance.ConnectionChanged += new SettingChangedEventHandler<ConnectionInfo>(Settings_ConnectionChanged); SettingsManager.Instance.Connections.ToList().ForEach(cnnInfo => DisplayConnection(cnnInfo)); _treeView.AddHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(Expanded)); _treeView.AddHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(Collapsed)); }
private void LoadAddSelectRepoWPF() { // UI elements. Header = Properties_Resources.Which; // A tree allowing the user to browse CMIS repositories/folders. System.Uri resourceTreeLocater = new System.Uri("/DataSpaceSync;component/FolderTreeMVC/TreeView.xaml", System.UriKind.Relative); System.Windows.Controls.TreeView treeView = System.Windows.Application.LoadComponent(resourceTreeLocater) as TreeView; ObservableCollection <RootFolder> repos = new ObservableCollection <RootFolder>(); loader = new Dictionary <string, AsyncNodeLoader>(); // Some CMIS servers hold several repositories (ex:Nuxeo). Show one root per repository. bool firstRepo = true; foreach (var repository in Controller.repositories) { RootFolder repo = new RootFolder() { Name = repository.Name, Id = repository.Id, Address = Controller.saved_address.ToString() }; repos.Add(repo); if (firstRepo) { repo.Selected = true; firstRepo = false; } else { repo.Selected = false; } CmisRepoCredentials cred = new CmisRepoCredentials() { UserName = Controller.saved_user, Password = Controller.saved_password, Address = Controller.saved_address, Binding = Controller.saved_binding, RepoId = repository.Id }; AsyncNodeLoader asyncLoader = new AsyncNodeLoader(repo, cred, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); // GUI workaround to remove ignore folder {{ //asyncLoader.Load(repo); //loader.Add(repo.Id, asyncLoader); repo.Status = LoadingStatus.DONE; // GUI workaround to remove ignore folder }} } treeView.DataContext = repos; treeView.AddHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(delegate(object sender, RoutedEventArgs e) { TreeViewItem expandedItem = e.OriginalSource as TreeViewItem; Node expandedNode = expandedItem.Header as Folder; if (expandedNode != null) { Node parent = expandedNode.Parent; while (parent is Folder) { parent = parent.Parent; } if (parent is RootFolder) { AsyncNodeLoader l; RootFolder r = parent as RootFolder; if (loader.TryGetValue(r.Id, out l)) { l.Load(expandedNode); } } } })); ContentCanvas.Children.Add(treeView); Canvas.SetTop(treeView, 70); Canvas.SetLeft(treeView, 185); System.Uri resourceLocater = new System.Uri("/DataSpaceSync;component/SetupAddSelectRepoWPF.xaml", System.UriKind.Relative); UserControl LoadXAML = Application.LoadComponent(resourceLocater) as UserControl; back_button = LoadXAML.FindName("back_button") as Button; continue_button = LoadXAML.FindName("continue_button") as Button; cancel_button = LoadXAML.FindName("cancel_button") as Button; continue_button.IsEnabled = !firstRepo; ContentCanvas.Children.Add(LoadXAML); // Actions cancel_button.Click += delegate { SelectRepoCancelAction(); Controller.PageCancelled(); }; continue_button.Click += delegate { List <string> ignored = new List <string>(); List <string> selectedFolder = new List <string>(); ItemCollection items = treeView.Items; RootFolder selectedRepo = null; foreach (var item in items) { RootFolder repo = item as RootFolder; if (repo != null) { if (repo.Selected != false) { selectedRepo = repo; break; } } } if (selectedRepo != null) { ignored.AddRange(NodeModelUtils.GetIgnoredFolder(selectedRepo)); selectedFolder.AddRange(NodeModelUtils.GetSelectedFolder(selectedRepo)); Controller.saved_repository = selectedRepo.Id; Controller.saved_remote_path = selectedRepo.Path; SelectRepoCancelAction(); Controller.Add2PageCompleted( Controller.saved_repository, Controller.saved_remote_path, ignored.ToArray(), selectedFolder.ToArray()); } else { return; } }; back_button.Click += delegate { SelectRepoCancelAction(); Controller.BackToPage1(); }; }
private void CreateTreeView() { System.Uri resourceLocater = new System.Uri("/DataSpaceSync;component/FolderTreeMVC/TreeView.xaml", System.UriKind.Relative); treeView = Application.LoadComponent(resourceLocater) as TreeView; repo = new CmisSync.CmisTree.RootFolder() { Name = FolderName, Id = Credentials.RepoId, Address = Credentials.Address.ToString() }; ObservableCollection<RootFolder> repos = new ObservableCollection<RootFolder>(); repos.Add(repo); repo.Selected = true; asyncLoader = new AsyncNodeLoader(repo, Credentials, PredefinedNodeLoader.LoadSubFolderDelegate, PredefinedNodeLoader.CheckSubFolderDelegate); IgnoredFolderLoader.AddIgnoredFolderToRootNode(repo, Ignores); LocalFolderLoader.AddLocalFolderToRootNode(repo, localPath); asyncLoader.Load(repo); treeView.DataContext = repos; treeView.AddHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(delegate(object sender, RoutedEventArgs e) { TreeViewItem expandedItem = e.OriginalSource as TreeViewItem; Node expandedNode = expandedItem.Header as Folder; if (expandedNode != null) { asyncLoader.Load(expandedNode); } })); }
public override void OnApplyTemplate() { base.OnApplyTemplate(); _filesListView = GetTemplateChild("PART_Files") as ListView; _filesListView.MouseDoubleClick += FilesListView_MouseDoubleClick; _folderTreeView = GetTemplateChild("PART_FolderTreeView") as TreeView; _folderTreeView.SelectedItemChanged += FolderTreeView_SelectedItemChanged; _folderTreeView.AddHandler(TreeViewItem.ExpandedEvent, new RoutedEventHandler(FolderTreeView_Expanded)); _folderTreeView.Items.Add(new Folder(System.IO.Path.Combine (Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Links"), null)); foreach (var drive in Directory.GetLogicalDrives()) _folderTreeView.Items.Add(new Folder(drive, null)); this.MouseUp += FileDialog_MouseUp; }