Thanks, Curtis: On Wed, Nov 5, 2014 at 12:33 PM, Curtis Rueden <[email protected]> wrote:
> Hi Lee, > > So, there are two potential ways I would suggest to achieve your goal: > > 1) Set the OptionsMisc exitWhenQuitting to false. This is handy if you > don't need a lot of control over exactly what happens when quit() is > called, but you just want to stop the System.exit(0) from firing. > > I have code to do this, but in the upgrade to the latest, perhaps I'm not running it and setting exitWhenQuitting to false. > 2) Create a CellProfilerApp plugin and set it to a higher priority than > ImageJ. This solution makes the most sense to me because it gives you more > flexibility over the behavior of a couple other operations, too: about() > and prefs(). > It looks like I have to do this, because we don't want to lose the context. I think that will work out OK. > > > https://github.com/scijava/scijava-common/blob/scijava-common-2.35.0/src/main/java/org/scijava/app/App.java > > Regards, > Curtis > > On Wed, Nov 5, 2014 at 10:23 AM, Lee Kamentsky <[email protected]> > wrote: > >> Oops never mind, what I tried actually worked. AppQuitEvent.consume() did >> the trick. Go figure - you guys really threw the whole kitchen sink into >> it, didn't you? >> >> @Plugin(type = Service.class, priority = Priority.HIGH_PRIORITY) >> public class CellProfilerAppService extends DefaultAppService { >> static boolean canQuit = false; >> public static void allowQuit() { >> canQuit = true; >> } >> public static void preventQuit() { >> canQuit = false; >> } >> @EventHandler >> public void onEvent(final AppQuitEvent event) { >> if (canQuit) { >> super.onEvent(event); >> } else { >> final UIService uiService = getContext().getService(UIService.class); >> final LogService logService = getContext().getService(LogService.class); >> if (uiService.isVisible()) { >> UserInterface ui = uiService.getDefaultUI(); >> logService.info("Quit action: hide the application frame"); >> ui.getApplicationFrame().setVisible(false); >> } else { >> logService.info("Quit action: do nothing"); >> } >> event.consume(); >> } >> } >> >> } >> >> >> On Wed, Nov 5, 2014 at 11:15 AM, Lee Kamentsky <[email protected]> >> wrote: >> >>> Hi all, >>> I had a class ( >>> https://github.com/CellProfiler/CellProfiler/blob/master/java/src/main/java/org/cellprofiler/ijutils/CellProfilerAppEventService.java) >>> that implemented the deprecated AppEventService whose purpose was to >>> prevent ImageJ from quitting if a user closed its window by overriding >>> AppEventService.quit(). Quitting is pretty devastating for CellProfiler >>> since the process closes when the user's probable intent was to hide the >>> window. >>> >>> I'm hoping someone can give me a hint about how to do it now - I thought >>> I'd cheat by asking instead of figuring it out myself. >>> >>> Thanks in advance, >>> --Lee >>> >> >> >> _______________________________________________ >> ImageJ-devel mailing list >> [email protected] >> http://imagej.net/mailman/listinfo/imagej-devel >> >> >
_______________________________________________ ImageJ-devel mailing list [email protected] http://imagej.net/mailman/listinfo/imagej-devel
