{"action":"created","issue":{"url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/5314","labels_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/5314/labels{/name}","comments_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/5314/comments","events_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/5314/events","html_url":"https://github.com/DynamoDS/Dynamo/pull/5314","id":107137461,"number":5314,"title":"IViewExtension and other infrastructure changes in Dynamo to support DM extension","user":{"login":"aparajit-pratap","id":5710686,"avatar_url":"https://avatars.githubusercontent.com/u/5710686?v=3","gravatar_id":"","url":"https://api.github.com/users/aparajit-pratap","html_url":"https://github.com/aparajit-pratap","followers_url":"https://api.github.com/users/aparajit-pratap/followers","following_url":"https://api.github.com/users/aparajit-pratap/following{/other_user}","gists_url":"https://api.github.com/users/aparajit-pratap/gists{/gist_id}","starred_url":"https://api.github.com/users/aparajit-pratap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aparajit-pratap/subscriptions","organizations_url":"https://api.github.com/users/aparajit-pratap/orgs","repos_url":"https://api.github.com/users/aparajit-pratap/repos","events_url":"https://api.github.com/users/aparajit-pratap/events{/privacy}","received_events_url":"https://api.github.com/users/aparajit-pratap/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/DynamoDS/Dynamo/labels/DNM","name":"DNM","color":"5319e7"}],"state":"open","locked":false,"assignee":{"login":"ikeough","id":1139788,"avatar_url":"https://avatars.githubusercontent.com/u/1139788?v=3","gravatar_id":"","url":"https://api.github.com/users/ikeough","html_url":"https://github.com/ikeough","followers_url":"https://api.github.com/users/ikeough/followers","following_url":"https://api.github.com/users/ikeough/following{/other_user}","gists_url":"https://api.github.com/users/ikeough/gists{/gist_id}","starred_url":"https://api.github.com/users/ikeough/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ikeough/subscriptions","organizations_url":"https://api.github.com/users/ikeough/orgs","repos_url":"https://api.github.com/users/ikeough/repos","events_url":"https://api.github.com/users/ikeough/events{/privacy}","received_events_url":"https://api.github.com/users/ikeough/received_events","type":"User","site_admin":false},"milestone":null,"comments":3,"created_at":"2015-09-18T05:38:59Z","updated_at":"2015-09-25T02:30:16Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/5314","html_url":"https://github.com/DynamoDS/Dynamo/pull/5314","diff_url":"https://github.com/DynamoDS/Dynamo/pull/5314.diff","patch_url":"https://github.com/DynamoDS/Dynamo/pull/5314.patch"},"body":"### Purpose\r\n\r\nThis PR is to support the following tasks: \r\nhttp://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-8041\r\nhttp://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-8042\r\n\r\nThis PR makes few changes to API's in support for DM feature as an `IViewExtension`. Please refer to associated PR for the Extension implementation [here](https://git.autodesk.com/Dynamo/DynamoPro/pull/178).\r\n\r\nA new event is introduced in `NodeModel` called `OnRequestRenderPackages` to request for additional render packages for the node when it is updated. This is called in `OnRenderPackageUpdateCompleted`. `OnRequestRenderPackages` returns with additional RP's if available and these are aggregated with the node's RP's before being sent to `Watch3DViewModelBase` to handle for rendering.\r\n\r\nA new event `SelectionCollectionChanged` is introduced in `ViewLoadedParams` so that it can be subscribed to by the new `IViewExtension` for node selection/de-selection events in the worskpace.\r\n\r\n### Impact assessment\r\n\r\n- [x] Changes a public interface \r\n\r\nAdded a new interface, `IWatch3DView` to expose a limited set of methods/properties to extensions like DM Extension. This interface is exposed  to the external `IViewExtension` through the `BackgroundPreView` property via `ViewLoadedParams`. \r\n\r\n`HelixWatchViewModel.DeleteGeometryForIdentifier()` access has been changed from `protected` to `internal` as it is called from `Watch3DView` in order to implement the `IWatch3DView` interface method for use in the extension.\r\n\r\n@ikeough is there a better way to update the `Model3DDictionary` outside of `HelixWatchViewModel`?\r\n\r\n#### References (FILL ME IN)\r\n\r\n* Link to architectural design \r\n![image](https://cloud.githubusercontent.com/assets/5710686/9984402/5c40a65e-6049-11e5-81ce-39153ce9d201.png)\r\n\r\n### Reviewers\r\n\r\n@ikeough Reviewer 1\r\n@pboyer  Reviewer 2\r\n\r\n\r\n### FYIs\r\n\r\n@Benglin "},"comment":{"url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/comments/143106796","html_url":"https://github.com/DynamoDS/Dynamo/pull/5314#issuecomment-143106796","issue_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/5314","id":143106796,"user":{"login":"aparajit-pratap","id":5710686,"avatar_url":"https://avatars.githubusercontent.com/u/5710686?v=3","gravatar_id":"","url":"https://api.github.com/users/aparajit-pratap","html_url":"https://github.com/aparajit-pratap","followers_url":"https://api.github.com/users/aparajit-pratap/followers","following_url":"https://api.github.com/users/aparajit-pratap/following{/other_user}","gists_url":"https://api.github.com/users/aparajit-pratap/gists{/gist_id}","starred_url":"https://api.github.com/users/aparajit-pratap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aparajit-pratap/subscriptions","organizations_url":"https://api.github.com/users/aparajit-pratap/orgs","repos_url":"https://api.github.com/users/aparajit-pratap/repos","events_url":"https://api.github.com/users/aparajit-pratap/events{/privacy}","received_events_url":"https://api.github.com/users/aparajit-pratap/received_events","type":"User","site_admin":false},"created_at":"2015-09-25T02:30:16Z","updated_at":"2015-09-25T02:30:16Z","body":"@ikeough I agree with your idea of creating an `IWatch3DViewModel` rather than a `IWatch3DView`. I'm creating a separate task for this and submitting this PR for the time-being. Thanks."}}