<div dir="ltr">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?<div><br><div><div><span style="font-family:'courier new',monospace">@Plugin(type = Service.class, priority = Priority.HIGH_PRIORITY)</span><br></div><div><font face="courier new, monospace">public class CellProfilerAppService extends DefaultAppService {</font></div><div><span style="font-family:'courier new',monospace;white-space:pre-wrap">  </span><span style="font-family:'courier new',monospace">static boolean canQuit = false;</span><br></div><div><span style="font-family:'courier new',monospace;white-space:pre-wrap">     </span><span style="font-family:'courier new',monospace">public static void allowQuit() {</span><br></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">            </span>canQuit = true;</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap"> </span>}</font></div><div><span style="font-family:'courier new',monospace;white-space:pre-wrap">       </span><span style="font-family:'courier new',monospace">public static void preventQuit() {</span><br></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">          </span>canQuit = false;</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">        </span>}</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">       </span>@EventHandler</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">   </span>public void onEvent(final AppQuitEvent event) {</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">         </span>if (canQuit) {</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">                  </span>super.onEvent(event);</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">           </span>} else {</font></div><div><span style="font-family:'courier new',monospace;white-space:pre-wrap">                        </span><span style="font-family:'courier new',monospace">final UIService uiService = getContext().getService(</span><span style="font-family:'courier new',monospace">UIService.class);</span><br></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">                        </span>final LogService logService = getContext().getService(LogService.class);</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">                        </span>if (uiService.isVisible()) {</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">                            </span>UserInterface ui = uiService.getDefaultUI();</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">                            </span>logService.info("Quit action: hide the application frame");</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">                           </span>ui.getApplicationFrame().setVisible(false);</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">                     </span>} else {</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">                                </span>logService.info("Quit action: do nothing");</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">                   </span>}</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">                       </span>event.consume();</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">                </span>}</font></div><div><font face="courier new, monospace"><span style="white-space:pre-wrap">       </span>}</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">}</font></div></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 5, 2014 at 11:15 AM, Lee Kamentsky <span dir="ltr"><<a href="mailto:leek@broadinstitute.org" target="_blank">leek@broadinstitute.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi all,<div>I had a class (<a href="https://github.com/CellProfiler/CellProfiler/blob/master/java/src/main/java/org/cellprofiler/ijutils/CellProfilerAppEventService.java" target="_blank">https://github.com/CellProfiler/CellProfiler/blob/master/java/src/main/java/org/cellprofiler/ijutils/CellProfilerAppEventService.java</a>) 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.</div><div><br></div><div>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.</div><div><br></div><div>Thanks in advance,</div><div>--Lee</div></div>
</blockquote></div><br></div>