示例#1
0
        private void LayersChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                foreach (ILayer layer in e.NewItems)
                {
                    AddLayer(layer);
                }
                break;

            case NotifyCollectionChangedAction.Remove:
                foreach (ILayer layer in e.OldItems)
                {
                    RemoveLayer(layer);
                }
                break;

            case NotifyCollectionChangedAction.Move:
                int oldIndex = e.OldStartingIndex;
                int newIndex = e.NewStartingIndex;
                if (oldIndex != -1 && newIndex != -1)
                {
                    IProjectExplorerNodeViewModel entry = this.LayerNodes[oldIndex];
                    this.LayerNodes[oldIndex] = this.LayerNodes[newIndex];
                    this.LayerNodes[newIndex] = entry;
                }
                break;

            default:
                break;
            }
        }
示例#2
0
 public void ChangeCurrentProject(ProjectNodeViewModel projectEntry)
 {
     if (projectEntry == null)
     {
         return;
     }
     if (projectEntry == this.selectedNode)
     {
         return;
     }
     this.selectedNode = projectEntry;
     this.Session.CurrentProject.Value = projectEntry.Project;
 }
        public static IProjectExplorerNodeViewModel GenerateLayer(IEventAggregator eventAggregator, IActionHandler handler, ILayer layer)
        {
            IProjectExplorerNodeViewModel entry = null;

            if (typeof(Layer).IsInstanceOfType(layer))
            {
                entry = new LayerNodeViewModel(eventAggregator, handler, layer as Layer);
            }
            else if (typeof(LayerGroup).IsInstanceOfType(layer))
            {
                entry = new LayerGroupViewModel(eventAggregator, handler, layer as LayerGroup);
            }
            return(entry);
        }
示例#4
0
        private void CurrentMapsChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                foreach (Map map in e.NewItems)
                {
                    MapNodeViewModel node = new MapNodeViewModel(this.eventAggregator, actionHandler, map);
                    this.ExplorerNodes.Add(node);
                }
                break;

            case NotifyCollectionChangedAction.Remove:
                IEnumerable <MapNodeViewModel> projectViewModels = this.ExplorerNodes.OfType <MapNodeViewModel>();
                foreach (Map map in e.OldItems)
                {
                    MapNodeViewModel toRemove = projectViewModels.FirstOrDefault(entry => entry.Map == map);
                    this.ExplorerNodes.Remove(toRemove);
                }
                break;

            case NotifyCollectionChangedAction.Move:
                int oldIndex = e.OldStartingIndex;
                int newIndex = e.NewStartingIndex;
                if (oldIndex != -1 && newIndex != -1)
                {
                    IProjectExplorerNodeViewModel entry = this.ExplorerNodes[oldIndex];
                    this.ExplorerNodes[oldIndex] = this.ExplorerNodes[newIndex];
                    this.ExplorerNodes[newIndex] = entry;
                }
                break;

            default:
                break;
            }
        }
示例#5
0
        public void AddLayer(ILayer layer)
        {
            IProjectExplorerNodeViewModel node = ProjectExplorerMethods.GenerateLayer(this.eventAggregator, this.actionHandler, layer);

            this.LayerNodes.Add(node);
        }