There's a new hang after the changes to fixLayout. See the stack trace created via "jstack PID > outfile":
"AWT-EventQueue-0" #27 prio=6 os_prio=0 tid=0x00007f084c7fc000 nid=0x1c0aae waiting on condition [0x00007f0827af8000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.autoplot.dom.ApplicationController.waitUntilIdle(ApplicationController.java:763)
at org.autoplot.dom.DomOps.fixLayout(DomOps.java:446)
at org.autoplot.FixLayoutPanel.updatePreview(FixLayoutPanel.java:86)
at org.autoplot.FixLayoutPanel.moveLegendsToOutsideNECheckBoxActionPerformed(FixLayoutPanel.java:225)
at org.autoplot.FixLayoutPanel.access$200(FixLayoutPanel.java:18)
at org.autoplot.FixLayoutPanel$3.actionPerformed(FixLayoutPanel.java:134)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:308)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:262)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
I'm not sure why actions besides "moveLegendsToOutsideNE" don't hang the same way, but I'm turning off this for everybody on the event thread.
I'm not marking this as fixed until I'm convinced there wasn't a good reason why there was locking and until I understand why only the "move legend" action caused the problem.