Title: Simplify the Object/Display/DisplayViewer type hierarchies · Issue #157 · scijava/scijava-common · GitHub
Open Graph Title: Simplify the Object/Display/DisplayViewer type hierarchies · Issue #157 · scijava/scijava-common
X Title: Simplify the Object/Display/DisplayViewer type hierarchies · Issue #157 · scijava/scijava-common
Description: In conjunction with imagej/imagej-common#12, we want to rework how SciJava Displays are structured. The status quo: You have an Object, which gets wrapped in a (UI-agnostic) Display. Each Display is a list of such Objects, rather than on...
Open Graph Description: In conjunction with imagej/imagej-common#12, we want to rework how SciJava Displays are structured. The status quo: You have an Object, which gets wrapped in a (UI-agnostic) Display. Each Display i...
X Description: In conjunction with imagej/imagej-common#12, we want to rework how SciJava Displays are structured. The status quo: You have an Object, which gets wrapped in a (UI-agnostic) Display. Each Display i...
Opengraph URL: https://github.com/scijava/scijava-common/issues/157
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Simplify the Object/Display/DisplayViewer type hierarchies","articleBody":"In conjunction with imagej/imagej-common#12, we want to rework how SciJava `Display`s are structured.\n\nThe status quo:\n- You have an `Object`, which gets wrapped in a (UI-agnostic) `Display`. Each `Display` is a _list_ of such `Object`s, rather than only a single `Object`. To visualize that `Display`, you then need a UI-specific `DisplayViewer`, which actually shows the `Display`'s contents to the user somehow.\n- In ImageJ, the type hierarchies are more complex: you have a `Data`, which is wrapped in a `DataView` (e.g., `Dataset` wrapped in `DatasetView`, or `Overlay` wrapped in `OverlayView`). Then an `ImageDisplay`, which is a type of `Display` for `DataView`s.\n\nWe can streamline this. Let's have instead:\n- `View`, which wraps an `Object`, and contains visualization settings. Subtypes of view (e.g., `ImageView`) implemented as needed to encapsulate the appropriate viz settings.\n - A `ViewService` handles wrapping of `Object`s to the most appropriate `View`.\n - In the case of images, there would be an `ImageView` which has a position (while its wrapped `Dataset` does not).\n- `Display`, which becomes a _UI-specific_ thing used by the `UIService`.\n - In other words: `DisplayViewer` gets renamed to `Display`.\n - The old `Display` no longer exists—we only support a single `View` per `Display`.\n - We have a `DefaultView` that is used for `Object`s with no particular need for visualization settings.\n- To cover the need for multiple N-dimensional image objects (i.e., `Dataset`s and `Overlay`s) bagged together, we provide `CompositeView`, which composes a list of `View`s in a single composite space.\n - See also `CombinedInterval` _et. al_ in `imagej-common`, which will facilitate this.\n - This `CompositeView` would be the closest thing to the current `Display`, but would support recursive nesting of `View`s, so that a proper object hierarchy can exist (see also imagej/imagej-common#12).\n\nThese changes would reduce the amount of names floating around—we would no longer need \"viewers\" but would only have `View`s and `Display`s. It would also help simplify the implementation of new UIs, at least from the perspective of understanding the execution flow.\n","author":{"url":"https://github.com/ctrueden","@type":"Person","name":"ctrueden"},"datePublished":"2015-04-08T17:19:42.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/157/scijava-common/issues/157"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:d14f6264-6470-4dc2-8899-716eacc46783 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C91C:320F8E:27D8C79:35BB757:696AE0F2 |
| html-safe-nonce | b33b01fc7f46ee9d113df8ffbd80b4f97301fb2f92f3bc85e162dba2798c56f5 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDOTFDOjMyMEY4RToyN0Q4Qzc5OjM1QkI3NTc6Njk2QUUwRjIiLCJ2aXNpdG9yX2lkIjoiNzA2MTY2MzU1NzcyMzI4MzY5OCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 465f62c3d44549248a82d88a6da011ae660e085ec49bf28a12ed8e8634ae88fa |
| hovercard-subject-tag | issue:67177318 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/scijava/scijava-common/157/issue_layout |
| twitter:image | https://opengraph.githubassets.com/cd5c721cced922826d584f0cf158a1a0ab9e49c2513e2fb454ec8ec9f02a5838/scijava/scijava-common/issues/157 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/cd5c721cced922826d584f0cf158a1a0ab9e49c2513e2fb454ec8ec9f02a5838/scijava/scijava-common/issues/157 |
| og:image:alt | In conjunction with imagej/imagej-common#12, we want to rework how SciJava Displays are structured. The status quo: You have an Object, which gets wrapped in a (UI-agnostic) Display. Each Display i... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | ctrueden |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5f99f7c1d70f01da5b93e5ca90303359738944d8ab470e396496262c66e60b8d |
| turbo-cache-control | no-preview |
| go-import | github.com/scijava/scijava-common git https://github.com/scijava/scijava-common.git |
| octolytics-dimension-user_id | 1262770 |
| octolytics-dimension-user_login | scijava |
| octolytics-dimension-repository_id | 3594497 |
| octolytics-dimension-repository_nwo | scijava/scijava-common |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 3594497 |
| octolytics-dimension-repository_network_root_nwo | scijava/scijava-common |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 3d84d50b3c75fa36755c3cf392edbc09e626f979 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width