Mercurial > hg > release > icedtea-web-1.5
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()); - } - }); - } + }); + } /**