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:
If an active UI already exists and is currently visible, use it again.
Otherwise, make the first visible UI the active one, and use it.
If none, make the default UI the active one, and use it.
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.)
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.