private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { DataRepositoryItem[] selectedItems = ChildrenList.SelectedItems.OfType <DataRepositoryItem>().ToArray(); if (selectedItems.Length > 1) { DataRepositoryContentViewModel.Current.PlaceOnMapCommand = DataRepositoryHelper.GetPlaceMultipleFilesCommand(selectedItems); DataRepositoryItem dataRepositoryItem = selectedItems[0]; DataRepositoryContentViewModel.Current.ContextMenuStackPanel = DataRepositoryContentUserControl.ConvertContextMenuToButton(dataRepositoryItem.ContextMenu, DataRepositoryContentViewModel.Current.PlaceOnMapCommand); } else if (selectedItems.Length == 1) { DataRepositoryItem dataRepositoryItem = selectedItems[0]; if (dataRepositoryItem != null && dataRepositoryItem.ContextMenu != null) { DataRepositoryContentViewModel.Current.ContextMenuStackPanel = DataRepositoryContentUserControl.ConvertContextMenuToButton(dataRepositoryItem.ContextMenu); } if (dataRepositoryItem != null && dataRepositoryItem.IsLoadable) { DataRepositoryContentViewModel.Current.PlaceOnMapCommand = ((MenuItem)selectedItems.First().ContextMenu.Items[0]).Command; } else { DataRepositoryContentViewModel.Current.PlaceOnMapCommand = null; } } }
private static void HookEventForMap() { if (!hookedMaps.Contains(GisEditor.ActiveMap)) { hookedMaps.Add(GisEditor.ActiveMap); GisEditor.ActiveMap.Drop += (s, arg) => { var draggedItems = arg.Data.GetData(typeof(DataRepositoryItem[])) as DataRepositoryItem[]; if (draggedItems != null && draggedItems.Count() > 0) { DataRepositoryItem dataRepositoryItem = draggedItems.First(); while (dataRepositoryItem.Parent != null) { dataRepositoryItem = dataRepositoryItem.Parent; } if (dataRepositoryItem.SourcePlugin != null && dataRepositoryItem.SourcePlugin.CanDropOnMap) { dataRepositoryItem.SourcePlugin.DropOnMap(draggedItems); } } arg.Handled = true; }; } }
public static DataRepositoryItem CreateRootDataRepositoryItem(DataRepositoryPlugin dataRepositoryPlugin) { DataRepositoryItem dataRepositoryItem = new DataRepositoryItem(); dataRepositoryItem.SourcePlugin = dataRepositoryPlugin; dataRepositoryItem.Name = dataRepositoryPlugin.Name; dataRepositoryItem.Icon = dataRepositoryPlugin.SmallIcon; var addDataCommand = new RelayCommand(() => { var dataItem = dataRepositoryPlugin.CreateDataRepositoryItem(); if (dataItem != null) { dataRepositoryItem.Children.Add(dataItem); GisEditor.InfrastructureManager.SaveSettings(GisEditor.DataRepositoryManager.GetPlugins()); } }); if (dataRepositoryPlugin.ContextMenu != null && dataRepositoryPlugin.ContextMenu.HasItems) { ((MenuItem)dataRepositoryPlugin.ContextMenu.Items[0]).Command = addDataCommand; } dataRepositoryItem.ContextMenu = dataRepositoryPlugin.ContextMenu; dataRepositoryItem.Content = dataRepositoryPlugin.Content; return(dataRepositoryItem); }
private void ListBoxItemContextMenuOpening(object sender, ContextMenuEventArgs e) { var selectedItems = ChildrenList.SelectedItems.OfType <DataRepositoryItem>().ToArray(); if (selectedItems.Length > 1) { DataRepositoryHelper.AddSelectedItemsToMap(selectedItems, sender, ref tmpRelayCommand); } DataRepositoryItem dataRepositoryItem = sender.GetDataContext <DataRepositoryItem>(); if (dataRepositoryItem != null && !dataRepositoryItem.CanRename) { var listItem = sender as ListBoxItem; if (listItem != null) { // listItem.DataContext foreach (MenuItem menu in listItem.ContextMenu.Items) { if (menu.Header.Equals("Rename")) { menu.Visibility = Visibility.Collapsed; } } } } }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { DataRepositoryItem item = value as DataRepositoryItem; if (item != null && cellContentConvertHandler != null) { return(cellContentConvertHandler(item)); } else { return(Binding.DoNothing); } }
public static RelayCommand GetPlaceMultipleFilesCommand(IEnumerable <DataRepositoryItem> selectedItems) { var newCommand = new RelayCommand(() => { DataRepositoryItem dataRepositoryItem = selectedItems.FirstOrDefault(); if (dataRepositoryItem != null) { DataRepositoryItem rootItem = dataRepositoryItem.GetRootDataRepositoryItem(); rootItem.SourcePlugin.DropOnMap(selectedItems); } }); return(newCommand); }
public static void RestoreExpandStatus(DataRepositoryItem viewModel) { Collection <string> expandStatus = GisEditor.DataRepositoryManager.ExpandedFolders; if (viewModel == null) { return; } viewModel.IsExpanded = expandStatus.Contains(viewModel.Id); if (viewModel.Id.Equals(selectedItem)) { viewModel.IsSelected = true; } RestoreChildrenExpandStatus(viewModel.Children, expandStatus); }
private long GetSize(DataRepositoryItem dataRepositoryItem) { long size = 0; if (dataRepositoryItem != null && dataRepositoryItem.CustomData.ContainsKey("Size")) { try { size = (long)dataRepositoryItem.CustomData["Size"]; } catch (Exception) { size = 0; } } return(size); }
public DataRepositoryContentViewModel() { searchResult = new DataRepositoryItem(); children = new ObservableCollection <DataRepositoryItem>(); searchText = string.Empty; searchResultVisibility = Visibility.Collapsed; var dataPlugins = GisEditor.DataRepositoryManager.GetActiveDataRepositoryPlugins <DataRepositoryPlugin>(); foreach (var dataPlugin in dataPlugins) { Children.Add(dataPlugin.RootDataRepositoryItem); } if (Children.Count > 0) { Children[0].IsSelected = true; } }
public static DataRepositoryPlugin GetSourcePlugin(this DataRepositoryItem dataRepositoryItem) { var rootDataRepsitory = dataRepositoryItem.GetRootDataRepositoryItem(); return(rootDataRepsitory.SourcePlugin); }