private void MainNodeDragOver(object sender, DragEventArgs e) { e.Handled = true; var dragingItemViewModel = (StyleItemViewModel)e.Data.GetData(typeof(StyleItemViewModel)); var currentItemViewModel = ((StyleBuilderViewModel)(((Grid)sender)).DataContext); var dragingItem = dragingItemViewModel.StyleItem; var currentItem = currentItemViewModel.RootStyleItem.StyleItem; var dragingItemParent = dragingItem.Parent; var currentItemParent = currentItem.Parent; if (dragingItem != null && currentItem != null && dragingItem != currentItem && !IsParent(currentItem, dragingItem)) { if (currentItem.CanContainStyleItem(dragingItem)) { dragingItemParent.Children.Remove(dragingItem); currentItem.Children.Insert(0, dragingItem); dragingItemViewModel = StyleItemViewModel.FindStyleItemViewModel(currentItemViewModel.RootStyleItem.StyleItemViewModels, dragingItem); } } if (dragingItemViewModel != null) { dragingItemViewModel.IsSelected = true; } }
/// <summary> /// Initializes the DB click timer. /// </summary> private void InitializeDBClickTimer() { if (rootNodeClickTimer == null) { rootNodeClickTimer = new DispatcherTimer(); rootNodeClickTimer.Interval = TimeSpan.FromMilliseconds(500); rootNodeClickTimer.Tick += (s, args) => { if (rootNodeMouseDownCount > 1) { StyleItemViewModel renamingItemViewModel = null; if (multiStyleBuilderViewModel.SelectedStyleBuilderViewModel.IsRootNodeSelected) { renamingItemViewModel = multiStyleBuilderViewModel.SelectedStyleBuilderViewModel.RootStyleItem; } else if (multiStyleBuilderViewModel.SelectedStyleBuilderViewModel.SelectedStyleItem != null) { renamingItemViewModel = multiStyleBuilderViewModel.SelectedStyleBuilderViewModel.SelectedStyleItem; } if (renamingItemViewModel != null) { renamingItemViewModel.IsRenaming = true; } } rootNodeMouseDownCount = 0; rootNodeClickTimer.Stop(); }; } }
private static StyleItemViewModel GetRootViewModel(StyleItemViewModel currentStyleItemViewModel) { if (currentStyleItemViewModel.StyleBuilder != null) { return(currentStyleItemViewModel); } else { return(GetRootViewModel(currentStyleItemViewModel.ParentViewModel)); } }
private void InitializeStyleItems(object selectedObject) { if (selectedObject == null) { selectedObject = componentStyle.Styles.FirstOrDefault(); } var actualRootStyleItem = new ComponentStyleItem(componentStyle); rootStyleItem = new StyleItemViewModel(actualRootStyleItem, styleArguments); rootStyleItem.StyleBuilder = this; rootStyleItem.StyleItem.ConcreteObjectUpdated += UpdatePreviewSource; ResetSelectedStyleItem(selectedObject); }
private void AddNewStyleItemViewModel(MapSuite.GisEditor.StyleLayerListItem tmpStyleItem, int insertIndex = -1) { var styleItemViewModel = new StyleItemViewModel(tmpStyleItem, styleArguments); styleItemViewModel.ParentViewModel = this; if (insertIndex == -1) { styleItemViewModels.Add(styleItemViewModel); } else { styleItemViewModels.Insert(insertIndex, styleItemViewModel); } }
private void TreeViewItemDragOver(object sender, DragEventArgs e) { e.Handled = true; var dragingItemViewModel = (StyleItemViewModel)e.Data.GetData(typeof(StyleItemViewModel)); var currentItemViewModel = ((StyleItemViewModel)(((Grid)sender)).DataContext); var dragingItem = dragingItemViewModel.StyleItem; var currentItem = currentItemViewModel.StyleItem; var dragingItemParent = dragingItem.Parent; var currentItemParent = currentItem.Parent; if (dragingItem != null && currentItem != null && dragingItem != currentItem && !IsParent(currentItem, dragingItem)) { if (currentItem.CanContainStyleItem(dragingItem)) { dragingItemParent.Children.Remove(dragingItem); currentItem.Children.Insert(0, dragingItem); dragingItemViewModel = StyleItemViewModel.FindStyleItemViewModel(currentItemViewModel.ParentViewModel.StyleItemViewModels, dragingItem); } else if (dragingItemParent == currentItemParent) { var dragingIndex = dragingItemParent.Children.IndexOf(dragingItem); var currentIndex = dragingItemParent.Children.IndexOf(currentItem); dragingItemParent.Children.Move(dragingIndex, currentIndex); } else { if (currentItemParent is StyleLayerListItem && ((StyleLayerListItem)currentItemParent).CanContainStyleItem(dragingItem)) { dragingItemParent.Children.Remove(dragingItem); var currentIndex = currentItemParent.Children.IndexOf(currentItem); currentItemParent.Children.Insert(currentIndex, dragingItem); dragingItemViewModel = StyleItemViewModel.FindStyleItemViewModel(currentItemViewModel.ParentViewModel.StyleItemViewModels, dragingItem); } else { e.Effects = DragDropEffects.None; } } if (dragingItemViewModel != null) { dragingItemViewModel.IsSelected = true; } } }
private StyleItemViewModel FindStyleItemViewModel(ObservableCollection <StyleItemViewModel> observableCollection, object selectedObject) { StyleItemViewModel result = null; foreach (var styleItemViewModel in observableCollection) { if (styleItemViewModel.StyleItem.ConcreteObject == selectedObject) { result = styleItemViewModel; break; } else { result = FindStyleItemViewModel(styleItemViewModel.StyleItemViewModels, selectedObject); if (result != null) { break; } } } return(result); }
private static void AddSubMenuItemsForStyle(StyleBuilderArguments styleArguments, StyleCategories styleCategories , string categoryName , MenuItem rootMenuItem , StyleItemViewModel currentStyleItemViewModel , bool hasCompositedStyle) { if (hasCompositedStyle && styleCategories != StyleCategories.None && !styleCategories.HasFlag(StyleCategories.Label)) { styleCategories = styleCategories | StyleCategories.Composite; } var plugins = GisEditor.StyleManager.GetStylePlugins(styleCategories); if (plugins.Count > 0) { var menuItems = plugins.Select(plugin => { if (plugin.RequireColumnNames && styleArguments.ColumnNames.Count == 0) { return(null); } MenuItem subMenuItem = new MenuItem(); subMenuItem.Header = plugin.Name; subMenuItem.Icon = new Image { Source = plugin.SmallIcon, Width = 16, Height = 16 }; subMenuItem.CommandParameter = new Tuple <StylePlugin, StyleCategories>(plugin, styleCategories); subMenuItem.Command = new RelayCommand <Tuple <StylePlugin, StyleCategories> >(commandParameter => { StylePlugin tmpStylePlugin = commandParameter.Item1; Styles.Style style = tmpStylePlugin.GetDefaultStyle(); style.Name = tmpStylePlugin.Name; StyleLayerListItem styleItem = GisEditor.StyleManager.GetStyleLayerListItem(style); if (styleItem != null) { currentStyleItemViewModel.StyleItem.Children.Insert(0, styleItem); currentStyleItemViewModel.StyleItem.UpdateConcreteObject(); var styleItemUI = currentStyleItemViewModel.StyleItem.GetUI(GetDuplicateStyleArguments(styleCategories, styleArguments)); if (styleItemUI != null) { currentStyleItemViewModel.StyleItem.UpdateUI(styleItemUI); } var addedStyleItemViewModel = currentStyleItemViewModel.StyleItemViewModels.FirstOrDefault(vm => vm.StyleItem == styleItem); if (addedStyleItemViewModel != null) { if (commandParameter.Item2 == StyleCategories.Label) { addedStyleItemViewModel.IsSelected = true; } else { StyleItemViewModel rootStyleItemViewModel = GetRootViewModel(currentStyleItemViewModel); tmpStyleCategories = commandParameter.Item2; var tmpStyleArguments = rootStyleItemViewModel.StyleBuilder.StyleArguments; rootStyleItemViewModel.StyleBuilder.PropertyChanged -= StyleBuilder_PropertyChanged; rootStyleItemViewModel.StyleBuilder.PropertyChanged += StyleBuilder_PropertyChanged; addedStyleItemViewModel.IsSelected = true; rootStyleItemViewModel.StyleBuilder.PropertyChanged -= StyleBuilder_PropertyChanged; rootStyleItemViewModel.StyleBuilder.StyleArguments = tmpStyleArguments; } } } }); return(subMenuItem); }).Where(i => i != null).ToArray(); foreach (var item in menuItems) { rootMenuItem.Items.Add(item); } } }
internal static MenuItem GetAddStyleMenuItem(StyleBuilderArguments styleArguments, StyleItemViewModel currentStyleItemViewModel) { var menuItem = new MenuItem(); menuItem.Header = GisEditor.LanguageManager.GetStringResource("StyleBuilderWindowAddStyleLabel"); menuItem.Icon = new Image { Source = new BitmapImage(new Uri("/GisEditorInfrastructure;component/Images/addStyle.png", UriKind.Relative)), Width = 16, Height = 16 }; var styleCategoryPairs = Enum.GetValues(typeof(StyleCategories)).Cast <StyleCategories>() .Where(c => c != StyleCategories.None) .Select(c => new { StyleCategory = c, Name = c + " Style" }); var currentStyleCategory = currentStyleItemViewModel.StyleItem.GetRestrictStyleCategories(); if (currentStyleCategory == StyleCategories.None) { currentStyleCategory = styleArguments.AvailableStyleCategories; } var hasCompositedStyle = currentStyleCategory.HasFlag(StyleCategories.Composite); var styleCategoriesToAdd = styleCategoryPairs.Where(s => s.StyleCategory != StyleCategories.Composite) .Where(item => currentStyleCategory.HasFlag(item.StyleCategory)).ToArray(); if (styleCategoriesToAdd.Length > 2) { foreach (var item in styleCategoriesToAdd) { if (item.StyleCategory == StyleCategories.Point || item.StyleCategory == StyleCategories.Line || item.StyleCategory == StyleCategories.Area) { MenuItem groupMenuItem = new MenuItem(); groupMenuItem.Header = item.StyleCategory.ToString(); AddSubMenuItemsForStyle(styleArguments, item.StyleCategory, item.Name, groupMenuItem, currentStyleItemViewModel, hasCompositedStyle); menuItem.Items.Add(groupMenuItem); } else { AddSubMenuItemsForStyle(styleArguments, item.StyleCategory, item.Name, menuItem, currentStyleItemViewModel, hasCompositedStyle); } menuItem.Items.Add(new Separator()); } var styleCatagories = styleCategoriesToAdd.Select(s => s.StyleCategory).ToList(); if (styleCatagories.Contains(StyleCategories.Point) && styleCatagories.Contains(StyleCategories.Line) && styleCatagories.Contains(StyleCategories.Area)) { string shareStyleText = "Share Styles"; MenuItem groupMenuItem = new MenuItem(); groupMenuItem.Header = shareStyleText; AddSubMenuItemsForStyle(styleArguments, StyleCategories.Composite, shareStyleText, groupMenuItem, currentStyleItemViewModel, true); menuItem.Items.Add(groupMenuItem); menuItem.Items.Add(new Separator()); } } else { foreach (var item in styleCategoriesToAdd) { AddSubMenuItemsForStyle(styleArguments, item.StyleCategory, item.Name, menuItem, currentStyleItemViewModel, hasCompositedStyle); menuItem.Items.Add(new Separator()); } } if (menuItem.Items.Count > 0) { menuItem.Items.RemoveAt(menuItem.Items.Count - 1); } return(menuItem); }
private void InitializeContextMenuItems() { if (styleArguments.AvailableStyleCategories != StyleCategories.None && styleItem.Parent != null) { this.contextMenu = new ContextMenu(); if (StyleItem.ConcreteObject is FilterStyle) { this.contextMenu.Items.Add(GetMenuItem("View filtered data", ViewFilteredData, "/GisEditorPluginCore;component/Images/styles_filterarealinepoint.png")); } if (StyleItem.CanAddInnerStyle) { var menuItem = GetAddStyleMenuItem(styleArguments, this); this.contextMenu.Items.Add(menuItem); } this.contextMenu.Items.Add(GetMenuItem("Move up", MoveUpClick, GetImageUri("moveUp.png"))); this.contextMenu.Items.Add(GetMenuItem("Move down", MoveDownClick, GetImageUri("moveDown.png"))); this.contextMenu.Items.Add(GetMenuItem("Move to top", MoveToTopClick, GetImageUri("toTop.png"))); this.contextMenu.Items.Add(GetMenuItem("Move to bottom", MoveToBottomClick, GetImageUri("toBottom.png"))); if (styleItem.ConcreteObject is Styles.Style) { this.contextMenu.Items.Add(new Separator()); this.contextMenu.Items.Add(GetMenuItem("Insert from Library...", InsertFromLibrary, GetImageUri("insert_from_library.png"), !styleArguments.IsSubStyleReadonly)); this.contextMenu.Items.Add(GetMenuItem("Replace from Library...", ReplaceFromLibrary, GetImageUri("replace_from_library.png"), !styleArguments.IsSubStyleReadonly)); this.contextMenu.Items.Add(new Separator()); } if (StyleItem.ConcreteObject is Styles.Style) { this.contextMenu.Items.Add(GetMenuItem("Duplicate", DuplicateClick, "/GisEditorInfrastructure;component/Images/duplicate.png", !styleArguments.IsSubStyleReadonly)); } if (StyleItem.CanRename) { this.contextMenu.Items.Add(GetMenuItem("Rename", RenameClick, GetImageUri("rename.png"), !styleArguments.IsSubStyleReadonly)); } this.contextMenu.Items.Add(GetMenuItem("Remove", RemoveItemClick, GetImageUri("unload.png"), !styleArguments.IsSubStyleReadonly)); } else if (styleItem is ComponentStyleItem) { this.contextMenu = new ContextMenu(); MenuItem addStyleMenuItem = StyleItemViewModel.GetAddStyleMenuItem(styleArguments, this); if (addStyleMenuItem.Items.Count > 0) { addStyleMenuItem.IsEnabled = !styleArguments.IsSubStyleReadonly; this.contextMenu.Items.Add(addStyleMenuItem); } this.contextMenu.Items.Add(new Separator()); this.contextMenu.Items.Add(GetMenuItem("Insert from Library...", InsertFromLibrary, GetImageUri("insert_from_library.png"), !styleArguments.IsSubStyleReadonly)); this.contextMenu.Items.Add(GetMenuItem("Replace from Library...", ReplaceFromLibrary, GetImageUri("replace_from_library.png"))); this.contextMenu.Items.Add(new Separator()); var renameMenuItem = new MenuItem(); renameMenuItem.Header = GisEditor.LanguageManager.GetStringResource("SytleBuilderWindowRenameLabel"); renameMenuItem.Click += RenameClick; renameMenuItem.Icon = new Image { Source = new BitmapImage(new Uri("/GisEditorInfrastructure;component/Images/rename.png", UriKind.Relative)), Width = 16, Height = 16 }; this.contextMenu.Items.Add(renameMenuItem); this.contextMenu.Items.Add(GetMenuItem("Save Style", SaveStyleClick, GetImageUri("Export.png"))); } }