private void SetDefaultColumnValue(AnnotaionStyleType annotationStyleType = AnnotaionStyleType.LayerStyle) { var lastFeature = TrackShapeLayer.InternalFeatures.LastOrDefault(); switch (annotationStyleType) { case AnnotaionStyleType.LayerStyle: if (lastFeature != null && !lastFeature.ColumnValues.ContainsKey(valueStyleMatchColumnName)) { WellKnownType wktype = lastFeature.GetWellKnownType(); var availableValueItem = layerStyle.ValueItems.Last(tmpValueItem => { switch (wktype) { case WellKnownType.Point: case WellKnownType.Multipoint: return(tmpValueItem.DefaultPointStyle != null); case WellKnownType.Polygon: case WellKnownType.Multipolygon: return(tmpValueItem.DefaultAreaStyle != null); case WellKnownType.Line: case WellKnownType.Multiline: return(tmpValueItem.DefaultLineStyle != null); default: return(false); } }); lastFeature.ColumnValues.Add(valueStyleMatchColumnName, availableValueItem.Value); } break; case AnnotaionStyleType.FileLinkStyle: if (lastFeature != null && lastFeature.GetShape() is PointShape && lastFeature.ColumnValues.ContainsKey(LinkFileStyleColumnName) && !string.IsNullOrEmpty(lastFeature.ColumnValues[LinkFileStyleColumnName])) { var availableValueItem = fileLinkStyle.ValueItems.LastOrDefault(); if (!lastFeature.ColumnValues[LinkFileStyleColumnName].Contains("||")) { string value = availableValueItem.Value + "||" + lastFeature.ColumnValues[LinkFileStyleColumnName]; lastFeature.ColumnValues[LinkFileStyleColumnName] = value; } } break; } }
private void ApplyNewStyle <T>(string propertyName, T newStyle, AnnotaionStyleType annotationStyleType = AnnotaionStyleType.LayerStyle) where T : Styles.Style { ValueItem valueItem = layerStyle.ValueItems.LastOrDefault().CloneDeep(); if (annotationStyleType == AnnotaionStyleType.FileLinkStyle) { valueItem = fileLinkStyle.ValueItems.LastOrDefault().CloneDeep(); newStyle.Name = "FileLinkStyle"; } valueItem.Value = RandomString(); valueItem.GetType().GetProperty(propertyName).GetSetMethod().Invoke(valueItem, new object[] { newStyle }); TextStyle textStyle = newStyle as TextStyle; if (textStyle != null) { switch (annotationStyleType) { case AnnotaionStyleType.LayerStyle: default: valueItem.DefaultTextStyle.PointPlacement = PointPlacement.LowerRight; break; case AnnotaionStyleType.FileLinkStyle: valueItem.DefaultTextStyle.PointPlacement = PointPlacement.LowerCenter; break; } } switch (annotationStyleType) { case AnnotaionStyleType.FileLinkStyle: fileLinkStyle.ValueItems.Add(valueItem); break; case AnnotaionStyleType.LayerStyle: default: layerStyle.ValueItems.Add(valueItem); break; } }
//public T GetLatestStyle<T>(bool returnRealStyle = true) where T : Style //{ // return GetLatestStyle<T>(String.Empty, returnRealStyle); //} public T GetLatestStyle <T>(AnnotaionStyleType annotaionStyleType, bool returnRealStyle = true) where T : Styles.Style { ValueItem lastValueItem = null; switch (annotaionStyleType) { case AnnotaionStyleType.LayerStyle: lastValueItem = layerStyle.ValueItems.LastOrDefault(); break; case AnnotaionStyleType.FileLinkStyle: lastValueItem = fileLinkStyle.ValueItems.LastOrDefault(); break; } if (lastValueItem != null) { var styles = new Collection <Styles.Style>(); if (returnRealStyle) { styles.Add(lastValueItem.DefaultAreaStyle.CustomAreaStyles.Count > 0 ? lastValueItem.DefaultAreaStyle.CustomAreaStyles[0] : lastValueItem.DefaultAreaStyle); styles.Add(lastValueItem.DefaultLineStyle.CustomLineStyles.Count > 0 ? lastValueItem.DefaultLineStyle.CustomLineStyles[0] : lastValueItem.DefaultLineStyle); styles.Add(lastValueItem.DefaultPointStyle.CustomPointStyles.Count > 0 ? lastValueItem.DefaultPointStyle.CustomPointStyles[0] : lastValueItem.DefaultPointStyle); styles.Add(lastValueItem.DefaultTextStyle.CustomTextStyles.Count > 0 ? lastValueItem.DefaultTextStyle.CustomTextStyles[0] : lastValueItem.DefaultTextStyle); } else { styles.Add(lastValueItem.DefaultAreaStyle); styles.Add(lastValueItem.DefaultLineStyle); styles.Add(lastValueItem.DefaultPointStyle); styles.Add(lastValueItem.DefaultTextStyle); } return(styles.OfType <T>().FirstOrDefault()); } return(null); }
public void ChangeAppliedStyle(Styles.Style style, AnnotaionStyleType annotationStyleType) { AreaStyle areaStyle = style as AreaStyle; LineStyle lineStyle = style as LineStyle; TextStyle textStyle = style as TextStyle; PointStyle pointStyle = style as PointStyle; if (areaStyle != null) { ApplyNewStyle(defaultStyleKeys[2], areaStyle); } else if (lineStyle != null) { ApplyNewStyle(defaultStyleKeys[1], lineStyle); } else if (textStyle != null) { ApplyNewStyle(defaultStyleKeys[3], textStyle, annotationStyleType); } else if (pointStyle != null) { ApplyNewStyle(defaultStyleKeys[0], pointStyle, annotationStyleType); } }
internal static void EditAnnotationStyle <T>(AnnotaionStyleType annotationStyleType) where T : Style { AreaStyle areaStyle = (AreaStyle)(ViewModel.CurrentAnnotationOverlay.GetLatestStyle <AreaStyle>(AnnotaionStyleType.LayerStyle, false)).CloneDeep(); areaStyle.Name = "Annotation Area Style"; LineStyle lineStyle = (LineStyle)(ViewModel.CurrentAnnotationOverlay.GetLatestStyle <LineStyle>(AnnotaionStyleType.LayerStyle, false)).CloneDeep(); lineStyle.Name = "Annotation Line Style"; PointStyle pointStyle = (PointStyle)(ViewModel.CurrentAnnotationOverlay.GetLatestStyle <PointStyle>(AnnotaionStyleType.LayerStyle, false)).CloneDeep(); pointStyle.Name = "Annotation Point Style"; TextStyle textStyle = (TextStyle)(ViewModel.CurrentAnnotationOverlay.GetLatestStyle <TextStyle>(AnnotaionStyleType.LayerStyle, false)).CloneDeep(); textStyle.Name = "Annotation Text Style"; PointStyle fileLinkPointStyle = (PointStyle)(ViewModel.CurrentAnnotationOverlay.GetLatestStyle <PointStyle>(AnnotaionStyleType.FileLinkStyle, false)).CloneDeep(); fileLinkPointStyle.Name = "File Link Point Style"; TextStyle fileLinkTextStyle = (TextStyle)(ViewModel.CurrentAnnotationOverlay.GetLatestStyle <TextStyle>(AnnotaionStyleType.FileLinkStyle, false)).CloneDeep(); fileLinkTextStyle.Name = "File Link Text Style"; CompositeStyle compositeStyle = new CompositeStyle(); compositeStyle.Styles.Add(areaStyle); compositeStyle.Styles.Add(lineStyle); compositeStyle.Styles.Add(pointStyle); compositeStyle.Styles.Add(textStyle); compositeStyle.Styles.Add(fileLinkPointStyle); compositeStyle.Styles.Add(fileLinkTextStyle); StyleBuilderArguments styleArguments = new StyleBuilderArguments(); styleArguments.IsSubStyleReadonly = true; styleArguments.AvailableUIElements = StyleBuilderUIElements.StyleList; styleArguments.AvailableStyleCategories = StyleCategories.Area | StyleCategories.Line | StyleCategories.Point; styleArguments.StyleToEdit = compositeStyle; styleArguments.FeatureLayer = ViewModel.CurrentAnnotationOverlay.TrackShapeLayer; styleArguments.AppliedCallback = (result) => { var AnnotationStyle = result.CompositeStyle; ViewModel.AnnotationPreview = AnnotationStyle.GetPreviewImage(32, 32); }; var resultStyle = GisEditor.StyleManager.EditStyle(styleArguments); if (resultStyle != null && resultStyle.CompositeStyle != null) { var annotationStyle = resultStyle.CompositeStyle; foreach (var item in annotationStyle.Styles) { if (item.Name == "Annotation Area Style" || item.Name == "Annotation Line Style" || item.Name == "Annotation Point Style" || item.Name == "Annotation Text Style") { ViewModel.CurrentAnnotationOverlay.ChangeAppliedStyle(item, AnnotaionStyleType.LayerStyle); } else if (item.Name == "File Link Point Style" || item.Name == "File Link Text Style") { ViewModel.CurrentAnnotationOverlay.ChangeAppliedStyle(item, AnnotaionStyleType.FileLinkStyle); } } ViewModel.AnnotationPreview = annotationStyle.GetPreviewImage(32, 32); } }