{"action":"created","issue":{"url":"https://api.github.com/repos/hpi-swa/vivide/issues/83","labels_url":"https://api.github.com/repos/hpi-swa/vivide/issues/83/labels{/name}","comments_url":"https://api.github.com/repos/hpi-swa/vivide/issues/83/comments","events_url":"https://api.github.com/repos/hpi-swa/vivide/issues/83/events","html_url":"https://github.com/hpi-swa/vivide/issues/83","id":90036894,"number":83,"title":"Model-independent notifier that is not polling but event-based","user":{"login":"fniephaus","id":2368856,"avatar_url":"https://avatars.githubusercontent.com/u/2368856?v=3","gravatar_id":"","url":"https://api.github.com/users/fniephaus","html_url":"https://github.com/fniephaus","followers_url":"https://api.github.com/users/fniephaus/followers","following_url":"https://api.github.com/users/fniephaus/following{/other_user}","gists_url":"https://api.github.com/users/fniephaus/gists{/gist_id}","starred_url":"https://api.github.com/users/fniephaus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fniephaus/subscriptions","organizations_url":"https://api.github.com/users/fniephaus/orgs","repos_url":"https://api.github.com/users/fniephaus/repos","events_url":"https://api.github.com/users/fniephaus/events{/privacy}","received_events_url":"https://api.github.com/users/fniephaus/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/hpi-swa/vivide/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-06-22T07:56:22Z","updated_at":"2015-06-22T13:11:44Z","closed_at":null,"body":"Let's say we have three scripts `A`, `B` and `C` (see below). `A` displays a list.\r\nIf `C` changes this very list, `A` needs to be updated. This could be archived using a `ViTimedNotifier`, but sometimes that seems overkill or it is even impractical. When `A` is updated, `B` and `C` are also going to be updated and if `C` for example displays editable text, it's just impossible to change this text, because `C` is constantly being updated.\r\n\r\nIt'd be great if it is possible to notify a certain script on demand, like this:\r\n\r\n```bash\r\n[ A ] <----\r\n  |       |\r\n[ B ]     |\r\n  |       | (C notifies A)\r\n[ C ] ----|\r\n```\r\n"},"comment":{"url":"https://api.github.com/repos/hpi-swa/vivide/issues/comments/114097826","html_url":"https://github.com/hpi-swa/vivide/issues/83#issuecomment-114097826","issue_url":"https://api.github.com/repos/hpi-swa/vivide/issues/83","id":114097826,"user":{"login":"marceltaeumel","id":5765308,"avatar_url":"https://avatars.githubusercontent.com/u/5765308?v=3","gravatar_id":"","url":"https://api.github.com/users/marceltaeumel","html_url":"https://github.com/marceltaeumel","followers_url":"https://api.github.com/users/marceltaeumel/followers","following_url":"https://api.github.com/users/marceltaeumel/following{/other_user}","gists_url":"https://api.github.com/users/marceltaeumel/gists{/gist_id}","starred_url":"https://api.github.com/users/marceltaeumel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marceltaeumel/subscriptions","organizations_url":"https://api.github.com/users/marceltaeumel/orgs","repos_url":"https://api.github.com/users/marceltaeumel/repos","events_url":"https://api.github.com/users/marceltaeumel/events{/privacy}","received_events_url":"https://api.github.com/users/marceltaeumel/received_events","type":"User","site_admin":false},"created_at":"2015-06-22T13:11:43Z","updated_at":"2015-06-22T13:11:43Z","body":"This is a nice idea. We could add a pool of such notifiers to the active profile. Then, one script could say:\r\n\r\n```Smalltalk\r\n[:in :out | ...]\r\n-> {\r\n   ...\r\n   #notifier -> [ViEventNotifier named: #someFancyName].\r\n}\r\n```\r\n\r\nAnd any other script might try to call that notifier in some widget-triggered updates such as a button callback:\r\n\r\n```Smalltalk\r\n[:object | {\r\n   #text -> 'Accept'.\r\n   #clicked -> [[ (ViEventNotifier named: #someFancyName) signal ]]. } ].\r\n```\r\n\r\nOr when changing the model in a text view:\r\n\r\n```Smalltalk\r\n[:object | {\r\n   #text -> [object asString]\r\n      <- [:newText | object doSomething: newText.\r\n            (ViEventNotifier named: #someFancyName) signal ]. } ].\r\n```"}}