payload: {"action":"created","issue":{"url":"https://api.github.com/repos/shroffk/phoebus/issues/995","repository_url":"https://api.github.com/repos/shroffk/phoebus","labels_url":"https://api.github.com/repos/shroffk/phoebus/issues/995/labels{/name}","comments_url":"https://api.github.com/repos/shroffk/phoebus/issues/995/comments","events_url":"https://api.github.com/repos/shroffk/phoebus/issues/995/events","html_url":"https://github.com/shroffk/phoebus/pull/995","id":533352284,"node_id":"MDExOlB1bGxSZXF1ZXN0MzQ5NDQxNTE1","number":995,"title":"Show placeholder for widgets with errors","user":{"login":"krisztianloki","id":33157532,"node_id":"MDQ6VXNlcjMzMTU3NTMy","avatar_url":"https://avatars0.githubusercontent.com/u/33157532?v=4","gravatar_id":"","url":"https://api.github.com/users/krisztianloki","html_url":"https://github.com/krisztianloki","followers_url":"https://api.github.com/users/krisztianloki/followers","following_url":"https://api.github.com/users/krisztianloki/following{/other_user}","gists_url":"https://api.github.com/users/krisztianloki/gists{/gist_id}","starred_url":"https://api.github.com/users/krisztianloki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krisztianloki/subscriptions","organizations_url":"https://api.github.com/users/krisztianloki/orgs","repos_url":"https://api.github.com/users/krisztianloki/repos","events_url":"https://api.github.com/users/krisztianloki/events{/privacy}","received_events_url":"https://api.github.com/users/krisztianloki/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2019-12-05T13:29:20Z","updated_at":"2019-12-11T12:51:58Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/shroffk/phoebus/pulls/995","html_url":"https://github.com/shroffk/phoebus/pull/995","diff_url":"https://github.com/shroffk/phoebus/pull/995.diff","patch_url":"https://github.com/shroffk/phoebus/pull/995.patch"},"body":"This implements idea Nr. 2 of #968 .\r\nSaving a display with unknown widgets should not be a problem; `PlaceholderWidget` retains the `Element` of the original widget and writes that one instead of itself.\r\nThere is one interesting thing; for some reason an exception is triggered when opening an incorrect display in edit mode:\r\n```java\r\n2019-12-05 14:09:22 WARNING [org.csstudio.display.builder.editor] Cannot obtain widget for display\r\njava.lang.NullPointerException\r\n\tat java.base/java.util.Objects.requireNonNull(Objects.java:221)\r\n\tat org.csstudio.display.builder.model.WidgetFactory.getWidgetDescriptor(WidgetFactory.java:126)\r\n\tat org.csstudio.display.builder.editor.util.WidgetIcons.loadIcon(WidgetIcons.java:43)\r\n\tat java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)\r\n\tat org.csstudio.display.builder.editor.util.WidgetIcons.getIcon(WidgetIcons.java:36)\r\n\tat org.csstudio.display.builder.editor.properties.PropertyPanelSection.bindSimplePropertyField(PropertyPanelSection.java:203)\r\n\tat org.csstudio.display.builder.editor.properties.PropertyPanelSection.createPropertyUI(PropertyPanelSection.java:504)\r\n\tat org.csstudio.display.builder.editor.properties.PropertyPanelSection.fill(PropertyPanelSection.java:166)\r\n\tat org.csstudio.display.builder.editor.properties.PropertyPanel.updatePropertiesView(PropertyPanel.java:141)\r\n\tat org.csstudio.display.builder.editor.properties.PropertyPanel.setSelectedWidgets(PropertyPanel.java:90)\r\n\tat org.csstudio.display.builder.editor.WidgetSelectionHandler.setSelection(WidgetSelectionHandler.java:67)\r\n\tat org.csstudio.display.builder.editor.WidgetSelectionHandler.clear(WidgetSelectionHandler.java:54)\r\n\tat org.csstudio.display.builder.editor.DisplayEditor.lambda$setModel$6(DisplayEditor.java:571)\r\n\tat org.csstudio.display.builder.representation.javafx.JFXRepresentation.execute(JFXRepresentation.java:669)\r\n\tat org.csstudio.display.builder.editor.DisplayEditor.setModel(DisplayEditor.java:571)\r\n\tat org.csstudio.display.builder.editor.EditorGUI.lambda$setModel$10(EditorGUI.java:525)\r\n\tat com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)\r\n\tat java.base/java.security.AccessController.doPrivileged(Native Method)\r\n\tat com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)\r\n\tat com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)\r\n\tat com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)\r\n\tat com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)\r\n\tat java.base/java.lang.Thread.run(Thread.java:834)\r\n```"},"comment":{"url":"https://api.github.com/repos/shroffk/phoebus/issues/comments/564525966","html_url":"https://github.com/shroffk/phoebus/pull/995#issuecomment-564525966","issue_url":"https://api.github.com/repos/shroffk/phoebus/issues/995","id":564525966,"node_id":"MDEyOklzc3VlQ29tbWVudDU2NDUyNTk2Ng==","user":{"login":"krisztianloki","id":33157532,"node_id":"MDQ6VXNlcjMzMTU3NTMy","avatar_url":"https://avatars0.githubusercontent.com/u/33157532?v=4","gravatar_id":"","url":"https://api.github.com/users/krisztianloki","html_url":"https://github.com/krisztianloki","followers_url":"https://api.github.com/users/krisztianloki/followers","following_url":"https://api.github.com/users/krisztianloki/following{/other_user}","gists_url":"https://api.github.com/users/krisztianloki/gists{/gist_id}","starred_url":"https://api.github.com/users/krisztianloki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krisztianloki/subscriptions","organizations_url":"https://api.github.com/users/krisztianloki/orgs","repos_url":"https://api.github.com/users/krisztianloki/repos","events_url":"https://api.github.com/users/krisztianloki/events{/privacy}","received_events_url":"https://api.github.com/users/krisztianloki/received_events","type":"User","site_admin":false},"created_at":"2019-12-11T12:51:58Z","updated_at":"2019-12-11T12:51:58Z","author_association":"CONTRIBUTOR","body":"> > There is another one for the unknown placeholder widget that I did not pasted.\r\n> \r\n> Are you done with this, ready to merge, or is there another exception that you need to fix?\r\n\r\nI'm done with this, it is ready to be merged.\r\nSorry, my comment was a bit misleading; what I wanted to say is that the other exception is of the same type. So, there are two exceptions:\r\n- an expected one because `UnknownWidget` has no descriptor (on purpose)\r\n- an unexpected(?) one because `DisplayModel` has no descriptor. This was unexpected because I have never seen it so far..."}}
other: {"actor":{"display_login":"krisztianloki"}}