Hi Johannes,<div><br></div><div>Did you file a ticket for this bug? If not I can file one and reference this thread.<br><br><div class="gmail_quote">On Sat, Oct 20, 2012 at 5:36 AM, Johannes Schindelin <span dir="ltr"><<a href="mailto:Johannes.Schindelin@gmx.de" target="_blank">Johannes.Schindelin@gmx.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
while playing around with ImgLib2, I realized that the imagej-tutorials do<br>
not work anymore. If you try to load and display a dataset, it gets loaded<br>
but not displayed.<br>
<br>
Now, I do not want to be a lame developer who just fires bug reports and<br>
forgets about them, so I investigated a little. The culprit seems to be<br>
the changes in the way UserInterfaces are instantiated. Earlier -- when<br>
the tutorial was written -- there was only one UserInterface and if you<br>
did not call createUI() on it (to show the main window) it still was able<br>
to show images with said UserInterface.<br>
<br>
In the meantime, we can show multiple user interfaces side by side, but<br>
that comes at a price: when looking for user interfaces to display images,<br>
the default one might not even be visible, resulting in -- nothing.<br>
<br>
I have a proposed fix on the 'tutorials' branch, where getVisibleUIs()<br>
falls back to the default UI if none was shown, but I have a hunch that we<br>
need a better solution where the default UI is the only visible UI in the<br>
beginning but as soon as createUI() has been called, the default UI is no<br>
longer being considered automatically visible.<br>
<br>
Hmm?<br>
<br>
Ciao,<br>
Dscho<br>
<br>
P.S.: there is a nasty issue with the {Bg,Fg}ColorButton when showing a<br>
stack without calling createUI() since it tries very, very, very hard to<br>
always update the button even if the main window was never shown. The<br>
stack trace looks like this:<br>
<br>
java.lang.IllegalArgumentException: There is no button associated with the specified tool<br>
        at imagej.ui.swing.SwingIconService$SwingIconDrawer.<init>(SwingIconService.java:86)<br>
        at imagej.ui.swing.SwingIconService.acquireDrawer(SwingIconService.java:68)<br>
        at imagej.core.tools.AbstractColorTool.acquireDrawer(AbstractColorTool.java:221)<br>
        at imagej.core.tools.AbstractColorTool.draw(AbstractColorTool.java:201)<br>
        at imagej.core.tools.AbstractColorTool.drawIcon(AbstractColorTool.java:170)<br>
        at imagej.core.tools.AbstractColorTool.onEvent(AbstractColorTool.java:195)<br>
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
        at java.lang.reflect.Method.invoke(Method.java:616)<br>
        at imagej.event.DefaultEventService$ProxySubscriber.onEvent(DefaultEventService.java:226)<br>
        at imagej.event.DefaultEventService$ProxySubscriber.onEvent(DefaultEventService.java:201)<br>
        at org.bushe.swing.event.ThreadSafeEventService.publish(ThreadSafeEventService.java:971)<br>
        at imagej.event.DefaultEventBus.access$201(DefaultEventBus.java:61)<br>
        at imagej.event.DefaultEventBus$2.run(DefaultEventBus.java:226)<br>
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)<br>
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:670)<br>
        at java.awt.EventQueue.access$400(EventQueue.java:96)<br>
        at java.awt.EventQueue$2.run(EventQueue.java:631)<br>
        at java.awt.EventQueue$2.run(EventQueue.java:629)<br>
        at java.security.AccessController.doPrivileged(Native Method)<br>
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)<br>
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:640)<br>
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)<br>
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)<br>
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)<br>
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)<br>
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)<br>
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)<br>
<br>
I wonder whether it makes sense to instantiate the ToolsService at all if<br>
the main window was not even shown?<br>
<br>
_______________________________________________<br>
ImageJ-devel mailing list<br>
<a href="mailto:ImageJ-devel@imagej.net">ImageJ-devel@imagej.net</a><br>
<a href="http://imagej.net/mailman/listinfo/imagej-devel" target="_blank">http://imagej.net/mailman/listinfo/imagej-devel</a><br>
</blockquote></div><br></div>