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);
        }
Example #4
0
        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);
         }
     }
 }