public void MouseDown(IFeatureLayerViewModel sender, GraphicMouseButtonEventArgs e)
        {
            if (sender == null)
            {
                return;
            }
            var graphic = e.Graphic as FeatureGraphic;
            if (graphic == null)
            {
                return;
            }
            var vm = graphic.ViewModel;

            if (SelectedFeature != vm)
            {
                CancelActiveEdit();

                SelectedFeature = vm;
                SelectedLayer = sender;
                vm.Graphic.Select();

                GraphicEditor.StartEditEx(SelectedFeature.Graphic);
                ObjectEditor.Edit(SelectedFeature);
            }
        }
        private IEnumerable<IResult> Update(IFeatureLayerViewModel layer)
        {
            yield return Show.Busy("Loading " + layer.Name);

            yield return new UpdateLayer() { Layer = layer, Envelope = null }.AsResult();

            yield return Show.NotBusy();
        }
        public void Add(IFeatureLayerViewModel featureLayer)
        {
            var model = featureLayer as IFeatureLayerViewModel;

            if (model != null)
            {
                var view = model.GetView();
                var layer = view as GraphicsLayer;

                if (layer != null)
                {
                    CancelActiveEdit();

                    FeatureViewModel viewModel = model.NewFeature();

                    ObjectEditor.Edit(viewModel);
                    GraphicEditor.Add(layer, viewModel.Graphic);
                    SelectedFeature = viewModel;
                    SelectedLayer = model;
                }
            }
        }