Hello
Well, performing I/O or other blocking operations on EDT can only
freeze the app's GUI for the period of blocking. If developers/users
are OK with that, this is fine with me too.
I don't think an I/O blocking operation on EDT is acceptable. It can
freeze the whole application and give a bad experience to the users.
Please consider using the SwingWorker API
http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html
However, you should still call all Swing APIs (including creating your
components/windows) on the EDT. And I don't see this is being done in
your current code. As a minimum, the displayToolWindow() method should
be dispatched on the event thread. I haven't examined the code
closely, but if there are any other GUI updates from separate threads,
those should also be moved to the EDT. See the following tutorial for
details:
http://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html
Indeed, rewriting an AWT app as a Swing app is not only about changing
Labels to JLabels
Please make sure that all Swing code are used on the event dispatching
thread only.
Thanks
alexp
--
best regards,
Anthony
On 10/15/2013 06:13 PM, Weijun Wang wrote:
Policy Tool is a GUI editor for the plain text policy file. The only I/O
is loading the policy file from disk and it should be quite small, so I
think there won't be a problem here.
Thanks
Max
On 10/15/13 8:08 PM, Anthony Petrov wrote:
Hi Max,
I don't have expertise in this code so I haven't reviewed the fix
thoroughly. I'd like to point out one thing though: unlike AWT,
Swing is
a single-threaded GUI toolkit. While in AWT you can create
components/windows and call APIs on any thread, in Swing everything
GUI-related must be performed on the Event Dispatch Thread (EDT) only.
Any long, non-GUI-related operations (like I/O, computations, etc.)
should be dispatched on other threads (with a SwingWorker, for
example).
I don't see a single SwingUtilities.invokeLater/invokeAndWait() call in
PolicyTool.java, so I thought I'd ask whether you're aware of the
threading limitations imposed by Swing and how those are going to be
addressed?
--
best regards,
Anthony
On 10/12/2013 04:49 AM, Weijun Wang wrote:
Hi All
Please review the fix at
http://cr.openjdk.java.net/~weijun/7025699/webrev.00/
The fix includes porting PolicyTool from AWT to Swing, defining
mnemonics for menu items and buttons, and adding keyboard shortcuts
for
the File -> New/Open/Save items. Several tests are updated also.
Thanks
Max