/hg/icedtea-web: Temporary Permissions options made multi-select...

aazores at icedtea.classpath.org aazores at icedtea.classpath.org
Tue Jun 3 13:52:39 UTC 2014


changeset d87ee4e6e81a in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=d87ee4e6e81a
author: Andrew Azores <aazores at redhat.com>
date: Tue Jun 03 09:52:23 2014 -0400

	Temporary Permissions options made multi-selectable

	2014-06-03  Lukasz Dracz  <ldracz at redhat.com>

	    Changed Temporary Permissions from menu items to check box menu items
	    * netx/net/sourceforge/jnlp/security/dialogs/TemporaryPermissionsButton.java
	    (TemporaryPermissionsListener.actionPerformed): Added behaviour to add
	    or remove permissions from a new collection of permissions based on
	    whether the item is checked or not
	    (TemporaryPermissionsButton.TemporaryPermissionsButton): Added action
	    listener and applied the new collection of permissions for when the
	    sandbox button is pressed


diffstat:

 ChangeLog                                                                  |  11 ++
 netx/net/sourceforge/jnlp/security/dialogs/TemporaryPermissionsButton.java |  47 +++++++--
 2 files changed, 44 insertions(+), 14 deletions(-)

diffs (138 lines):

diff -r ea0ccfeeed06 -r d87ee4e6e81a ChangeLog
--- a/ChangeLog	Mon Jun 02 13:56:57 2014 -0400
+++ b/ChangeLog	Tue Jun 03 09:52:23 2014 -0400
@@ -1,3 +1,14 @@
+2014-06-03  Lukasz Dracz  <ldracz at redhat.com>
+
+	Changed Temporary Permissions from menu items to check box menu items
+	* netx/net/sourceforge/jnlp/security/dialogs/TemporaryPermissionsButton.java
+	(TemporaryPermissionsListener.actionPerformed): Added behaviour to add
+	or remove permissions from a new collection of permissions based on
+	whether the item is checked or not
+	(TemporaryPermissionsButton.TemporaryPermissionsButton): Added action
+	listener and applied the new collection of permissions for when the
+	sandbox button is pressed
+
 2014-06-02  Andrew Azores  <aazores at redhat.com>
 
 	PolicyEditor file I/O made asynchronous with a progress indicator
diff -r ea0ccfeeed06 -r d87ee4e6e81a netx/net/sourceforge/jnlp/security/dialogs/TemporaryPermissionsButton.java
--- a/netx/net/sourceforge/jnlp/security/dialogs/TemporaryPermissionsButton.java	Mon Jun 02 13:56:57 2014 -0400
+++ b/netx/net/sourceforge/jnlp/security/dialogs/TemporaryPermissionsButton.java	Tue Jun 03 09:52:23 2014 -0400
@@ -48,8 +48,12 @@
 import java.net.URL;
 import java.security.Permission;
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Objects;
 
+import javax.swing.AbstractButton;
 import javax.swing.JButton;
+import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JMenuItem;
 import javax.swing.JPopupMenu;
 
@@ -67,14 +71,24 @@
     private PolicyEditorWindow policyEditorWindow = null;
     private final JNLPFile file;
     private final SecurityDelegate securityDelegate;
+    private final Collection<Permission> temporaryPermissions = new HashSet<>();
 
     public TemporaryPermissionsButton(final JNLPFile file, final SecurityDelegate securityDelegate, final JButton linkedButton) {
         super("\u2630");
+        Objects.requireNonNull(file);
+        Objects.requireNonNull(securityDelegate);
+        Objects.requireNonNull(linkedButton);
         this.menu = createPolicyPermissionsMenu();
         this.linkedButton = linkedButton;
         this.file = file;
         this.securityDelegate = securityDelegate;
 
+        linkedButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                securityDelegate.addPermissions(temporaryPermissions);
+            }
+        });
         addMouseListener(new PolicyEditorPopupListener(this));
     }
 
@@ -88,47 +102,47 @@
         policyMenu.addSeparator();
 
 
-        final JMenuItem noFileAccess = new JMenuItem(R("STempPermNoFile"));
+        final JCheckBoxMenuItem noFileAccess = new JCheckBoxMenuItem(R("STempPermNoFile"));
         noFileAccess.addActionListener(new TemporaryPermissionsListener(TemporaryPermissions.noFileAccess()));
         policyMenu.add(noFileAccess);
 
-        final JMenuItem noNetworkAccess = new JMenuItem(R("STempPermNoNetwork"));
+        final JCheckBoxMenuItem noNetworkAccess = new JCheckBoxMenuItem(R("STempPermNoNetwork"));
         noNetworkAccess.addActionListener(new TemporaryPermissionsListener(TemporaryPermissions.noNetworkAccess()));
         policyMenu.add(noNetworkAccess);
 
-        final JMenuItem noFileOrNetwork = new JMenuItem(R("STempNoFileOrNetwork"));
+        final JCheckBoxMenuItem noFileOrNetwork = new JCheckBoxMenuItem(R("STempNoFileOrNetwork"));
         noFileOrNetwork.addActionListener(new TemporaryPermissionsListener(TemporaryPermissions.noFileOrNetworkAccess()));
         policyMenu.add(noFileOrNetwork);
 
         policyMenu.addSeparator();
 
-        final JMenuItem allFileAccessOnly = new JMenuItem(R("STempAllFileAndPropertyAccess"));
+        final JCheckBoxMenuItem allFileAccessOnly = new JCheckBoxMenuItem(R("STempAllFileAndPropertyAccess"));
         allFileAccessOnly.addActionListener(new TemporaryPermissionsListener(TemporaryPermissions.allFileAccessAndProperties()));
         policyMenu.add(allFileAccessOnly);
 
-        final JMenuItem readLocalFilesAndProperties = new JMenuItem(R("STempReadLocalFilesAndProperties"));
+        final JCheckBoxMenuItem readLocalFilesAndProperties = new JCheckBoxMenuItem(R("STempReadLocalFilesAndProperties"));
         readLocalFilesAndProperties.addActionListener(new TemporaryPermissionsListener(TemporaryPermissions.readLocalFilesAndProperties()));
         policyMenu.add(readLocalFilesAndProperties);
 
-        final JMenuItem reflectionOnly = new JMenuItem(R("STempReflectionOnly"));
+        final JCheckBoxMenuItem reflectionOnly = new JCheckBoxMenuItem(R("STempReflectionOnly"));
         reflectionOnly.addActionListener(new TemporaryPermissionsListener(TemporaryPermissions.reflectionOnly()));
         policyMenu.add(reflectionOnly);
 
         policyMenu.addSeparator();
 
-        final JMenuItem allMedia = new JMenuItem(R("STempAllMedia"));
+        final JCheckBoxMenuItem allMedia = new JCheckBoxMenuItem(R("STempAllMedia"));
         allMedia.addActionListener(new TemporaryPermissionsListener(TemporaryPermissions.allMedia()));
         policyMenu.add(allMedia);
 
-        final JMenuItem soundOnly = new JMenuItem(R("STempSoundOnly"));
+        final JCheckBoxMenuItem soundOnly = new JCheckBoxMenuItem(R("STempSoundOnly"));
         soundOnly.addActionListener(new TemporaryPermissionsListener(TemporaryPermissions.audioOnly()));
         policyMenu.add(soundOnly);
 
-        final JMenuItem clipboardOnly = new JMenuItem(R("STempClipboardOnly"));
+        final JCheckBoxMenuItem clipboardOnly = new JCheckBoxMenuItem(R("STempClipboardOnly"));
         clipboardOnly.addActionListener(new TemporaryPermissionsListener(TemporaryPermissions.clipboardOnly()));
         policyMenu.add(clipboardOnly);
 
-        final JMenuItem printOnly = new JMenuItem(R("STempPrintOnly"));
+        final JCheckBoxMenuItem printOnly = new JCheckBoxMenuItem(R("STempPrintOnly"));
         printOnly.addActionListener(new TemporaryPermissionsListener(TemporaryPermissions.printOnly()));
         policyMenu.add(printOnly);
 
@@ -144,11 +158,16 @@
 
         @Override
         public void actionPerformed(final ActionEvent e) {
-            securityDelegate.addPermissions(permissions);
-            menu.setVisible(false);
-            if (linkedButton != null) {
-                linkedButton.doClick();
+            if (!linkedButton.isEnabled()) {
+                return;
             }
+            AbstractButton checkBox = (AbstractButton) e.getSource();
+            if (checkBox.isSelected()) {
+                temporaryPermissions.addAll(permissions);
+            } else {
+                temporaryPermissions.removeAll(permissions);
+            }
+            menu.setVisible(true);
         }
     }
 


More information about the distro-pkg-dev mailing list