protected override void HandleModelChanged(object sender, ModelChangedArgs e) {
     TreePath treePath = new TreePath(view.Tree.Root);
     switch (e.Context) {
         case EventContext.WorkitemPropertiesUpdatedFromView:
             HandleWorkitemPropertiesUpdated(PropertyUpdateSource.WorkitemView);
             break;
         case EventContext.WorkitemPropertiesUpdatedFromPropertyView:
             HandleWorkitemPropertiesUpdated(PropertyUpdateSource.WorkitemPropertyView);
             break;
         case EventContext.WorkitemsChanged:
             treePath = view.Tree.GetPath(view.CurrentNode.Level == 2 ? view.CurrentNode.Parent : view.CurrentNode);
             model.InvokeStructureChanged(treePath);
             break;
         case EventContext.VirtualWorkitemRemoved:
             treePath = view.Tree.GetPath(view.CurrentNode.Parent??view.Tree.Root);
             model.InvokeStructureChanged(treePath);
             break;
         case EventContext.ProjectSelected:
             HandleModelChanged();
             break;
         case EventContext.WorkitemsRequested:
             HandleModelChanged();
             break;
         case EventContext.WorkitemSaved:
             treePath = view.Tree.GetPath(view.CurrentNode.Level == 2 ? view.CurrentNode.Parent : view.CurrentNode);
             model.InvokeStructureChanged(treePath);
             break;
         case EventContext.WorkitemCacheInvalidated:
             assetCache.Drop();
             break;
         default:
             throw new NotSupportedException();
     }
 }
 public void Notify(object sender, ModelChangedArgs e)
 {
     if (ModelChanged != null)
     {
         ModelChanged(sender, e);
     }
 }
        protected override void HandleModelChanged(object sender, ModelChangedArgs e) {
            if (!ReferenceEquals(sender, this)) {
                return;
            }

            var versionOneSettings = CreateVersionOneSettings(view.Model);
            Logger.Info("Connecting to VersionOne with new settings...");
            DataLayer.Connect(versionOneSettings);
            EventDispatcher.Notify(this, new ModelChangedArgs(EventReceiver.WorkitemView, EventContext.WorkitemCacheInvalidated));
            Logger.Debug("Sending update request to Projects view...");
            EventDispatcher.Notify(this, new ModelChangedArgs(EventReceiver.ProjectView, EventContext.ProjectsRequested));
        }
 protected override void HandleModelChanged(object sender, ModelChangedArgs e) {
     switch(e.Context) {
         case EventContext.ProjectsRequested:
             Logger.Debug("Loading projects...");
             View.UpdateData();
             break;
         case EventContext.ProjectSelected:
             Logger.Debug("Project selected, sending update request to Workitem view");
             EventDispatcher.Notify(this, new ModelChangedArgs(EventReceiver.WorkitemView, EventContext.ProjectSelected));
             break;
         default:
             throw new NotSupportedException();
     }
 }
 protected override void HandleModelChanged(object sender, ModelChangedArgs e) {
     switch (e.Context) {
         case EventContext.WorkitemPropertiesUpdatedFromView:
             HandleWorkitemPropertiesUpdated(PropertyUpdateSource.WorkitemView);
             break;
         case EventContext.WorkitemPropertiesUpdatedFromPropertyView:
             HandleWorkitemPropertiesUpdated(PropertyUpdateSource.WorkitemPropertyView);
             break;
         case EventContext.WorkitemsChanged:
             model.InvokeStructureChanged();
             break;
         case EventContext.ProjectSelected:
             HandleModelChanged();
             break;
         case EventContext.WorkitemsRequested:
             HandleModelChanged();
             break;
         case EventContext.WorkitemCacheInvalidated:
             assetCache.Drop();
             break;
         default:
             throw new NotSupportedException();
     }
 }
 private bool ShouldHandleModelChangedEvent(ModelChangedArgs e) {
     return ReceiverType == e.Receiver || e.Receiver == EventReceiver.All;
 }
 protected virtual void HandleModelChanged(object sender, ModelChangedArgs e) { }
 private void ModelChanged(object sender, ModelChangedArgs e) {
     if(ShouldHandleModelChangedEvent(e)) {
         HandleModelChanged(sender, e);
     }
 }
 public void Notify(object sender, ModelChangedArgs e) {
     if(ModelChanged != null) {
         ModelChanged(sender, e);
     }
 }