scijava / scijava-common

A plugin framework and application container with built-in extensibility mechanism :electric_plug:
BSD 2-Clause "Simplified" License
87 stars 52 forks source link

Manage the active UI in a better way #465

Closed ctrueden closed 1 year ago

ctrueden commented 1 year ago

Thanks to the HeadlessUI, we now always have at least one UI available to SciJava Common. This commit introduces the concept internally of an active UI: the one that will be used when UI-centric operations are performed via the UIService (rather than directly on a UserInterface).

The logic is as follows:

This PR also fixes a regression, introduced in #461, where calling uiService.show(thing) would also cause the default UI to become visible. Previously, it would only show that thing using the default UI, but the main window would not appear, and the UI as a whole would still be considered not visible. (To be fair: the "regression" here was explicitly stated as an intended change in that PR—but after discussion and reflection, we decided we don't want to change this behavior after all.)

Might also fix #460? Edit: Nope, doesn't.

elevans commented 1 year ago

This works great. I can display net.imagej.Dataset images without displaying the ImageJ UI in PyImageJ.