{"action":"created","comment":{"url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/comments/40781550","id":40781550,"diff_hunk":"@@ -1092,6 +1094,20 @@ internal double GetPortVerticalOffset(PortModel portModel)\n         /// </summary>\n         public void RegisterInputPorts()","path":"src/DynamoCore/Models/NodeModel.cs","position":34,"original_position":11,"commit_id":"617063ee61f65619b65b8933cd462b9f875b365e","original_commit_id":"6a4dd5c143a56d58f6bd324141df905b9f7accbc","user":{"login":"aosyatnik","id":8158404,"avatar_url":"https://avatars.githubusercontent.com/u/8158404?v=3","gravatar_id":"","url":"https://api.github.com/users/aosyatnik","html_url":"https://github.com/aosyatnik","followers_url":"https://api.github.com/users/aosyatnik/followers","following_url":"https://api.github.com/users/aosyatnik/following{/other_user}","gists_url":"https://api.github.com/users/aosyatnik/gists{/gist_id}","starred_url":"https://api.github.com/users/aosyatnik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aosyatnik/subscriptions","organizations_url":"https://api.github.com/users/aosyatnik/orgs","repos_url":"https://api.github.com/users/aosyatnik/repos","events_url":"https://api.github.com/users/aosyatnik/events{/privacy}","received_events_url":"https://api.github.com/users/aosyatnik/received_events","type":"User","site_admin":false},"body":"We still use `RegisterInputPorts`, it is not `Obsolete` in fact. We just should make it private/internal. But we can't, because `RegisterInputPorts` is used in many other places.","created_at":"2015-09-30T11:01:59Z","updated_at":"2015-09-30T11:01:59Z","html_url":"https://github.com/DynamoDS/Dynamo/pull/5340#discussion_r40781550","pull_request_url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/5340","_links":{"self":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/comments/40781550"},"html":{"href":"https://github.com/DynamoDS/Dynamo/pull/5340#discussion_r40781550"},"pull_request":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/5340"}}},"pull_request":{"url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/5340","id":45648364,"html_url":"https://github.com/DynamoDS/Dynamo/pull/5340","diff_url":"https://github.com/DynamoDS/Dynamo/pull/5340.diff","patch_url":"https://github.com/DynamoDS/Dynamo/pull/5340.patch","issue_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/5340","number":5340,"state":"open","locked":false,"title":"Tooltip fix for UI nodes (TypeLoadData)","user":{"login":"aosyatnik","id":8158404,"avatar_url":"https://avatars.githubusercontent.com/u/8158404?v=3","gravatar_id":"","url":"https://api.github.com/users/aosyatnik","html_url":"https://github.com/aosyatnik","followers_url":"https://api.github.com/users/aosyatnik/followers","following_url":"https://api.github.com/users/aosyatnik/following{/other_user}","gists_url":"https://api.github.com/users/aosyatnik/gists{/gist_id}","starred_url":"https://api.github.com/users/aosyatnik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aosyatnik/subscriptions","organizations_url":"https://api.github.com/users/aosyatnik/orgs","repos_url":"https://api.github.com/users/aosyatnik/repos","events_url":"https://api.github.com/users/aosyatnik/events{/privacy}","received_events_url":"https://api.github.com/users/aosyatnik/received_events","type":"User","site_admin":false},"body":"### Purpose\r\n\r\nLink to YouTrack:\r\n[MAGN-5785](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5785) DUI: Check correctness of Input/OutputParameters for NodeModelSearchElement\r\n\r\nWithout this task I can't finish Data Management tasks.\r\n______________________\r\n\r\nThere are several types of nodes. One of them is node, that is inherited from `NodeModel`. We call them UI nodes, because they look different from others. E.g. \r\n![image](https://cloud.githubusercontent.com/assets/8158404/10016239/1dc73b1e-612e-11e5-8662-9c33275fc382.png)\r\n\r\nNone of them have right tooltip.\r\n![image](https://cloud.githubusercontent.com/assets/8158404/10016255/3b6ea18e-612e-11e5-9b01-59f9af5d0c8e.png)![image](https://cloud.githubusercontent.com/assets/8158404/10016268/4ff35d20-612e-11e5-86e2-a8969681e99c.png)\r\n\r\nReason of problem is that in-coming and out-coming ports are generated actually after node is created. E.g. (this code is from Color Range)\r\n\r\n``` c#\r\nprotected virtual void InitializePorts()\r\n        {\r\n            InPortData.Add(new PortData(\"colors\", Resources.ColorRangePortDataColorsToolTip));\r\n            InPortData.Add(new PortData(\"indices\", Resources.ColorRangePortDataIndicesToolTip));\r\n            InPortData.Add(new PortData(\"value\", Resources.ColorRangePortDataValueToolTip));\r\n            OutPortData.Add(new PortData(\"color\", Resources.ColorRangePortDataResultToolTip));\r\n\r\n            RegisterAllPorts();\r\n        }\r\n```\r\n\r\nThese nodes get their names and descriptions from `NodeNameAttribute` and `NodeDescriptionAttribute`. And I couldn't find better solution, then add 2 more attributes - `InputParametersAttribute`, `OutputParametersAttribute`.\r\n\r\nResults:\r\n![image](https://cloud.githubusercontent.com/assets/8158404/10016350/00776182-612f-11e5-89c5-4b6191d51a8f.png)\r\n![image](https://cloud.githubusercontent.com/assets/8158404/10016358/10edb4a8-612f-11e5-8fd8-17a59a51ec73.png)\r\n\r\n### Declarations\r\n\r\n- [x] The code base is in a better state after this PR\r\n- [x] Is documented according to the [standards](https://github.com/DynamoDS/Dynamo/wiki/Coding-Standards)\r\n- [x] The level of testing this PR includes is appropriate\r\n- [ ] User facing strings, if any, are extracted into `*.resx` files\r\n\r\n### Reviewers\r\n\r\n@mjkkirschner \r\n@Benglin \r\n\r\n### FYIs\r\n\r\n@Racel \r\n@jnealb ","created_at":"2015-09-22T10:38:16Z","updated_at":"2015-09-30T11:01:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a12aed2abb06b1e3561e4051d8aea699038aae9f","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/5340/commits","review_comments_url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/5340/comments","review_comment_url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/comments{/number}","comments_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/5340/comments","statuses_url":"https://api.github.com/repos/DynamoDS/Dynamo/statuses/617063ee61f65619b65b8933cd462b9f875b365e","head":{"label":"aosyatnik:TooltipFix","ref":"TooltipFix","sha":"617063ee61f65619b65b8933cd462b9f875b365e","user":{"login":"aosyatnik","id":8158404,"avatar_url":"https://avatars.githubusercontent.com/u/8158404?v=3","gravatar_id":"","url":"https://api.github.com/users/aosyatnik","html_url":"https://github.com/aosyatnik","followers_url":"https://api.github.com/users/aosyatnik/followers","following_url":"https://api.github.com/users/aosyatnik/following{/other_user}","gists_url":"https://api.github.com/users/aosyatnik/gists{/gist_id}","starred_url":"https://api.github.com/users/aosyatnik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aosyatnik/subscriptions","organizations_url":"https://api.github.com/users/aosyatnik/orgs","repos_url":"https://api.github.com/users/aosyatnik/repos","events_url":"https://api.github.com/users/aosyatnik/events{/privacy}","received_events_url":"https://api.github.com/users/aosyatnik/received_events","type":"User","site_admin":false},"repo":{"id":21854907,"name":"Dynamo","full_name":"aosyatnik/Dynamo","owner":{"login":"aosyatnik","id":8158404,"avatar_url":"https://avatars.githubusercontent.com/u/8158404?v=3","gravatar_id":"","url":"https://api.github.com/users/aosyatnik","html_url":"https://github.com/aosyatnik","followers_url":"https://api.github.com/users/aosyatnik/followers","following_url":"https://api.github.com/users/aosyatnik/following{/other_user}","gists_url":"https://api.github.com/users/aosyatnik/gists{/gist_id}","starred_url":"https://api.github.com/users/aosyatnik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aosyatnik/subscriptions","organizations_url":"https://api.github.com/users/aosyatnik/orgs","repos_url":"https://api.github.com/users/aosyatnik/repos","events_url":"https://api.github.com/users/aosyatnik/events{/privacy}","received_events_url":"https://api.github.com/users/aosyatnik/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/aosyatnik/Dynamo","description":"Visual Programming For Revit","fork":true,"url":"https://api.github.com/repos/aosyatnik/Dynamo","forks_url":"https://api.github.com/repos/aosyatnik/Dynamo/forks","keys_url":"https://api.github.com/repos/aosyatnik/Dynamo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aosyatnik/Dynamo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aosyatnik/Dynamo/teams","hooks_url":"https://api.github.com/repos/aosyatnik/Dynamo/hooks","issue_events_url":"https://api.github.com/repos/aosyatnik/Dynamo/issues/events{/number}","events_url":"https://api.github.com/repos/aosyatnik/Dynamo/events","assignees_url":"https://api.github.com/repos/aosyatnik/Dynamo/assignees{/user}","branches_url":"https://api.github.com/repos/aosyatnik/Dynamo/branches{/branch}","tags_url":"https://api.github.com/repos/aosyatnik/Dynamo/tags","blobs_url":"https://api.github.com/repos/aosyatnik/Dynamo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aosyatnik/Dynamo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aosyatnik/Dynamo/git/refs{/sha}","trees_url":"https://api.github.com/repos/aosyatnik/Dynamo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aosyatnik/Dynamo/statuses/{sha}","languages_url":"https://api.github.com/repos/aosyatnik/Dynamo/languages","stargazers_url":"https://api.github.com/repos/aosyatnik/Dynamo/stargazers","contributors_url":"https://api.github.com/repos/aosyatnik/Dynamo/contributors","subscribers_url":"https://api.github.com/repos/aosyatnik/Dynamo/subscribers","subscription_url":"https://api.github.com/repos/aosyatnik/Dynamo/subscription","commits_url":"https://api.github.com/repos/aosyatnik/Dynamo/commits{/sha}","git_commits_url":"https://api.github.com/repos/aosyatnik/Dynamo/git/commits{/sha}","comments_url":"https://api.github.com/repos/aosyatnik/Dynamo/comments{/number}","issue_comment_url":"https://api.github.com/repos/aosyatnik/Dynamo/issues/comments{/number}","contents_url":"https://api.github.com/repos/aosyatnik/Dynamo/contents/{+path}","compare_url":"https://api.github.com/repos/aosyatnik/Dynamo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aosyatnik/Dynamo/merges","archive_url":"https://api.github.com/repos/aosyatnik/Dynamo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aosyatnik/Dynamo/downloads","issues_url":"https://api.github.com/repos/aosyatnik/Dynamo/issues{/number}","pulls_url":"https://api.github.com/repos/aosyatnik/Dynamo/pulls{/number}","milestones_url":"https://api.github.com/repos/aosyatnik/Dynamo/milestones{/number}","notifications_url":"https://api.github.com/repos/aosyatnik/Dynamo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aosyatnik/Dynamo/labels{/name}","releases_url":"https://api.github.com/repos/aosyatnik/Dynamo/releases{/id}","created_at":"2014-07-15T10:00:34Z","updated_at":"2015-05-06T07:46:29Z","pushed_at":"2015-09-30T10:59:31Z","git_url":"git://github.com/aosyatnik/Dynamo.git","ssh_url":"git@github.com:aosyatnik/Dynamo.git","clone_url":"https://github.com/aosyatnik/Dynamo.git","svn_url":"https://github.com/aosyatnik/Dynamo","homepage":"http://dynamobim.org","size":782554,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"DynamoDS:master","ref":"master","sha":"103db355f4591e40ddf656f3f965be819e00c484","user":{"login":"DynamoDS","id":6528209,"avatar_url":"https://avatars.githubusercontent.com/u/6528209?v=3","gravatar_id":"","url":"https://api.github.com/users/DynamoDS","html_url":"https://github.com/DynamoDS","followers_url":"https://api.github.com/users/DynamoDS/followers","following_url":"https://api.github.com/users/DynamoDS/following{/other_user}","gists_url":"https://api.github.com/users/DynamoDS/gists{/gist_id}","starred_url":"https://api.github.com/users/DynamoDS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DynamoDS/subscriptions","organizations_url":"https://api.github.com/users/DynamoDS/orgs","repos_url":"https://api.github.com/users/DynamoDS/repos","events_url":"https://api.github.com/users/DynamoDS/events{/privacy}","received_events_url":"https://api.github.com/users/DynamoDS/received_events","type":"Organization","site_admin":false},"repo":{"id":3395179,"name":"Dynamo","full_name":"DynamoDS/Dynamo","owner":{"login":"DynamoDS","id":6528209,"avatar_url":"https://avatars.githubusercontent.com/u/6528209?v=3","gravatar_id":"","url":"https://api.github.com/users/DynamoDS","html_url":"https://github.com/DynamoDS","followers_url":"https://api.github.com/users/DynamoDS/followers","following_url":"https://api.github.com/users/DynamoDS/following{/other_user}","gists_url":"https://api.github.com/users/DynamoDS/gists{/gist_id}","starred_url":"https://api.github.com/users/DynamoDS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DynamoDS/subscriptions","organizations_url":"https://api.github.com/users/DynamoDS/orgs","repos_url":"https://api.github.com/users/DynamoDS/repos","events_url":"https://api.github.com/users/DynamoDS/events{/privacy}","received_events_url":"https://api.github.com/users/DynamoDS/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/DynamoDS/Dynamo","description":"Visual Programming","fork":false,"url":"https://api.github.com/repos/DynamoDS/Dynamo","forks_url":"https://api.github.com/repos/DynamoDS/Dynamo/forks","keys_url":"https://api.github.com/repos/DynamoDS/Dynamo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DynamoDS/Dynamo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DynamoDS/Dynamo/teams","hooks_url":"https://api.github.com/repos/DynamoDS/Dynamo/hooks","issue_events_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/events{/number}","events_url":"https://api.github.com/repos/DynamoDS/Dynamo/events","assignees_url":"https://api.github.com/repos/DynamoDS/Dynamo/assignees{/user}","branches_url":"https://api.github.com/repos/DynamoDS/Dynamo/branches{/branch}","tags_url":"https://api.github.com/repos/DynamoDS/Dynamo/tags","blobs_url":"https://api.github.com/repos/DynamoDS/Dynamo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DynamoDS/Dynamo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DynamoDS/Dynamo/git/refs{/sha}","trees_url":"https://api.github.com/repos/DynamoDS/Dynamo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DynamoDS/Dynamo/statuses/{sha}","languages_url":"https://api.github.com/repos/DynamoDS/Dynamo/languages","stargazers_url":"https://api.github.com/repos/DynamoDS/Dynamo/stargazers","contributors_url":"https://api.github.com/repos/DynamoDS/Dynamo/contributors","subscribers_url":"https://api.github.com/repos/DynamoDS/Dynamo/subscribers","subscription_url":"https://api.github.com/repos/DynamoDS/Dynamo/subscription","commits_url":"https://api.github.com/repos/DynamoDS/Dynamo/commits{/sha}","git_commits_url":"https://api.github.com/repos/DynamoDS/Dynamo/git/commits{/sha}","comments_url":"https://api.github.com/repos/DynamoDS/Dynamo/comments{/number}","issue_comment_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/comments{/number}","contents_url":"https://api.github.com/repos/DynamoDS/Dynamo/contents/{+path}","compare_url":"https://api.github.com/repos/DynamoDS/Dynamo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DynamoDS/Dynamo/merges","archive_url":"https://api.github.com/repos/DynamoDS/Dynamo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DynamoDS/Dynamo/downloads","issues_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues{/number}","pulls_url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls{/number}","milestones_url":"https://api.github.com/repos/DynamoDS/Dynamo/milestones{/number}","notifications_url":"https://api.github.com/repos/DynamoDS/Dynamo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DynamoDS/Dynamo/labels{/name}","releases_url":"https://api.github.com/repos/DynamoDS/Dynamo/releases{/id}","created_at":"2012-02-09T07:35:33Z","updated_at":"2015-09-29T10:22:03Z","pushed_at":"2015-09-30T10:59:32Z","git_url":"git://github.com/DynamoDS/Dynamo.git","ssh_url":"git@github.com:DynamoDS/Dynamo.git","clone_url":"https://github.com/DynamoDS/Dynamo.git","svn_url":"https://github.com/DynamoDS/Dynamo","homepage":"http://dynamobim.org","size":1045969,"stargazers_count":269,"watchers_count":269,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":202,"mirror_url":null,"open_issues_count":753,"forks":202,"open_issues":753,"watchers":269,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/5340"},"html":{"href":"https://github.com/DynamoDS/Dynamo/pull/5340"},"issue":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/issues/5340"},"comments":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/issues/5340/comments"},"review_comments":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/5340/comments"},"review_comment":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/5340/commits"},"statuses":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/statuses/617063ee61f65619b65b8933cd462b9f875b365e"}}}}