/// <summary> /// Initializes a new instance of the <see cref="StylePlugin" /> class. /// </summary> protected StylePlugin() { UseRandomColor = true; styleCategories = StyleCategories.Point | StyleCategories.Line | StyleCategories.Area | StyleCategories.Label; styleCandidates = new ObservableCollection <Style>(); styleCandidatesIndex = 0; }
private CoreStyle GetDefaultStyle <CoreStyle>(StyleCategories styleProviderTypes) where CoreStyle : Styles.Style { var provider = GisEditor.StyleManager.GetDefaultStylePlugin(styleProviderTypes); if (provider != null) { var styleProviderOptionUI = provider.GetSettingsUI(); if (styleProviderOptionUI != null) { bool useRandomColors = GetUseRandomColorsOption <CoreStyle>(provider.UseRandomColor, styleProviderTypes); if (useRandomColors) { return(null); } } CoreStyle tmpStyle = provider.GetDefaultStyle() as CoreStyle; if (tmpStyle != null) { return((CoreStyle)tmpStyle.CloneDeep()); } } return(null); }
public static StyleCategories GetStyleCategoriesByFeatureLayer(FeatureLayer featureLayer) { StyleCategories resultStyleCategories = StyleCategories.None; var featureLayerPlugin = GisEditor.LayerManager.GetLayerPlugins(featureLayer.GetType()).FirstOrDefault() as FeatureLayerPlugin; if (featureLayerPlugin != null) { var type = featureLayerPlugin.GetFeatureSimpleShapeType(featureLayer); switch (type) { case SimpleShapeType.Point: resultStyleCategories = StyleCategories.Point | StyleCategories.Label | StyleCategories.Composite; break; case SimpleShapeType.Line: resultStyleCategories = StyleCategories.Line | StyleCategories.Label | StyleCategories.Composite; break; case SimpleShapeType.Area: resultStyleCategories = StyleCategories.Area | StyleCategories.Label | StyleCategories.Composite; break; case SimpleShapeType.Unknown: default: resultStyleCategories = StyleCategories.Point | StyleCategories.Line | StyleCategories.Area | StyleCategories.Label | StyleCategories.Composite; break; } } return(resultStyleCategories); }
private bool GetUseRandomColorsOption <CoreStyle>(bool useRandomColor, StyleCategories styleProviderTypes) where CoreStyle : Styles.Style { if (styleProviderTypes == StyleCategories.Area || styleProviderTypes == StyleCategories.Line || styleProviderTypes == StyleCategories.Point) { return(useRandomColor); } return(false); }
/// <summary> /// Gets the default style plugin core. /// </summary> /// <param name="styleProviderTypes">The style provider types.</param> /// <returns></returns> protected virtual StylePlugin GetDefaultStylePluginCore(StyleCategories styleProviderTypes) { var allSupportedProviders = GetStylePlugins(styleProviderTypes); var styleProvider = allSupportedProviders.FirstOrDefault(p => p.IsDefault); if (styleProvider == null) { styleProvider = allSupportedProviders.FirstOrDefault(); } return(styleProvider); }
/// <summary> /// Gets the style plugins core. /// </summary> /// <param name="styleCategories">The style categories.</param> /// <returns></returns> protected virtual Collection <StylePlugin> GetStylePluginsCore(StyleCategories styleCategories) { Collection <StylePlugin> stylePlugins = new Collection <StylePlugin>(); var activeStylePlugins = GetActiveStylePlugins(); foreach (var stylePlugin in activeStylePlugins.Where(p => styleCategories.HasFlag(p.StyleCategories)).OrderBy(p => p.Index)) { stylePlugins.Add(stylePlugin); } return(stylePlugins); }
private void InitializeAvailableStyleProviders(StyleCategories supportStyleType, bool reset = true) { if (reset) { availableStylePlugins.Clear(); } GisEditor.StyleManager.GetStylePlugins(supportStyleType) .Where(tmpProvider => !tmpProvider.StyleCategories.ToString().Contains(',')) .ForEach(tmpProvider => { var defaultStyle = tmpProvider.GetDefaultStyle(); availableStylePlugins.Add(tmpProvider, defaultStyle.CloneDeep()); }); }
public static T GetDefaultStyle <T>(StyleCategories styleProviderTypes) where T : Style { var provider = GisEditor.StyleManager.GetDefaultStylePlugin(styleProviderTypes); if (provider != null) { T tmpStyle = provider.GetDefaultStyle() as T; if (tmpStyle != null) { return((T)tmpStyle.CloneDeep()); } } return(null); }
private static StyleBuilderArguments GetDuplicateStyleArguments(StyleCategories styleCategories, StyleBuilderArguments styleArguments) { StyleBuilderArguments newStyleBuilderArguments = new StyleBuilderArguments { AppliedCallback = styleArguments.AppliedCallback, AvailableStyleCategories = styleCategories | StyleCategories.Label | StyleCategories.Composite, AvailableUIElements = styleArguments.AvailableUIElements, FeatureLayer = styleArguments.FeatureLayer, FromZoomLevelIndex = styleArguments.FromZoomLevelIndex, SelectedConcreteObject = styleArguments.SelectedConcreteObject, StyleToEdit = styleArguments.StyleToEdit, ToZoomLevelIndex = styleArguments.ToZoomLevelIndex }; newStyleBuilderArguments.FillRequiredColumnNames(); return(newStyleBuilderArguments); }
/// <summary> /// Gets the default style plugin. /// </summary> /// <param name="styleProviderTypes">The style provider types.</param> /// <returns></returns> public StylePlugin GetDefaultStylePlugin(StyleCategories styleProviderTypes) { return(GetDefaultStylePluginCore(styleProviderTypes)); }
/// <summary> /// Gets the style plugins. /// </summary> /// <param name="styleCategories">The style categories.</param> /// <returns></returns> public Collection <StylePlugin> GetStylePlugins(StyleCategories styleCategories) { return(GetStylePluginsCore(styleCategories)); }
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); } } }
private void InitValueItem <T>(StyleCategories styleProviderType, DistinctColumnValue columnValueGroup, string columnName) where T : Style { Collection <Style> styles = new Collection <Style>(); if (styleProviderType == StyleCategories.Composite) { Collection <StylePlugin> plugins = new Collection <StylePlugin>(); var areaPlugin = GisEditor.StyleManager.GetDefaultStylePlugin(StyleCategories.Area); if (areaPlugin != null) { plugins.Add(areaPlugin); } var linePlugin = GisEditor.StyleManager.GetDefaultStylePlugin(StyleCategories.Line); if (linePlugin != null) { plugins.Add(linePlugin); } var pointPlugin = GisEditor.StyleManager.GetDefaultStylePlugin(StyleCategories.Point); if (pointPlugin != null) { plugins.Add(pointPlugin); } foreach (var item in plugins) { Style style = GetStyleByPlugin(item); if (style != null) { styles.Add(style); } } } else { var styleProvider = GisEditor.StyleManager.GetDefaultStylePlugin(styleProviderType); if (styleProvider != null) { Style style = GetStyleByPlugin(styleProvider); if (style != null) { styles.Add(style); } } } if (styles.Count > 0) { ValueItem valueItem = new ValueItem(); valueItem.Value = columnValueGroup.ColumnValue; styles.ForEach(s => valueItem.CustomStyles.Add(s)); ValueItemEntity valueItemEntity = ValueItems.FirstOrDefault(tmpItem => tmpItem.MatchedValue.Equals(columnValueGroup.ColumnValue, StringComparison.Ordinal)); if (valueItemEntity == null) { valueItem = new ValueItem(); valueItem.Value = columnValueGroup.ColumnValue; styles.ForEach(s => valueItem.CustomStyles.Add(s)); var image = StyleHelper.GetImageFromStyle(styles); var newValueItemEntity = GetValueItemEntity(image, columnValueGroup.ColumnValue, valueItem); newValueItemEntity.Count = columnValueGroup.ColumnValueCount; ValueItems.Add(newValueItemEntity); } else { //valueItemEntity.Update(valueItem); valueItemEntity.Count = columnValueGroup.ColumnValueCount; } } }