private void CurrentLayerChanged(object sender, PropertyChangedEventArgs e) { this.CurrentLayer.Value = GetNewValue(sender, e) as ILayer; ILayerListNodeViewModel layerEntry = this.LayerNodes.FirstOrDefault(entry => entry.Layer == this.CurrentLayer.Value); ChangeCurrentLayer(layerEntry); }
private void HandleDropCommand(DragEventArgs args) { IDataObject data = args.Data; if (data.GetDataPresent(SerializableNameUtils.GetName(DragDataType.LayerListNode))) { ILayer draggedLayer = data.GetData(SerializableNameUtils.GetName(DragDataType.LayerListNode)) as ILayer; this.Session.CurrentMap.Value.AddLayer(draggedLayer); } args.Handled = true; ILayerListNodeViewModel lastLayertNode = this.LayerNodes.Last <ILayerListNodeViewModel>(); lastLayertNode.IsDragBelow.Value = false; }
private void LayersChanged(object sender, NotifyCollectionChangedEventArgs args) { switch (args.Action) { case NotifyCollectionChangedAction.Add: foreach (ILayer layer in args.NewItems) { ILayerListNodeViewModel entry = LayerListMethods.Generate(this.eventAggregator, this.session, this.actionHandler, layer); int insertIndex = args.NewStartingIndex; if (insertIndex < this.LayerNodes.Count) { this.LayerNodes.Insert(insertIndex++, entry); } else { this.LayerNodes.Add(entry); } } break; case NotifyCollectionChangedAction.Remove: foreach (ILayer layer in args.OldItems) { IEnumerable <ILayerListNodeViewModel> toRemove = new ObservableCollection <ILayerListNodeViewModel>(this.LayerNodes.Where(entry => entry.Layer == layer)); foreach (ILayerListNodeViewModel entry in toRemove) { this.LayerNodes.Remove(entry); } } break; case NotifyCollectionChangedAction.Move: int oldIndex = args.OldStartingIndex; int newIndex = args.NewStartingIndex; if (oldIndex != -1 && newIndex != -1) { ILayerListNodeViewModel entry = this.LayerNodes[oldIndex]; this.LayerNodes[oldIndex] = this.LayerNodes[newIndex]; this.LayerNodes[newIndex] = entry; } break; default: break; } }
private void UpdateLayers(object sender, NotifyCollectionChangedEventArgs e) { switch (e.Action) { case NotifyCollectionChangedAction.Add: foreach (ILayer layer in e.NewItems) { ILayerListNodeViewModel entry = LayerListMethods.Generate(this.eventAggregator, this.Session, this.actionHandler, layer); int insertIndex = e.NewStartingIndex; if (insertIndex < this.LayerNodes.Count) { this.LayerNodes.Insert(insertIndex++, entry); } else { this.LayerNodes.Add(entry); } } break; case NotifyCollectionChangedAction.Remove: foreach (ILayer layer in e.OldItems) { ILayerListNodeViewModel toRemove = this.LayerNodes.FirstOrDefault(entry => entry.Layer == layer); this.LayerNodes.Remove(toRemove); } break; case NotifyCollectionChangedAction.Move: int oldIndex = e.OldStartingIndex; int newIndex = e.NewStartingIndex; if (oldIndex != -1 && newIndex != -1) { ILayerListNodeViewModel entry = this.LayerNodes[oldIndex]; this.LayerNodes[oldIndex] = this.LayerNodes[newIndex]; this.LayerNodes[newIndex] = entry; } break; default: break; } }
public void ChangeCurrentLayer(ILayerListNodeViewModel layerEntry) { if (layerEntry == null) { return; } if (layerEntry == this.selectedNode) { return; } if (this.selectedNode != null) { this.selectedNode.IsSelected.Value = false; } this.selectedNode = layerEntry; this.selectedNode.IsSelected.Value = true; this.Session.CurrentLayer.Value = this.selectedNode.Layer; }
private void LoadLayers(ObservableCollection <ILayer> layers) { this.LayerNodes.Clear(); if (layers == null) { return; } foreach (ILayer layer in layers) { ILayerListNodeViewModel node = LayerListMethods.Generate(this.eventAggregator, this.Session, this.actionHandler, layer); this.LayerNodes.Add(node); if (this.Session.CurrentLayer.Value == layer) { node.IsSelected.Value = true; this.selectedNode = node; } } }
public static ILayerListNodeViewModel Generate(IEventAggregator eventAggregator, IAmeSession session, IActionHandler handler, ILayer layer) { ILayerListNodeViewModel entry = null; if (typeof(Layer).IsInstanceOfType(layer)) { entry = new LayerListNodeViewModel(eventAggregator, session, handler, layer as Layer); } else if (typeof(LayerGroup).IsInstanceOfType(layer)) { LayerGroup layerGroup = layer as LayerGroup; LayerListGroupViewModel groupEntry = new LayerListGroupViewModel(eventAggregator, session, handler, layerGroup); foreach (ILayer childLayer in layerGroup.Layers) { ILayerListNodeViewModel childEntry = Generate(eventAggregator, session, handler, childLayer); groupEntry.LayerNodes.Add(childEntry); } entry = groupEntry; } return(entry); }
private void HandleDragLeaveCommand(DragEventArgs args) { ILayerListNodeViewModel lastLayertNode = this.LayerNodes.Last <ILayerListNodeViewModel>(); lastLayertNode.IsDragBelow.Value = false; }