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;
                };
            }
        }
예제 #3
0
        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;
                        }
                    }
                }
            }
        }
예제 #5
0
        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);
            }
        }
예제 #6
0
        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;
            }
        }
예제 #10
0
        public static DataRepositoryPlugin GetSourcePlugin(this DataRepositoryItem dataRepositoryItem)
        {
            var rootDataRepsitory = dataRepositoryItem.GetRootDataRepositoryItem();

            return(rootDataRepsitory.SourcePlugin);
        }