protected override void ApplySettingsCore(StorableSettings settings) { base.ApplySettingsCore(settings); if (settings.GlobalSettings.ContainsKey("Folders")) { try { RootDataRepositoryItem.Children.Clear(); XElement xElement = XElement.Parse(settings.GlobalSettings["Folders"]); foreach (var item in xElement.Descendants("Item")) { if (Directory.Exists(item.Value)) { var dataRepositoryItem = new FolderDataRepositoryItem(item.Value, true); dataRepositoryItem.Parent = RootDataRepositoryItem; RootDataRepositoryItem.Children.Add(dataRepositoryItem); } } } catch (Exception ex) { GisEditor.LoggerManager.Log(LoggerLevel.Debug, ex.Message, new ExceptionInfo(ex)); } } if (Directory.Exists(dataFolderPath) && RootDataRepositoryItem.Children.All(i => !((FolderDataRepositoryItem)i).FolderInfo.FullName.Equals(dataFolderPath, StringComparison.InvariantCultureIgnoreCase))) { RootDataRepositoryItem.Children.Add(new FolderDataRepositoryItem(dataFolderPath, true)); } }
private void RefreshLocalFiles(FolderDataRepositoryItem folderItem) { if (folderItem != null && !isUpdating) { isUpdating = true; if (Directory.Exists(folderItem.FolderInfo.FullName)) { Children.Clear(); foreach (var item in GetAllSubItemsFromFolder(folderItem.FolderInfo.FullName)) { DataRepositoryItem dataRepositoryItem; if (File.Exists(item)) { dataRepositoryItem = new FileDataRepositoryItem(item); } else { dataRepositoryItem = new FolderDataRepositoryItem(item, false); } dataRepositoryItem.Parent = this; dataRepositoryItem.IsExpanded = GisEditor.DataRepositoryManager.ExpandedFolders.Contains(dataRepositoryItem.Id); Children.Add(dataRepositoryItem); } } else { Parent.Refresh(); } isUpdating = false; } }
protected override Collection <DataRepositoryItem> GetSearchResultCore(IEnumerable <string> keywords) { var result = new Collection <DataRepositoryItem>(); foreach (var item in GetAllSubItemsFromFolder(folderInfo.FullName)) { if (Directory.Exists(item)) { var folderItem = new FolderDataRepositoryItem(item, false); foreach (var subItem in folderItem.GetSearchResult(keywords)) { result.Add(subItem); } } else { string fileName = Path.GetFileName(item); if (keywords.Any(keyWord => fileName.IndexOf(keyWord, StringComparison.OrdinalIgnoreCase) != -1)) { result.Add(new FileDataRepositoryItem(item)); } } } return(result); }
private void ListBoxItemMouseDoubleClick(object sender, MouseButtonEventArgs e) { var dataRepositoryItem = sender.GetDataContext <DataRepositoryItem>(); if (dataRepositoryItem != null) { if (!dataRepositoryItem.IsLeaf) { FolderDataRepositoryItem folderDataRepositoryItem = dataRepositoryItem as FolderDataRepositoryItem; if (folderDataRepositoryItem != null && !Directory.Exists(folderDataRepositoryItem.FolderInfo.FullName)) { System.Windows.Forms.MessageBox.Show(folderDataRepositoryItem.FolderInfo.FullName + " doesn't exist." , "Warning", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); return; } if (dataRepositoryItem.Parent != null && !dataRepositoryItem.Parent.IsExpanded) { dataRepositoryItem.Parent.IsExpanded = true; } dataRepositoryItem.Refresh(); dataRepositoryItem.IsExpanded = true; dataRepositoryItem.IsSelected = true; DataContext = dataRepositoryItem; } else if (dataRepositoryItem.IsLoadable) { dataRepositoryItem.Load(); } } }
private void UserControl_DataRepositoryItemMouseDoubleClick(object sender, ThinkGeo.MapSuite.GisEditor.DataRepositoryItemMouseDoubleClickUserControlEventArgs e) { FolderDataRepositoryItem folderDataRepositoryItem = e.SelectedDataRepositoryItem as FolderDataRepositoryItem; if (folderDataRepositoryItem != null && !Directory.Exists(folderDataRepositoryItem.FolderInfo.FullName)) { System.Windows.Forms.MessageBox.Show(folderDataRepositoryItem.FolderInfo.FullName + " doesn't exist." , "Warning", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); e.Handled = true; } }
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { DataRepositoryContentViewModel.Current.SearchResultVisibility = Visibility.Collapsed; if (e.NewValue != null && (selectedTreeViewItem = e.NewValue as DataRepositoryItem) != null) { FolderDataRepositoryItem folderItem = selectedTreeViewItem as FolderDataRepositoryItem; if (folderItem != null && !Directory.Exists(folderItem.FolderInfo.FullName)) { System.Windows.Forms.MessageBox.Show(string.Format(CultureInfo.InvariantCulture, alertMessage, folderItem.FolderInfo.FullName), "Warning", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); return; } DataRepositoryContentViewModel.SelectedDataRepositoryItem = selectedTreeViewItem; if (selectedTreeViewItem.ContextMenu != null) { DataRepositoryContentViewModel.Current.ContextMenuStackPanel = DataRepositoryContentUserControl.ConvertContextMenuToButton(selectedTreeViewItem.ContextMenu); } else { DataRepositoryContentViewModel.Current.ContextMenuStackPanel = null; } if (!selectedTreeViewItem.IsLeaf) { var viewModelContainingContent = selectedTreeViewItem.GetRootDataRepositoryItem(); DataRepositoryContentViewModel.Current.CurrentPluginItemViewModel = viewModelContainingContent; if (viewModelContainingContent.ContextMenu != null && viewModelContainingContent.ContextMenu.HasItems) { DataRepositoryContentViewModel.Current.AddDataCommand = ((MenuItem)viewModelContainingContent.ContextMenu.Items[0]).Command; } if (DataRepositoryContentViewModel.Current.CurrentPluginItemViewModel.Content != null) { if (!DataRepositoryContentViewModel.SelectedDataRepositoryItem.Id.Equals("Data Folders", System.StringComparison.InvariantCultureIgnoreCase)) { var sourcePlugin = DataRepositoryContentViewModel.SelectedDataRepositoryItem.GetSourcePlugin(); if (sourcePlugin != null && sourcePlugin.CanRefreshDynamically) { DataRepositoryContentViewModel.SelectedDataRepositoryItem.Refresh(); } } DataRepositoryContentViewModel.Current.CurrentPluginItemViewModel.Content.DataContext = DataRepositoryContentViewModel.SelectedDataRepositoryItem; } } } }
protected override DataRepositoryItem CreateDataRepositoryItemCore() { FolderDataRepositoryItem dataItem = null; FolderHelper.OpenFolderBrowserDialog((tmpDialog, tmpResult) => { if (tmpResult == System.Windows.Forms.DialogResult.OK) { var folderPaths = RootDataRepositoryItem.Children.Select(c => ((FolderDataRepositoryItem)c).FolderInfo.FullName).ToList(); if (folderPaths.Contains(tmpDialog.SelectedPath)) { MessageBox.Show(string.Format(CultureInfo.InvariantCulture, GisEditor.LanguageManager.GetStringResource("DataRepositoryAddDataFolderWarningLabel"), tmpDialog.SelectedPath), "Alert"); } else { dataItem = new FolderDataRepositoryItem(tmpDialog.SelectedPath, true); dataItem.Parent = RootDataRepositoryItem; } } }); return(dataItem); }
private void CollectFolderChildren(string folderPath) { string[] folders = { }; try { folders = Directory.GetDirectories(folderPath, "*", SearchOption.TopDirectoryOnly); } catch (Exception ex) { GisEditor.LoggerManager.Log(LoggerLevel.Debug, ex.Message, new ExceptionInfo(ex)); } finally { foreach (var folder in folders) { FolderDataRepositoryItem folderDataRepositoryItem = new FolderDataRepositoryItem(folder, false) { Parent = this }; Children.Add(folderDataRepositoryItem); } } }