changeset 936:fdff61a60cc1

PolicyEditor fix checkbox UI updating on open * netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java: (addNewCodebase) ensure that checkboxes update. (removeCodebase, updateCheckboxes) ensure UI updates are done on EDT.
author Andrew Azores <aazores@redhat.com>
date Fri, 14 Mar 2014 09:39:56 -0400
parents aba4c18c4c64
children 15bbdf43c1e7
files ChangeLog netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java
diffstat 2 files changed, 59 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Mar 14 13:06:03 2014 +0100
+++ b/ChangeLog	Fri Mar 14 09:39:56 2014 -0400
@@ -1,3 +1,9 @@
+2014-03-14  Andrew Azores  <aazores@redhat.com>
+
+	* netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java:
+	(addNewCodebase) ensure that checkboxes update. (removeCodebase,
+	updateCheckboxes) ensure UI updates are done on EDT.
+
 2014-03-14  Jiri Vanek  <jvanek@redhat.com>
 
 	Base implementation of Application-Library-Allowable-Codebase. Remember
--- a/netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java	Fri Mar 14 13:06:03 2014 +0100
+++ b/netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java	Fri Mar 14 09:39:56 2014 -0400
@@ -478,10 +478,21 @@
             model = codebase;
         }
         if (!existingCodebase) {
-            listModel.addElement(model);
+            SwingUtilities.invokeLater(new Runnable() {
+                @Override
+                public void run() {
+                    listModel.addElement(model);
+                }
+            });
             changesMade = true;
         }
-        list.setSelectedValue(model, true);
+        SwingUtilities.invokeLater(new Runnable() {
+            @Override
+            public void run() {
+                list.setSelectedValue(model, true);
+                updateCheckboxes(codebase);
+            }
+        });
     }
 
     /**
@@ -545,8 +556,14 @@
             previousIndex = 0;
         }
         codebasePermissionsMap.remove(codebase);
-        listModel.removeElement(codebase);
-        list.setSelectedIndex(previousIndex);
+        final int fIndex = previousIndex;
+        SwingUtilities.invokeLater(new Runnable() {
+            @Override
+            public void run() {
+                listModel.removeElement(codebase);
+                list.setSelectedIndex(fIndex);
+            }
+        });
         changesMade = true;
     }
 
@@ -592,33 +609,39 @@
      * @param codebase whose permissions to display
      */
     private void updateCheckboxes(final String codebase) {
-        for (final PolicyEditorPermissions perm : PolicyEditorPermissions.values()) {
-            final JCheckBox box = checkboxMap.get(perm);
-            for (final ActionListener l : box.getActionListeners()) {
-                box.removeActionListener(l);
+        SwingUtilities.invokeLater(new Runnable() {
+            @Override
+            public void run() {
+                for (final PolicyEditorPermissions perm : PolicyEditorPermissions.values()) {
+                    final JCheckBox box = checkboxMap.get(perm);
+                    for (final ActionListener l : box.getActionListeners()) {
+                        box.removeActionListener(l);
+                    }
+                    initializeMapForCodebase(codebase);
+                    final Map<PolicyEditorPermissions, Boolean> map = codebasePermissionsMap.get(codebase);
+                    final boolean state;
+                    if (map != null) {
+                        final Boolean s = map.get(perm);
+                        if (s != null) {
+                            state = s;
+                        } else {
+                            state = false;
+                        }
+                    } else {
+                        state = false;
+                    }
+                    box.setSelected(state);
+                    box.addActionListener(new ActionListener() {
+                        @Override
+                        public void actionPerformed(final ActionEvent e) {
+                            changesMade = true;
+                            map.put(perm, box.isSelected());
+                        }
+                    });
+                }
             }
-            initializeMapForCodebase(codebase);
-            final Map<PolicyEditorPermissions, Boolean> map = codebasePermissionsMap.get(codebase);
-            final boolean state;
-            if (map != null) {
-                final Boolean s = map.get(perm);
-                if (s != null) {
-                    state = s;
-                } else {
-                    state = false;
-                }
-            } else {
-                state = false;
-            }
-            box.setSelected(state);
-            box.addActionListener(new ActionListener() {
-                @Override
-                public void actionPerformed(final ActionEvent e) {
-                    changesMade = true;
-                    map.put(perm, box.isSelected());
-                }
-            });
-        }
+        });
+
     }
 
     /**