public static bool CheckIsVisibleZoomLevel(LayerListItem zoomLevelEntity) { ZoomLevel zoomLevel = zoomLevelEntity.ConcreteObject as ZoomLevel; if (zoomLevel != null && GisEditor.ActiveMap != null) { int applyToZoomLevelIndex = (int)zoomLevel.ApplyUntilZoomLevel; double upperScale = zoomLevel.Scale; double lowerScale = GisEditor.ActiveMap.ZoomLevelSet.GetZoomLevels()[applyToZoomLevelIndex - 1].Scale; return(GisEditor.ActiveMap.CurrentScale <= upperScale && GisEditor.ActiveMap.CurrentScale >= lowerScale); } else { return(false); } }
/// <summary> /// This method gets a hierarchy object to build the layer list tree. /// </summary> /// <param name="layer">The layer list item to build the layer list tree.</param> /// <returns></returns> protected virtual LayerListItem GetLayerListItemCore(Layer layer) { var layerListItem = new LayerListItem(layer); layerListItem.SideImage = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/GisEditorInfrastructure;component/Images/arrowDown.png", UriKind.Absolute)) }; layerListItem.HighlightBackgroundBrush = GetDefaultLayerBackground(); layerListItem.ConcreteObject = layer; layerListItem.CheckBoxVisibility = Visibility.Visible; layerListItem.IsChecked = layer.IsVisible; layerListItem.Name = layer.Name; layerListItem.PropertyChanged += LayerIsVisiblePropertyChanged; SetStyleSampleImage(layer, layerListItem); return(layerListItem); }
private LayerListItem GetLayerListItemForOverlay(Overlay overlay) { var overlayListItem = new LayerListItem(); overlayListItem.ConcreteObject = overlay; overlayListItem.CheckBoxVisibility = Visibility.Visible; overlayListItem.ChildrenContainerVisibility = Visibility.Visible; overlayListItem.IsChecked = overlay.IsVisible; overlayListItem.Name = overlay.Name; overlayListItem.HighlightBackgroundBrush = GetDefaultLayerGroupBackground(); overlayListItem.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(OverlayItemPropertyChanged); if (selectedLayerListItem != null && overlay == selectedLayerListItem.ConcreteObject) { overlayListItem.HighlightBackgroundBrush = new SolidColorBrush(Colors.LightBlue); } return(overlayListItem); }
private void ZoomToDataMenuItem_Click(object sender, System.Windows.RoutedEventArgs e) { MenuItem menuItem = (MenuItem)sender; LayerListItem layerListItem = (LayerListItem)menuItem.Tag; LayerListItem tempItem = layerListItem; while (!(tempItem.ConcreteObject is FeatureLayer)) { tempItem = tempItem.Parent; } FeatureLayer selectedLayer = tempItem.ConcreteObject as FeatureLayer; if (selectedLayer != null) { selectedLayer.Open(); RectangleShape bbox = selectedLayer.GetBoundingBox(); Collection <string> filters = ((Styles.Style)layerListItem.ConcreteObject).Filters; Collection <string> returningColumnNames = ((Styles.Style)layerListItem.ConcreteObject).GetRequiredColumnNames(); returningColumnNames = GetRequiredColumnNamesForLink(returningColumnNames, selectedLayer.FeatureSource); // IEnumerable<string> allColumns = selectedLayer.FeatureSource.GetColumns().Select(c => c.ColumnName); // Collection<Feature> allDataFeatures = selectedLayer.FeatureSource.GetFeaturesForDrawing(bbox, GisEditor.ActiveMap.Width, //GisEditor.ActiveMap.Height, allColumns, filters); Collection <Feature> features = selectedLayer.FeatureSource.GetFeaturesForDrawing(bbox, GisEditor.ActiveMap.Width, GisEditor.ActiveMap.Height, returningColumnNames); //List<string> linkSourceNameStarts = GetLinkSourceNameStarts(selectedLayer.FeatureSource.LinkSources); //if (filters != null && filters.Count() > 0 && CheckHasLinkColumns(returningColumnNames, filters, linkSourceNameStarts)) //{ // List<Feature> resultFeatureList = features.Where(f => CheckIsValidLinkFeature(f, linkSourceNameStarts)).ToList(); // features = new Collection<Feature>(resultFeatureList); //} Collection <Feature> resultFeatures = features;//new Collection<Feature>(allDataFeatures.Where(f => features.Any(t => t.Id.Equals(f.Id))).ToList()); if (resultFeatures.Count > 0) { RectangleShape boundingBox = ExtentHelper.GetBoundingBoxOfItems(resultFeatures); GisEditor.ActiveMap.CurrentExtent = boundingBox; GisEditor.ActiveMap.Refresh(); } } }
private void ExportMenuItem_Click(object sender, RoutedEventArgs e) { MenuItem menuItem = (MenuItem)sender; LayerListItem layerListItem = (LayerListItem)menuItem.Tag; LayerListItem tempItem = layerListItem; while (!(tempItem.ConcreteObject is FeatureLayer)) { tempItem = tempItem.Parent; } FeatureLayer selectedLayer = tempItem.ConcreteObject as FeatureLayer; if (selectedLayer != null) { selectedLayer.Open(); RectangleShape bbox = selectedLayer.GetBoundingBox(); Collection <string> filters = ((Styles.Style)layerListItem.ConcreteObject).Filters; Collection <string> returningColumnNames = ((Styles.Style)layerListItem.ConcreteObject).GetRequiredColumnNames(); returningColumnNames = GetRequiredColumnNamesForLink(returningColumnNames, selectedLayer.FeatureSource); Collection <FeatureSourceColumn> featureColumns = selectedLayer.FeatureSource.GetColumns(); IEnumerable <string> allColumns = featureColumns.Select(c => c.ColumnName); ////LINK: //Collection<Feature> allDataFeatures = selectedLayer.FeatureSource.GetFeaturesForDrawing(bbox, GisEditor.ActiveMap.Width, GisEditor.ActiveMap.Height, allColumns, filters); ////LINK: //Collection<Feature> features = selectedLayer.FeatureSource.GetFeaturesForDrawing(bbox, GisEditor.ActiveMap.Width, GisEditor.ActiveMap.Height, returningColumnNames, filters); Collection <Feature> features = selectedLayer.FeatureSource.GetFeaturesForDrawing(bbox, GisEditor.ActiveMap.Width, GisEditor.ActiveMap.Height, returningColumnNames); ////LINK: //List<string> linkSourceNameStarts = GetLinkSourceNameStarts(selectedLayer.FeatureSource.LinkSources); //if (filters != null && filters.Count() > 0 && CheckHasLinkColumns(returningColumnNames, filters, linkSourceNameStarts)) //{ // List<Feature> resultFeatureList = features.Where(f => CheckIsValidLinkFeature(f, linkSourceNameStarts)).ToList(); // features = new Collection<Feature>(resultFeatureList); //} Collection <Feature> resultFeatures = features; // new Collection<Feature>(allDataFeatures.Where(f => features.Any(t => t.Id.Equals(f.Id))).ToList()); FeatureLayerPlugin layerPlugin = (FeatureLayerPlugin)GisEditor.LayerManager.GetLayerPlugins(selectedLayer.GetType()).FirstOrDefault(); ExportToShapeFile(resultFeatures, featureColumns, layerPlugin, selectedLayer.FeatureSource.GetFirstFeaturesWellKnownType()); } }
private LayerListItem GetLayerListItemForMap(GisEditorWpfMap wpfMap) { var mapElementItem = new LayerListItem(); LayerListItem overlayListItem = null; foreach (var overlay in wpfMap.Overlays.Reverse().Concat(wpfMap.InteractiveOverlays)) { overlayListItem = GetLayerListItemFromUIPlugins(overlay); if (overlayListItem != null) { overlayListItem.Parent = mapElementItem; LayerOverlay layerOverlay = overlay as LayerOverlay; if (layerOverlay != null) { foreach (var layer in layerOverlay.Layers.Reverse()) { var layerListItem = GetLayerListItemForLayer(layer); if (layerListItem != null) { if (SelectedLayerListItem != null && layer == SelectedLayerListItem.ConcreteObject) { layerListItem.HighlightBackgroundBrush = new SolidColorBrush(Colors.LightBlue); SelectedLayerListItem = layerListItem; } if (wpfMap.FeatureLayerEditOverlay != null && wpfMap.FeatureLayerEditOverlay.EditTargetLayer == layer && layer.IsVisible) { layerListItem.WarningImages.Add( new Image { Source = new BitmapImage(new Uri("pack://application:,,,/GisEditorPluginCore;component/Images/sketchTools.png", UriKind.Absolute)), Width = 14, Height = 14, ToolTip = "In Editing", Name = "InEditing" }); } layerListItem.Parent = overlayListItem; overlayListItem.Children.Add(layerListItem); } } } mapElementItem.Children.Add(overlayListItem); } } return(mapElementItem); }
public ObservableCollection <MenuItem> GetLayerListContextMenuItems(LayerListItem layerListItem) { ObservableCollection <MenuItem> menuItems = null; GettingLayerListItemContextMenuItemsEventArgs gettingLayerListItemContextMenuItemsEventArgs = new GettingLayerListItemContextMenuItemsEventArgs(null); OnGettingLayerListItemContextMenuItems(gettingLayerListItemContextMenuItemsEventArgs); if (!gettingLayerListItemContextMenuItemsEventArgs.Cancel) { menuItems = GetLayerListContextMenuItemsCore(layerListItem); GottenLayerListItemContextMenuItemsEventArgs gottenLayerListItemContextMenuItemsEventArgs = new GottenLayerListItemContextMenuItemsEventArgs(menuItems); OnGottenLayerListItemContextMenuItems(gottenLayerListItemContextMenuItemsEventArgs); IEnumerable <MenuItem> resultMenuItems = gettingLayerListItemContextMenuItemsEventArgs.MenuItems.Concat(gottenLayerListItemContextMenuItemsEventArgs.MenuItems); if (layerListItem.ConcreteObject is Layer) { menuItems = OrderMenuItems(new ObservableCollection <MenuItem>(resultMenuItems), (Layer)layerListItem.ConcreteObject); } else { menuItems = new ObservableCollection <MenuItem>(resultMenuItems); } } else { menuItems = gettingLayerListItemContextMenuItemsEventArgs.MenuItems; } if (menuItems != null) { MenuItem menuItem = menuItems.FirstOrDefault(m => m.Header.Equals(GisEditor.LanguageManager.GetStringResource("MapElementsListPluginProperties"))); if (menuItem != null) { menuItems.Remove(menuItem); menuItems.Add(menuItem); } } return(menuItems); }
protected virtual ObservableCollection <MenuItem> GetLayerListContextMenuItemsCore(LayerListItem layerListItem) { ObservableCollection <MenuItem> menuItems = new ObservableCollection <MenuItem>(); var args = new GetLayerListItemContextMenuParameters(layerListItem); foreach (var item in layerListItem.ContextMenuItems) { menuItems.Add(item); } if (layerListItem.ConcreteObject is Layer) { var layerPlugin = GisEditor.LayerManager.GetLayerPlugins(layerListItem.ConcreteObject.GetType()).FirstOrDefault(); if (layerPlugin != null) { foreach (var item in layerPlugin.GetLayerListItemContextMenuItems(args)) { menuItems.Add(item); } } } else if (layerListItem.ConcreteObject is Styles.Style) { var stylePlugin = GisEditor.StyleManager.GetStylePluginByStyle((Styles.Style)layerListItem.ConcreteObject); if (stylePlugin != null) { foreach (var item in stylePlugin.GetLayerListItemContextMenuItems(args)) { menuItems.Add(item); } } Styles.Style style = (Styles.Style)layerListItem.ConcreteObject; if (style is CompositeStyle) { CompositeStyle compositeStyle = (CompositeStyle)style; if (compositeStyle.Styles.Count == 1 && !(compositeStyle.Styles[0] is FilterStyle) && compositeStyle.Styles[0].Filters != null && compositeStyle.Styles[0].Filters.Count > 0) { MenuItem menuItem = GetFilteredDataMenuItem(layerListItem); menuItems.Add(menuItem); MenuItem exportMenuItem = GetExportFilterMenuItem(layerListItem); menuItems.Add(exportMenuItem); MenuItem zoomtoMenuItem = GetZoomToFilteredDataMenuItem(layerListItem); menuItems.Add(zoomtoMenuItem); } } else if (!(style is FilterStyle) && style.Filters != null && style.Filters.Count > 0) { MenuItem menuItem = GetFilteredDataMenuItem(layerListItem); menuItems.Add(menuItem); MenuItem zoomtoMenuItem = GetZoomToFilteredDataMenuItem(layerListItem); menuItems.Add(zoomtoMenuItem); } } foreach (var uiPlugin in GisEditor.UIManager.GetActiveUIPlugins()) { var tmpItems = uiPlugin.GetLayerListItemContextMenuItems(args); if (tmpItems != null && tmpItems.Count > 0) { menuItems.Add(new MenuItem { Header = "--" }); foreach (var tmItem in tmpItems) { menuItems.Add(tmItem); } } } return(menuItems); }
public static void EditStyle(LayerListItem selectedLayerListItem) { var componentStyleItem = LayerListHelper.FindViewModelInTree <CompositeStyle>(selectedLayerListItem) as StyleLayerListItem; if (componentStyleItem != null) { var componentStyle = componentStyleItem.ConcreteObject as CompositeStyle; var styleArguments = new StyleBuilderArguments(); styleArguments.FeatureLayer = componentStyleItem.Parent.ConcreteObject as FeatureLayer; var featureLayerPlugin = GisEditor.LayerManager.GetLayerPlugins(styleArguments.FeatureLayer.GetType()).FirstOrDefault() as FeatureLayerPlugin; if (featureLayerPlugin != null) { styleArguments.AvailableStyleCategories = GetStyleCategoriesByFeatureLayer(styleArguments.FeatureLayer); int from = 1; int to = GisEditor.ActiveMap.ZoomLevelSet.CustomZoomLevels.Where(z => z.GetType() == typeof(ZoomLevel)).Count(); if (!string.IsNullOrEmpty(componentStyleItem.ZoomLevelRange)) { var array = componentStyleItem.ZoomLevelRange.Split(" to ".ToArray(), StringSplitOptions.RemoveEmptyEntries); if (array.Length == 2) { int.TryParse(array[0].Replace("(", "").Trim(), out from); int.TryParse(array[1].Replace(")", "").Trim(), out to); } } styleArguments.FromZoomLevelIndex = from; styleArguments.ToZoomLevelIndex = to; styleArguments.AppliedCallback = new Action <StyleBuilderResult>((styleResults) => { if (!styleResults.Canceled) { var resultStyle = styleResults.CompositeStyle as CompositeStyle; var count = GisEditor.ActiveMap.ZoomLevelSet.GetZoomLevels().Where(z => z.GetType() == typeof(ZoomLevel)).Count(); for (int i = 0; i < count; i++) { var customStyles = styleArguments.FeatureLayer.ZoomLevelSet.CustomZoomLevels[i].CustomStyles; if (i >= styleResults.FromZoomLevelIndex - 1 && i < styleResults.ToZoomLevelIndex) { if (!customStyles.Contains(componentStyle)) { customStyles.Add(componentStyle); } componentStyle.Styles.Clear(); componentStyle.Name = resultStyle.Name; foreach (var item in resultStyle.Styles) { componentStyle.Styles.Add(item); } } else { customStyles.Remove(componentStyle); } } if (styleArguments.FeatureLayer.IsVisible) { foreach (var overlay in GisEditor.ActiveMap.GetOverlaysContaining(styleArguments.FeatureLayer)) { overlay.Invalidate(); } } GisEditor.UIManager.InvokeRefreshPlugins(new RefreshArgs(styleResults, RefreshArgsDescriptions.EditStyleDescription)); } }); var styleItems = new Collection <StyleLayerListItem>(); foreach (var style in componentStyle.Styles) { var item = GisEditor.StyleManager.GetStyleLayerListItem(style); if (item != null) { styleItems.Add(item); } } var clonedStyleItems = new Collection <StyleLayerListItem>(); var clonedCompositeStyle = componentStyle.CloneDeep() as CompositeStyle; styleArguments.StyleToEdit = clonedCompositeStyle; foreach (var style in clonedCompositeStyle.Styles) { var item = GisEditor.StyleManager.GetStyleLayerListItem(style); if (item != null) { clonedStyleItems.Add(item); } } object selectedClonedObject = FindSelectedObject(styleItems.ToList(), clonedStyleItems.ToList(), selectedLayerListItem.ConcreteObject); styleArguments.FillRequiredColumnNames(); styleArguments.SelectedConcreteObject = selectedClonedObject; var styleBuilder = GisEditor.StyleManager.GetStyleBuiderUI(styleArguments); //styleBuilder.StyleBuilderArguments = styleArguments; //var styleResult = GisEditor.StyleManager.EditStyle(styleArguments, selectedClonedObject); if (styleBuilder.ShowDialog().GetValueOrDefault()) { styleArguments.AppliedCallback(styleBuilder.StyleBuilderResult); } } } }
public static LayerListItem FindViewModelInTree <T>(LayerListItem layerListItem) where T : class { return(FindViewModelInTree(layerListItem, new Func <object, bool>((actualMapElement) => actualMapElement is T))); }
/// <summary> /// Initializes a new instance of the <see cref="GetLayerListItemContextMenuParameters" /> class. /// </summary> /// <param name="layerListItem">The layer list item.</param> public GetLayerListItemContextMenuParameters(LayerListItem layerListItem) { this.layerListItem = layerListItem; }
public SelectedLayerListItemChangedLayerListManagerEventArgs(LayerListItem newValue, LayerListItem oldValue) { NewValue = newValue; OldValue = oldValue; }