jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/PolicyTool.java
author sundar
Mon, 31 Aug 2015 17:51:02 +0530
changeset 32434 769b3d81ae69
parent 31803 a359181776b2
child 35382 1f36500e84c7
permissions -rw-r--r--
8134731: Function.prototype.apply interacts incorrectly with arguments Reviewed-by: attila, hannesw
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
/*
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
     2
 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3483
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3483
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
 * accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    20
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3483
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3483
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3483
diff changeset
    23
 * questions.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
5609
cc144006eb2a 6951599: Rename package of security tools for modularization
mchung
parents: 3483
diff changeset
    26
package sun.security.tools.policytool;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
import java.io.*;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
import java.util.LinkedList;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
import java.util.ListIterator;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
import java.util.Vector;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
import java.util.Enumeration;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
import java.net.URL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
import java.net.MalformedURLException;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
import java.lang.reflect.*;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
import java.text.Collator;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
import java.text.MessageFormat;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
import sun.security.util.PropertyExpander;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
import sun.security.util.PropertyExpander.ExpandException;
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    40
import java.awt.Component;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    41
import java.awt.Container;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    42
import java.awt.Dimension;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    43
import java.awt.FileDialog;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    44
import java.awt.GridBagConstraints;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    45
import java.awt.GridBagLayout;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    46
import java.awt.Insets;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    47
import java.awt.Point;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    48
import java.awt.Toolkit;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    49
import java.awt.Window;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
import java.awt.event.*;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
import java.security.cert.Certificate;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
import java.security.cert.CertificateException;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
import java.security.*;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
import sun.security.provider.*;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
import sun.security.util.PolicyUtil;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
import javax.security.auth.x500.X500Principal;
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    57
import javax.swing.*;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    58
import javax.swing.border.EmptyBorder;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
 * PolicyTool may be used by users and administrators to configure the
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
 * overall java security policy (currently stored in the policy file).
7532
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
    63
 * Using PolicyTool administrators may add and remove policies from
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
 * the policy file. <p>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
 * @see java.security.Policy
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
 * @since   1.2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
public class PolicyTool {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
    // for i18n
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
    static final java.util.ResourceBundle rb =
14182
3041082abb40 7194449: String resources for Key Tool and Policy Tool should be in their respective packages
sflores
parents: 10336
diff changeset
    74
        java.util.ResourceBundle.getBundle(
3041082abb40 7194449: String resources for Key Tool and Policy Tool should be in their respective packages
sflores
parents: 10336
diff changeset
    75
            "sun.security.tools.policytool.Resources");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
    static final Collator collator = Collator.getInstance();
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
    static {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
        // this is for case insensitive string comparisons
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
        collator.setStrength(Collator.PRIMARY);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    80
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    81
        // Support for Apple menu bar
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    82
        if (System.getProperty("apple.laf.useScreenMenuBar") == null) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    83
            System.setProperty("apple.laf.useScreenMenuBar", "true");
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    84
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    85
        System.setProperty("apple.awt.application.name", getMessage("Policy.Tool"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    86
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    87
        // Apply the system L&F if not specified with a system property.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    88
        if (System.getProperty("swing.defaultlaf") == null) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    89
            try {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    90
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    91
            } catch (Exception e) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    92
                // ignore
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    93
            }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    94
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
    95
    }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
    // anyone can add warnings
90ce3da70b43 Initial load
duke
parents:
diff changeset
    98
    Vector<String> warnings;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    99
    boolean newWarning = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   100
90ce3da70b43 Initial load
duke
parents:
diff changeset
   101
    // set to true if policy modified.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   102
    // this way upon exit we know if to ask the user to save changes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   103
    boolean modified = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
    private static final boolean testing = false;
20754
3d7b2fafc34b 8025967: addition of -Werror broke the old build
valeriep
parents: 17692
diff changeset
   106
    private static final Class<?>[] TWOPARAMS = { String.class, String.class };
3d7b2fafc34b 8025967: addition of -Werror broke the old build
valeriep
parents: 17692
diff changeset
   107
    private static final Class<?>[] ONEPARAMS = { String.class };
3d7b2fafc34b 8025967: addition of -Werror broke the old build
valeriep
parents: 17692
diff changeset
   108
    private static final Class<?>[] NOPARAMS  = {};
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   109
    /*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   110
     * All of the policy entries are read in from the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
     * policy file and stored here.  Updates to the policy entries
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
     * using addEntry() and removeEntry() are made here.  To ultimately save
90ce3da70b43 Initial load
duke
parents:
diff changeset
   113
     * the policy entries back to the policy file, the SavePolicy button
90ce3da70b43 Initial load
duke
parents:
diff changeset
   114
     * must be clicked.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
     **/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   116
    private static String policyFileName = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   117
    private Vector<PolicyEntry> policyEntries = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   118
    private PolicyParser parser = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   119
90ce3da70b43 Initial load
duke
parents:
diff changeset
   120
    /* The public key alias information is stored here.  */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   121
    private KeyStore keyStore = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
    private String keyStoreName = " ";
90ce3da70b43 Initial load
duke
parents:
diff changeset
   123
    private String keyStoreType = " ";
90ce3da70b43 Initial load
duke
parents:
diff changeset
   124
    private String keyStoreProvider = " ";
90ce3da70b43 Initial load
duke
parents:
diff changeset
   125
    private String keyStorePwdURL = " ";
90ce3da70b43 Initial load
duke
parents:
diff changeset
   126
90ce3da70b43 Initial load
duke
parents:
diff changeset
   127
    /* standard PKCS11 KeyStore type */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   128
    private static final String P11KEYSTORE = "PKCS11";
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
90ce3da70b43 Initial load
duke
parents:
diff changeset
   130
    /* reserved word for PKCS11 KeyStores */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   131
    private static final String NONE = "NONE";
90ce3da70b43 Initial load
duke
parents:
diff changeset
   132
90ce3da70b43 Initial load
duke
parents:
diff changeset
   133
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   134
     * default constructor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
    private PolicyTool() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
        policyEntries = new Vector<PolicyEntry>();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
        parser = new PolicyParser();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   139
        warnings = new Vector<String>();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   140
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   141
90ce3da70b43 Initial load
duke
parents:
diff changeset
   142
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
     * get the PolicyFileName
90ce3da70b43 Initial load
duke
parents:
diff changeset
   144
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   145
    String getPolicyFileName() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   146
        return policyFileName;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   148
90ce3da70b43 Initial load
duke
parents:
diff changeset
   149
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
     * set the PolicyFileName
90ce3da70b43 Initial load
duke
parents:
diff changeset
   151
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   152
    void setPolicyFileName(String policyFileName) {
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
   153
        PolicyTool.policyFileName = policyFileName;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
   /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   157
    * clear keyStore info
90ce3da70b43 Initial load
duke
parents:
diff changeset
   158
    */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   159
    void clearKeyStoreInfo() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   160
        this.keyStoreName = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
        this.keyStoreType = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
        this.keyStoreProvider = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
        this.keyStorePwdURL = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   164
90ce3da70b43 Initial load
duke
parents:
diff changeset
   165
        this.keyStore = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   166
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   167
90ce3da70b43 Initial load
duke
parents:
diff changeset
   168
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   169
     * get the keyStore URL name
90ce3da70b43 Initial load
duke
parents:
diff changeset
   170
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   171
    String getKeyStoreName() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   172
        return keyStoreName;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   173
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   174
90ce3da70b43 Initial load
duke
parents:
diff changeset
   175
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   176
     * get the keyStore Type
90ce3da70b43 Initial load
duke
parents:
diff changeset
   177
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   178
    String getKeyStoreType() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   179
        return keyStoreType;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   180
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   181
90ce3da70b43 Initial load
duke
parents:
diff changeset
   182
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   183
     * get the keyStore Provider
90ce3da70b43 Initial load
duke
parents:
diff changeset
   184
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   185
    String getKeyStoreProvider() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   186
        return keyStoreProvider;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   187
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   188
90ce3da70b43 Initial load
duke
parents:
diff changeset
   189
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   190
     * get the keyStore password URL
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
    String getKeyStorePwdURL() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
        return keyStorePwdURL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   195
90ce3da70b43 Initial load
duke
parents:
diff changeset
   196
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   197
     * Open and read a policy file
90ce3da70b43 Initial load
duke
parents:
diff changeset
   198
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   199
    void openPolicy(String filename) throws FileNotFoundException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   200
                                        PolicyParser.ParsingException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   201
                                        KeyStoreException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   202
                                        CertificateException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   203
                                        InstantiationException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   204
                                        MalformedURLException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   205
                                        IOException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   206
                                        NoSuchAlgorithmException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   207
                                        IllegalAccessException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   208
                                        NoSuchMethodException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   209
                                        UnrecoverableKeyException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   210
                                        NoSuchProviderException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   211
                                        ClassNotFoundException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   212
                                        PropertyExpander.ExpandException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   213
                                        InvocationTargetException {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   214
90ce3da70b43 Initial load
duke
parents:
diff changeset
   215
        newWarning = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   216
90ce3da70b43 Initial load
duke
parents:
diff changeset
   217
        // start fresh - blow away the current state
90ce3da70b43 Initial load
duke
parents:
diff changeset
   218
        policyEntries = new Vector<PolicyEntry>();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   219
        parser = new PolicyParser();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   220
        warnings = new Vector<String>();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   221
        setPolicyFileName(null);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   222
        clearKeyStoreInfo();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   223
90ce3da70b43 Initial load
duke
parents:
diff changeset
   224
        // see if user is opening a NEW policy file
90ce3da70b43 Initial load
duke
parents:
diff changeset
   225
        if (filename == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   226
            modified = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   227
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   228
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   229
90ce3da70b43 Initial load
duke
parents:
diff changeset
   230
        // Read in the policy entries from the file and
90ce3da70b43 Initial load
duke
parents:
diff changeset
   231
        // populate the parser vector table.  The parser vector
90ce3da70b43 Initial load
duke
parents:
diff changeset
   232
        // table only holds the entries as strings, so it only
90ce3da70b43 Initial load
duke
parents:
diff changeset
   233
        // guarantees that the policies are syntactically
90ce3da70b43 Initial load
duke
parents:
diff changeset
   234
        // correct.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   235
        setPolicyFileName(filename);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   236
        parser.read(new FileReader(filename));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   237
90ce3da70b43 Initial load
duke
parents:
diff changeset
   238
        // open the keystore
90ce3da70b43 Initial load
duke
parents:
diff changeset
   239
        openKeyStore(parser.getKeyStoreUrl(), parser.getKeyStoreType(),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   240
                parser.getKeyStoreProvider(), parser.getStorePassURL());
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
90ce3da70b43 Initial load
duke
parents:
diff changeset
   242
        // Update the local vector with the same policy entries.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   243
        // This guarantees that the policy entries are not only
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
        // syntactically correct, but semantically valid as well.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
        Enumeration<PolicyParser.GrantEntry> enum_ = parser.grantElements();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
        while (enum_.hasMoreElements()) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   247
            PolicyParser.GrantEntry ge = enum_.nextElement();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   248
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
            // see if all the signers have public keys
90ce3da70b43 Initial load
duke
parents:
diff changeset
   250
            if (ge.signedBy != null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   251
90ce3da70b43 Initial load
duke
parents:
diff changeset
   252
                String signers[] = parseSigners(ge.signedBy);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   253
                for (int i = 0; i < signers.length; i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   254
                    PublicKey pubKey = getPublicKeyAlias(signers[i]);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
                    if (pubKey == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   256
                        newWarning = true;
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   257
                        MessageFormat form = new MessageFormat(getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
   258
                            ("Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   259
                        Object[] source = {signers[i]};
90ce3da70b43 Initial load
duke
parents:
diff changeset
   260
                        warnings.addElement(form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   261
                    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   262
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   263
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   264
90ce3da70b43 Initial load
duke
parents:
diff changeset
   265
            // check to see if the Principals are valid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   266
            ListIterator<PolicyParser.PrincipalEntry> prinList =
90ce3da70b43 Initial load
duke
parents:
diff changeset
   267
                                                ge.principals.listIterator(0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   268
            while (prinList.hasNext()) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   269
                PolicyParser.PrincipalEntry pe = prinList.next();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   270
                try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   271
                    verifyPrincipal(pe.getPrincipalClass(),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   272
                                pe.getPrincipalName());
90ce3da70b43 Initial load
duke
parents:
diff changeset
   273
                } catch (ClassNotFoundException fnfe) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   274
                    newWarning = true;
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   275
                    MessageFormat form = new MessageFormat(getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
   276
                                ("Warning.Class.not.found.class"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   277
                    Object[] source = {pe.getPrincipalClass()};
90ce3da70b43 Initial load
duke
parents:
diff changeset
   278
                    warnings.addElement(form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   279
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   280
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   281
90ce3da70b43 Initial load
duke
parents:
diff changeset
   282
            // check to see if the Permissions are valid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   283
            Enumeration<PolicyParser.PermissionEntry> perms =
90ce3da70b43 Initial load
duke
parents:
diff changeset
   284
                                                ge.permissionElements();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   285
            while (perms.hasMoreElements()) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   286
                PolicyParser.PermissionEntry pe = perms.nextElement();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   287
                try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   288
                    verifyPermission(pe.permission, pe.name, pe.action);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   289
                } catch (ClassNotFoundException fnfe) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   290
                    newWarning = true;
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   291
                    MessageFormat form = new MessageFormat(getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
   292
                                ("Warning.Class.not.found.class"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   293
                    Object[] source = {pe.permission};
90ce3da70b43 Initial load
duke
parents:
diff changeset
   294
                    warnings.addElement(form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   295
                } catch (InvocationTargetException ite) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   296
                    newWarning = true;
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   297
                    MessageFormat form = new MessageFormat(getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
   298
                        ("Warning.Invalid.argument.s.for.constructor.arg"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   299
                    Object[] source = {pe.permission};
90ce3da70b43 Initial load
duke
parents:
diff changeset
   300
                    warnings.addElement(form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   301
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   302
90ce3da70b43 Initial load
duke
parents:
diff changeset
   303
                // see if all the permission signers have public keys
90ce3da70b43 Initial load
duke
parents:
diff changeset
   304
                if (pe.signedBy != null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   305
90ce3da70b43 Initial load
duke
parents:
diff changeset
   306
                    String signers[] = parseSigners(pe.signedBy);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   307
90ce3da70b43 Initial load
duke
parents:
diff changeset
   308
                    for (int i = 0; i < signers.length; i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   309
                        PublicKey pubKey = getPublicKeyAlias(signers[i]);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   310
                        if (pubKey == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   311
                            newWarning = true;
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   312
                            MessageFormat form = new MessageFormat(getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
   313
                                ("Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   314
                            Object[] source = {signers[i]};
90ce3da70b43 Initial load
duke
parents:
diff changeset
   315
                            warnings.addElement(form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   316
                        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   317
                    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   318
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   319
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   320
            PolicyEntry pEntry = new PolicyEntry(this, ge);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   321
            policyEntries.addElement(pEntry);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   322
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   323
90ce3da70b43 Initial load
duke
parents:
diff changeset
   324
        // just read in the policy -- nothing has been modified yet
90ce3da70b43 Initial load
duke
parents:
diff changeset
   325
        modified = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   326
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   327
90ce3da70b43 Initial load
duke
parents:
diff changeset
   328
90ce3da70b43 Initial load
duke
parents:
diff changeset
   329
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   330
     * Save a policy to a file
90ce3da70b43 Initial load
duke
parents:
diff changeset
   331
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   332
    void savePolicy(String filename)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   333
    throws FileNotFoundException, IOException {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   334
        // save the policy entries to a file
90ce3da70b43 Initial load
duke
parents:
diff changeset
   335
        parser.setKeyStoreUrl(keyStoreName);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   336
        parser.setKeyStoreType(keyStoreType);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   337
        parser.setKeyStoreProvider(keyStoreProvider);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   338
        parser.setStorePassURL(keyStorePwdURL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   339
        parser.write(new FileWriter(filename));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   340
        modified = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   341
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   342
90ce3da70b43 Initial load
duke
parents:
diff changeset
   343
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   344
     * Open the KeyStore
90ce3da70b43 Initial load
duke
parents:
diff changeset
   345
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   346
    void openKeyStore(String name,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   347
                String type,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   348
                String provider,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   349
                String pwdURL) throws   KeyStoreException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   350
                                        NoSuchAlgorithmException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   351
                                        UnrecoverableKeyException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   352
                                        IOException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   353
                                        CertificateException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   354
                                        NoSuchProviderException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   355
                                        ExpandException {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   356
90ce3da70b43 Initial load
duke
parents:
diff changeset
   357
        if (name == null && type == null &&
90ce3da70b43 Initial load
duke
parents:
diff changeset
   358
            provider == null && pwdURL == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   359
90ce3da70b43 Initial load
duke
parents:
diff changeset
   360
            // policy did not specify a keystore during open
90ce3da70b43 Initial load
duke
parents:
diff changeset
   361
            // or use wants to reset keystore values
90ce3da70b43 Initial load
duke
parents:
diff changeset
   362
90ce3da70b43 Initial load
duke
parents:
diff changeset
   363
            this.keyStoreName = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   364
            this.keyStoreType = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   365
            this.keyStoreProvider = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   366
            this.keyStorePwdURL = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   367
90ce3da70b43 Initial load
duke
parents:
diff changeset
   368
            // caller will set (tool.modified = true) if appropriate
90ce3da70b43 Initial load
duke
parents:
diff changeset
   369
90ce3da70b43 Initial load
duke
parents:
diff changeset
   370
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   371
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   372
90ce3da70b43 Initial load
duke
parents:
diff changeset
   373
        URL policyURL = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   374
        if (policyFileName != null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   375
            File pfile = new File(policyFileName);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   376
            policyURL = new URL("file:" + pfile.getCanonicalPath());
90ce3da70b43 Initial load
duke
parents:
diff changeset
   377
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   378
90ce3da70b43 Initial load
duke
parents:
diff changeset
   379
        // although PolicyUtil.getKeyStore may properly handle
90ce3da70b43 Initial load
duke
parents:
diff changeset
   380
        // defaults and property expansion, we do it here so that
90ce3da70b43 Initial load
duke
parents:
diff changeset
   381
        // if the call is successful, we can set the proper values
90ce3da70b43 Initial load
duke
parents:
diff changeset
   382
        // (PolicyUtil.getKeyStore does not return expanded values)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   383
90ce3da70b43 Initial load
duke
parents:
diff changeset
   384
        if (name != null && name.length() > 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   385
            name = PropertyExpander.expand(name).replace
90ce3da70b43 Initial load
duke
parents:
diff changeset
   386
                                        (File.separatorChar, '/');
90ce3da70b43 Initial load
duke
parents:
diff changeset
   387
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   388
        if (type == null || type.length() == 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   389
            type = KeyStore.getDefaultType();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   390
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   391
        if (pwdURL != null && pwdURL.length() > 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   392
            pwdURL = PropertyExpander.expand(pwdURL).replace
90ce3da70b43 Initial load
duke
parents:
diff changeset
   393
                                        (File.separatorChar, '/');
90ce3da70b43 Initial load
duke
parents:
diff changeset
   394
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   395
90ce3da70b43 Initial load
duke
parents:
diff changeset
   396
        try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   397
            this.keyStore = PolicyUtil.getKeyStore(policyURL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   398
                                                name,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   399
                                                type,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   400
                                                provider,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   401
                                                pwdURL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   402
                                                null);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   403
        } catch (IOException ioe) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   404
90ce3da70b43 Initial load
duke
parents:
diff changeset
   405
            // copied from sun.security.pkcs11.SunPKCS11
90ce3da70b43 Initial load
duke
parents:
diff changeset
   406
            String MSG = "no password provided, and no callback handler " +
90ce3da70b43 Initial load
duke
parents:
diff changeset
   407
                        "available for retrieving password";
90ce3da70b43 Initial load
duke
parents:
diff changeset
   408
90ce3da70b43 Initial load
duke
parents:
diff changeset
   409
            Throwable cause = ioe.getCause();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   410
            if (cause != null &&
90ce3da70b43 Initial load
duke
parents:
diff changeset
   411
                cause instanceof javax.security.auth.login.LoginException &&
90ce3da70b43 Initial load
duke
parents:
diff changeset
   412
                MSG.equals(cause.getMessage())) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   413
90ce3da70b43 Initial load
duke
parents:
diff changeset
   414
                // throw a more friendly exception message
90ce3da70b43 Initial load
duke
parents:
diff changeset
   415
                throw new IOException(MSG);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   416
            } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   417
                throw ioe;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   418
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   419
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   420
90ce3da70b43 Initial load
duke
parents:
diff changeset
   421
        this.keyStoreName = name;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   422
        this.keyStoreType = type;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   423
        this.keyStoreProvider = provider;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   424
        this.keyStorePwdURL = pwdURL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   425
90ce3da70b43 Initial load
duke
parents:
diff changeset
   426
        // caller will set (tool.modified = true)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   427
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   428
90ce3da70b43 Initial load
duke
parents:
diff changeset
   429
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   430
     * Add a Grant entry to the overall policy at the specified index.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   431
     * A policy entry consists of a CodeSource.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   432
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   433
    boolean addEntry(PolicyEntry pe, int index) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   434
90ce3da70b43 Initial load
duke
parents:
diff changeset
   435
        if (index < 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   436
            // new entry -- just add it to the end
90ce3da70b43 Initial load
duke
parents:
diff changeset
   437
            policyEntries.addElement(pe);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   438
            parser.add(pe.getGrantEntry());
90ce3da70b43 Initial load
duke
parents:
diff changeset
   439
        } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   440
            // existing entry -- replace old one
90ce3da70b43 Initial load
duke
parents:
diff changeset
   441
            PolicyEntry origPe = policyEntries.elementAt(index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   442
            parser.replace(origPe.getGrantEntry(), pe.getGrantEntry());
90ce3da70b43 Initial load
duke
parents:
diff changeset
   443
            policyEntries.setElementAt(pe, index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   444
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   445
        return true;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   446
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   447
90ce3da70b43 Initial load
duke
parents:
diff changeset
   448
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   449
     * Add a Principal entry to an existing PolicyEntry at the specified index.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   450
     * A Principal entry consists of a class, and name.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   451
     *
90ce3da70b43 Initial load
duke
parents:
diff changeset
   452
     * If the principal already exists, it is not added again.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   453
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   454
    boolean addPrinEntry(PolicyEntry pe,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   455
                        PolicyParser.PrincipalEntry newPrin,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   456
                        int index) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   457
90ce3da70b43 Initial load
duke
parents:
diff changeset
   458
        // first add the principal to the Policy Parser entry
90ce3da70b43 Initial load
duke
parents:
diff changeset
   459
        PolicyParser.GrantEntry grantEntry = pe.getGrantEntry();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   460
        if (grantEntry.contains(newPrin) == true)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   461
            return false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   462
90ce3da70b43 Initial load
duke
parents:
diff changeset
   463
        LinkedList<PolicyParser.PrincipalEntry> prinList =
90ce3da70b43 Initial load
duke
parents:
diff changeset
   464
                                                grantEntry.principals;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   465
        if (index != -1)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   466
            prinList.set(index, newPrin);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   467
        else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   468
            prinList.add(newPrin);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   469
90ce3da70b43 Initial load
duke
parents:
diff changeset
   470
        modified = true;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   471
        return true;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   472
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   473
90ce3da70b43 Initial load
duke
parents:
diff changeset
   474
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   475
     * Add a Permission entry to an existing PolicyEntry at the specified index.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   476
     * A Permission entry consists of a permission, name, and actions.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   477
     *
90ce3da70b43 Initial load
duke
parents:
diff changeset
   478
     * If the permission already exists, it is not added again.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   479
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   480
    boolean addPermEntry(PolicyEntry pe,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   481
                        PolicyParser.PermissionEntry newPerm,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   482
                        int index) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   483
90ce3da70b43 Initial load
duke
parents:
diff changeset
   484
        // first add the permission to the Policy Parser Vector
90ce3da70b43 Initial load
duke
parents:
diff changeset
   485
        PolicyParser.GrantEntry grantEntry = pe.getGrantEntry();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   486
        if (grantEntry.contains(newPerm) == true)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   487
            return false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   488
90ce3da70b43 Initial load
duke
parents:
diff changeset
   489
        Vector<PolicyParser.PermissionEntry> permList =
90ce3da70b43 Initial load
duke
parents:
diff changeset
   490
                                                grantEntry.permissionEntries;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   491
        if (index != -1)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   492
            permList.setElementAt(newPerm, index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   493
        else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   494
            permList.addElement(newPerm);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   495
90ce3da70b43 Initial load
duke
parents:
diff changeset
   496
        modified = true;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   497
        return true;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   498
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   499
90ce3da70b43 Initial load
duke
parents:
diff changeset
   500
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   501
     * Remove a Permission entry from an existing PolicyEntry.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   502
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   503
    boolean removePermEntry(PolicyEntry pe,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   504
                        PolicyParser.PermissionEntry perm) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   505
90ce3da70b43 Initial load
duke
parents:
diff changeset
   506
        // remove the Permission from the GrantEntry
90ce3da70b43 Initial load
duke
parents:
diff changeset
   507
        PolicyParser.GrantEntry ppge = pe.getGrantEntry();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   508
        modified = ppge.remove(perm);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   509
        return modified;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   510
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   511
90ce3da70b43 Initial load
duke
parents:
diff changeset
   512
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   513
     * remove an entry from the overall policy
90ce3da70b43 Initial load
duke
parents:
diff changeset
   514
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   515
    boolean removeEntry(PolicyEntry pe) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   516
90ce3da70b43 Initial load
duke
parents:
diff changeset
   517
        parser.remove(pe.getGrantEntry());
90ce3da70b43 Initial load
duke
parents:
diff changeset
   518
        modified = true;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   519
        return (policyEntries.removeElement(pe));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   520
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   521
90ce3da70b43 Initial load
duke
parents:
diff changeset
   522
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   523
     * retrieve all Policy Entries
90ce3da70b43 Initial load
duke
parents:
diff changeset
   524
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   525
    PolicyEntry[] getEntry() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   526
90ce3da70b43 Initial load
duke
parents:
diff changeset
   527
        if (policyEntries.size() > 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   528
            PolicyEntry entries[] = new PolicyEntry[policyEntries.size()];
90ce3da70b43 Initial load
duke
parents:
diff changeset
   529
            for (int i = 0; i < policyEntries.size(); i++)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   530
                entries[i] = policyEntries.elementAt(i);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   531
            return entries;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   532
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   533
        return null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   534
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   535
90ce3da70b43 Initial load
duke
parents:
diff changeset
   536
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   537
     * Retrieve the public key mapped to a particular name.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   538
     * If the key has expired, a KeyException is thrown.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   539
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   540
    PublicKey getPublicKeyAlias(String name) throws KeyStoreException {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   541
        if (keyStore == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   542
            return null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   543
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   544
90ce3da70b43 Initial load
duke
parents:
diff changeset
   545
        Certificate cert = keyStore.getCertificate(name);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   546
        if (cert == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   547
            return null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   548
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   549
        PublicKey pubKey = cert.getPublicKey();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   550
        return pubKey;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   551
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   552
90ce3da70b43 Initial load
duke
parents:
diff changeset
   553
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   554
     * Retrieve all the alias names stored in the certificate database
90ce3da70b43 Initial load
duke
parents:
diff changeset
   555
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   556
    String[] getPublicKeyAlias() throws KeyStoreException {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   557
90ce3da70b43 Initial load
duke
parents:
diff changeset
   558
        int numAliases = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   559
        String aliases[] = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   560
90ce3da70b43 Initial load
duke
parents:
diff changeset
   561
        if (keyStore == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   562
            return null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   563
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   564
        Enumeration<String> enum_ = keyStore.aliases();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   565
90ce3da70b43 Initial load
duke
parents:
diff changeset
   566
        // first count the number of elements
90ce3da70b43 Initial load
duke
parents:
diff changeset
   567
        while (enum_.hasMoreElements()) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   568
            enum_.nextElement();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   569
            numAliases++;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   570
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   571
90ce3da70b43 Initial load
duke
parents:
diff changeset
   572
        if (numAliases > 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   573
            // now copy them into an array
90ce3da70b43 Initial load
duke
parents:
diff changeset
   574
            aliases = new String[numAliases];
90ce3da70b43 Initial load
duke
parents:
diff changeset
   575
            numAliases = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   576
            enum_ = keyStore.aliases();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   577
            while (enum_.hasMoreElements()) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   578
                aliases[numAliases] = new String(enum_.nextElement());
90ce3da70b43 Initial load
duke
parents:
diff changeset
   579
                numAliases++;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   580
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   581
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   582
        return aliases;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   583
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   584
90ce3da70b43 Initial load
duke
parents:
diff changeset
   585
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   586
     * This method parses a single string of signers separated by commas
90ce3da70b43 Initial load
duke
parents:
diff changeset
   587
     * ("jordan, duke, pippen") into an array of individual strings.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   588
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   589
    String[] parseSigners(String signedBy) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   590
90ce3da70b43 Initial load
duke
parents:
diff changeset
   591
        String signers[] = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   592
        int numSigners = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   593
        int signedByIndex = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   594
        int commaIndex = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   595
        int signerNum = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   596
90ce3da70b43 Initial load
duke
parents:
diff changeset
   597
        // first pass thru "signedBy" counts the number of signers
90ce3da70b43 Initial load
duke
parents:
diff changeset
   598
        while (commaIndex >= 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   599
            commaIndex = signedBy.indexOf(',', signedByIndex);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   600
            if (commaIndex >= 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   601
                numSigners++;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   602
                signedByIndex = commaIndex + 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   603
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   604
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   605
        signers = new String[numSigners];
90ce3da70b43 Initial load
duke
parents:
diff changeset
   606
90ce3da70b43 Initial load
duke
parents:
diff changeset
   607
        // second pass thru "signedBy" transfers signers to array
90ce3da70b43 Initial load
duke
parents:
diff changeset
   608
        commaIndex = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   609
        signedByIndex = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   610
        while (commaIndex >= 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   611
            if ((commaIndex = signedBy.indexOf(',', signedByIndex)) >= 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   612
                // transfer signer and ignore trailing part of the string
90ce3da70b43 Initial load
duke
parents:
diff changeset
   613
                signers[signerNum] =
90ce3da70b43 Initial load
duke
parents:
diff changeset
   614
                        signedBy.substring(signedByIndex, commaIndex).trim();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   615
                signerNum++;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   616
                signedByIndex = commaIndex + 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   617
            } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   618
                // we are at the end of the string -- transfer signer
90ce3da70b43 Initial load
duke
parents:
diff changeset
   619
                signers[signerNum] = signedBy.substring(signedByIndex).trim();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   620
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   621
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   622
        return signers;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   623
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   624
90ce3da70b43 Initial load
duke
parents:
diff changeset
   625
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   626
     * Check to see if the Principal contents are OK
90ce3da70b43 Initial load
duke
parents:
diff changeset
   627
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   628
    void verifyPrincipal(String type, String name)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   629
        throws ClassNotFoundException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   630
               InstantiationException
90ce3da70b43 Initial load
duke
parents:
diff changeset
   631
    {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   632
        if (type.equals(PolicyParser.PrincipalEntry.WILDCARD_CLASS) ||
15013
4a17ca431caf 7019834: Eliminate dependency from PolicyFile to com.sun.security.auth.PrincipalComparator
mullan
parents: 14182
diff changeset
   633
            type.equals(PolicyParser.PrincipalEntry.REPLACE_NAME)) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   634
            return;
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
   635
        }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   636
        Class<?> pc = Class.forName(type, true,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   637
                Thread.currentThread().getContextClassLoader());
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
   638
        if (!Principal.class.isAssignableFrom(pc)) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   639
            MessageFormat form = new MessageFormat(getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
   640
                        ("Illegal.Principal.Type.type"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   641
            Object[] source = {type};
90ce3da70b43 Initial load
duke
parents:
diff changeset
   642
            throw new InstantiationException(form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   643
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   644
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
   645
        if (X500Principal.class.getName().equals(pc.getName())) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   646
            // PolicyParser checks validity of X500Principal name
90ce3da70b43 Initial load
duke
parents:
diff changeset
   647
            // - PolicyTool needs to as well so that it doesn't store
90ce3da70b43 Initial load
duke
parents:
diff changeset
   648
            //   an invalid name that can't be read in later
90ce3da70b43 Initial load
duke
parents:
diff changeset
   649
            //
90ce3da70b43 Initial load
duke
parents:
diff changeset
   650
            // this can throw an IllegalArgumentException
90ce3da70b43 Initial load
duke
parents:
diff changeset
   651
            X500Principal newP = new X500Principal(name);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   652
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   653
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   654
90ce3da70b43 Initial load
duke
parents:
diff changeset
   655
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   656
     * Check to see if the Permission contents are OK
90ce3da70b43 Initial load
duke
parents:
diff changeset
   657
     */
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
   658
    @SuppressWarnings("fallthrough")
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   659
    void verifyPermission(String type,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   660
                                    String name,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   661
                                    String actions)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   662
        throws ClassNotFoundException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   663
               InstantiationException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   664
               IllegalAccessException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   665
               NoSuchMethodException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   666
               InvocationTargetException
90ce3da70b43 Initial load
duke
parents:
diff changeset
   667
    {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   668
90ce3da70b43 Initial load
duke
parents:
diff changeset
   669
        //XXX we might want to keep a hash of created factories...
90ce3da70b43 Initial load
duke
parents:
diff changeset
   670
        Class<?> pc = Class.forName(type, true,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   671
                Thread.currentThread().getContextClassLoader());
90ce3da70b43 Initial load
duke
parents:
diff changeset
   672
        Constructor<?> c = null;
7977
f47f211cd627 7008713: diamond conversion of kerberos5 and security tools
smarks
parents: 7532
diff changeset
   673
        Vector<String> objects = new Vector<>(2);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   674
        if (name != null) objects.add(name);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   675
        if (actions != null) objects.add(actions);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   676
        switch (objects.size()) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   677
        case 0:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   678
            try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   679
                c = pc.getConstructor(NOPARAMS);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   680
                break;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   681
            } catch (NoSuchMethodException ex) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   682
                // proceed to the one-param constructor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   683
                objects.add(null);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   684
            }
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
   685
            /* fall through */
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   686
        case 1:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   687
            try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   688
                c = pc.getConstructor(ONEPARAMS);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   689
                break;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   690
            } catch (NoSuchMethodException ex) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   691
                // proceed to the two-param constructor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   692
                objects.add(null);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   693
            }
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
   694
            /* fall through */
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   695
        case 2:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   696
            c = pc.getConstructor(TWOPARAMS);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   697
            break;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   698
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   699
        Object parameters[] = objects.toArray();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   700
        Permission p = (Permission)c.newInstance(parameters);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   701
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   702
90ce3da70b43 Initial load
duke
parents:
diff changeset
   703
    /*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   704
     * Parse command line arguments.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   705
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   706
    static void parseArgs(String args[]) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   707
        /* parse flags */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   708
        int n = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   709
90ce3da70b43 Initial load
duke
parents:
diff changeset
   710
        for (n=0; (n < args.length) && args[n].startsWith("-"); n++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   711
90ce3da70b43 Initial load
duke
parents:
diff changeset
   712
            String flags = args[n];
90ce3da70b43 Initial load
duke
parents:
diff changeset
   713
90ce3da70b43 Initial load
duke
parents:
diff changeset
   714
            if (collator.compare(flags, "-file") == 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   715
                if (++n == args.length) usage();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   716
                policyFileName = args[n];
90ce3da70b43 Initial load
duke
parents:
diff changeset
   717
            } else {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   718
                MessageFormat form = new MessageFormat(getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
   719
                                ("Illegal.option.option"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   720
                Object[] source = { flags };
90ce3da70b43 Initial load
duke
parents:
diff changeset
   721
                System.err.println(form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   722
                usage();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   723
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   724
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   725
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   726
90ce3da70b43 Initial load
duke
parents:
diff changeset
   727
    static void usage() {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   728
        System.out.println(getMessage("Usage.policytool.options."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   729
        System.out.println();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   730
        System.out.println(getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
   731
                (".file.file.policy.file.location"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   732
        System.out.println();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   733
90ce3da70b43 Initial load
duke
parents:
diff changeset
   734
        System.exit(1);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   735
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   736
90ce3da70b43 Initial load
duke
parents:
diff changeset
   737
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   738
     * run the PolicyTool
90ce3da70b43 Initial load
duke
parents:
diff changeset
   739
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   740
    public static void main(String args[]) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   741
        parseArgs(args);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   742
        SwingUtilities.invokeLater(new Runnable() {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   743
            public void run() {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   744
                ToolWindow tw = new ToolWindow(new PolicyTool());
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   745
                tw.displayToolWindow(args);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   746
            }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   747
        });
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   748
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   749
90ce3da70b43 Initial load
duke
parents:
diff changeset
   750
    // split instr to words according to capitalization,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   751
    // like, AWTControl -> A W T Control
90ce3da70b43 Initial load
duke
parents:
diff changeset
   752
    // this method is for easy pronounciation
90ce3da70b43 Initial load
duke
parents:
diff changeset
   753
    static String splitToWords(String instr) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   754
        return instr.replaceAll("([A-Z])", " $1");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   755
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   756
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   757
    /**
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   758
     * Returns the message corresponding to the key in the bundle.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   759
     * This is preferred over {@link #getString} because it removes
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   760
     * any mnemonic '&' character in the string.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   761
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   762
     * @param key the key
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   763
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   764
     * @return the message
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   765
     */
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   766
    static String getMessage(String key) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   767
        return removeMnemonicAmpersand(rb.getString(key));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   768
    }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   769
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   770
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   771
    /**
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   772
     * Returns the mnemonic for a message.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   773
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   774
     * @param key the key
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   775
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   776
     * @return the mnemonic <code>int</code>
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   777
     */
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   778
    static int getMnemonicInt(String key) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   779
        String message = rb.getString(key);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   780
        return (findMnemonicInt(message));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   781
    }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   782
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   783
    /**
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   784
     * Returns the mnemonic display index for a message.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   785
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   786
     * @param key the key
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   787
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   788
     * @return the mnemonic display index
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   789
     */
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   790
    static int getDisplayedMnemonicIndex(String key) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   791
        String message = rb.getString(key);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   792
        return (findMnemonicIndex(message));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   793
    }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   794
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   795
    /**
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   796
     * Finds the mnemonic character in a message.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   797
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   798
     * The mnemonic character is the first character followed by the first
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   799
     * <code>&</code> that is not followed by another <code>&</code>.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   800
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   801
     * @return the mnemonic as an <code>int</code>, or <code>0</code> if it
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   802
     *         can't be found.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   803
     */
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   804
    private static int findMnemonicInt(String s) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   805
        for (int i = 0; i < s.length() - 1; i++) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   806
            if (s.charAt(i) == '&') {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   807
                if (s.charAt(i + 1) != '&') {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   808
                    return KeyEvent.getExtendedKeyCodeForChar(s.charAt(i + 1));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   809
                } else {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   810
                    i++;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   811
                }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   812
            }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   813
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   814
        return 0;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   815
    }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   816
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   817
    /**
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   818
     * Finds the index of the mnemonic character in a message.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   819
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   820
     * The mnemonic character is the first character followed by the first
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   821
     * <code>&</code> that is not followed by another <code>&</code>.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   822
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   823
     * @return the mnemonic character index as an <code>int</code>, or <code>-1</code> if it
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   824
     *         can't be found.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   825
     */
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   826
    private static int findMnemonicIndex(String s) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   827
        for (int i = 0; i < s.length() - 1; i++) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   828
            if (s.charAt(i) == '&') {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   829
                if (s.charAt(i + 1) != '&') {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   830
                    // Return the index of the '&' since it will be removed
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   831
                    return i;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   832
                } else {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   833
                    i++;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   834
                }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   835
            }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   836
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   837
        return -1;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   838
    }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   839
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   840
    /**
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   841
     * Removes the mnemonic identifier (<code>&</code>) from a string unless
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   842
     * it's escaped by <code>&&</code> or placed at the end.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   843
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   844
     * @param message the message
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   845
     *
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   846
     * @return a message with the mnemonic identifier removed
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   847
     */
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   848
    private static String removeMnemonicAmpersand(String message) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   849
        StringBuilder s = new StringBuilder();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   850
        for (int i = 0; i < message.length(); i++) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   851
            char current = message.charAt(i);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   852
            if (current != '&' || i == message.length() - 1
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   853
                    || message.charAt(i + 1) == '&') {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   854
                s.append(current);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   855
            }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   856
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   857
        return s.toString();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
   858
    }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   859
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   860
90ce3da70b43 Initial load
duke
parents:
diff changeset
   861
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   862
 * Each entry in the policy configuration file is represented by a
90ce3da70b43 Initial load
duke
parents:
diff changeset
   863
 * PolicyEntry object.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   864
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
   865
 * A PolicyEntry is a (CodeSource,Permission) pair.  The
90ce3da70b43 Initial load
duke
parents:
diff changeset
   866
 * CodeSource contains the (URL, PublicKey) that together identify
90ce3da70b43 Initial load
duke
parents:
diff changeset
   867
 * where the Java bytecodes come from and who (if anyone) signed
90ce3da70b43 Initial load
duke
parents:
diff changeset
   868
 * them.  The URL could refer to localhost.  The URL could also be
90ce3da70b43 Initial load
duke
parents:
diff changeset
   869
 * null, meaning that this policy entry is given to all comers, as
90ce3da70b43 Initial load
duke
parents:
diff changeset
   870
 * long as they match the signer field.  The signer could be null,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   871
 * meaning the code is not signed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   872
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
   873
 * The Permission contains the (Type, Name, Action) triplet.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   874
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
   875
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   876
class PolicyEntry {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   877
90ce3da70b43 Initial load
duke
parents:
diff changeset
   878
    private CodeSource codesource;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   879
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   880
    private PolicyParser.GrantEntry grantEntry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   881
    private boolean testing = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   882
90ce3da70b43 Initial load
duke
parents:
diff changeset
   883
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   884
     * Create a PolicyEntry object from the information read in
90ce3da70b43 Initial load
duke
parents:
diff changeset
   885
     * from a policy file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   886
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   887
    PolicyEntry(PolicyTool tool, PolicyParser.GrantEntry ge)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   888
    throws MalformedURLException, NoSuchMethodException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   889
    ClassNotFoundException, InstantiationException, IllegalAccessException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   890
    InvocationTargetException, CertificateException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   891
    IOException, NoSuchAlgorithmException, UnrecoverableKeyException {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   892
90ce3da70b43 Initial load
duke
parents:
diff changeset
   893
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   894
90ce3da70b43 Initial load
duke
parents:
diff changeset
   895
        URL location = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   896
90ce3da70b43 Initial load
duke
parents:
diff changeset
   897
        // construct the CodeSource
90ce3da70b43 Initial load
duke
parents:
diff changeset
   898
        if (ge.codeBase != null)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   899
            location = new URL(ge.codeBase);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   900
        this.codesource = new CodeSource(location,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   901
            (java.security.cert.Certificate[]) null);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   902
90ce3da70b43 Initial load
duke
parents:
diff changeset
   903
        if (testing) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   904
            System.out.println("Adding Policy Entry:");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   905
            System.out.println("    CodeBase = " + location);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   906
            System.out.println("    Signers = " + ge.signedBy);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   907
            System.out.println("    with " + ge.principals.size() +
90ce3da70b43 Initial load
duke
parents:
diff changeset
   908
                    " Principals");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   909
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   910
90ce3da70b43 Initial load
duke
parents:
diff changeset
   911
        this.grantEntry = ge;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   912
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   913
90ce3da70b43 Initial load
duke
parents:
diff changeset
   914
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   915
     * get the codesource associated with this PolicyEntry
90ce3da70b43 Initial load
duke
parents:
diff changeset
   916
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   917
    CodeSource getCodeSource() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   918
        return codesource;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   919
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   920
90ce3da70b43 Initial load
duke
parents:
diff changeset
   921
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   922
     * get the GrantEntry associated with this PolicyEntry
90ce3da70b43 Initial load
duke
parents:
diff changeset
   923
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   924
    PolicyParser.GrantEntry getGrantEntry() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   925
        return grantEntry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   926
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   927
90ce3da70b43 Initial load
duke
parents:
diff changeset
   928
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   929
     * convert the header portion, i.e. codebase, signer, principals, of
90ce3da70b43 Initial load
duke
parents:
diff changeset
   930
     * this policy entry into a string
90ce3da70b43 Initial load
duke
parents:
diff changeset
   931
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   932
    String headerToString() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   933
        String pString = principalsToString();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   934
        if (pString.length() == 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   935
            return codebaseToString();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   936
        } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   937
            return codebaseToString() + ", " + pString;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   938
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   939
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   940
90ce3da70b43 Initial load
duke
parents:
diff changeset
   941
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   942
     * convert the Codebase/signer portion of this policy entry into a string
90ce3da70b43 Initial load
duke
parents:
diff changeset
   943
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   944
    String codebaseToString() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   945
90ce3da70b43 Initial load
duke
parents:
diff changeset
   946
        String stringEntry = new String();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   947
90ce3da70b43 Initial load
duke
parents:
diff changeset
   948
        if (grantEntry.codeBase != null &&
90ce3da70b43 Initial load
duke
parents:
diff changeset
   949
            grantEntry.codeBase.equals("") == false)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   950
            stringEntry = stringEntry.concat
90ce3da70b43 Initial load
duke
parents:
diff changeset
   951
                                ("CodeBase \"" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
   952
                                grantEntry.codeBase +
90ce3da70b43 Initial load
duke
parents:
diff changeset
   953
                                "\"");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   954
90ce3da70b43 Initial load
duke
parents:
diff changeset
   955
        if (grantEntry.signedBy != null &&
90ce3da70b43 Initial load
duke
parents:
diff changeset
   956
            grantEntry.signedBy.equals("") == false)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   957
            stringEntry = ((stringEntry.length() > 0) ?
90ce3da70b43 Initial load
duke
parents:
diff changeset
   958
                stringEntry.concat(", SignedBy \"" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
   959
                                grantEntry.signedBy +
90ce3da70b43 Initial load
duke
parents:
diff changeset
   960
                                "\"") :
90ce3da70b43 Initial load
duke
parents:
diff changeset
   961
                stringEntry.concat("SignedBy \"" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
   962
                                grantEntry.signedBy +
90ce3da70b43 Initial load
duke
parents:
diff changeset
   963
                                "\""));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   964
90ce3da70b43 Initial load
duke
parents:
diff changeset
   965
        if (stringEntry.length() == 0)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   966
            return new String("CodeBase <ALL>");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   967
        return stringEntry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   968
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   969
90ce3da70b43 Initial load
duke
parents:
diff changeset
   970
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   971
     * convert the Principals portion of this policy entry into a string
90ce3da70b43 Initial load
duke
parents:
diff changeset
   972
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   973
    String principalsToString() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   974
        String result = "";
90ce3da70b43 Initial load
duke
parents:
diff changeset
   975
        if ((grantEntry.principals != null) &&
90ce3da70b43 Initial load
duke
parents:
diff changeset
   976
            (!grantEntry.principals.isEmpty())) {
24969
afa6934dd8e8 8041679: Replace uses of StringBuffer with StringBuilder within core library classes
psandoz
parents: 23333
diff changeset
   977
            StringBuilder sb = new StringBuilder(200);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   978
            ListIterator<PolicyParser.PrincipalEntry> list =
90ce3da70b43 Initial load
duke
parents:
diff changeset
   979
                                grantEntry.principals.listIterator();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   980
            while (list.hasNext()) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   981
                PolicyParser.PrincipalEntry pppe = list.next();
27957
24b4e6082f19 8055723: Replace concat String to append in StringBuilder parameters (dev)
weijun
parents: 27499
diff changeset
   982
                sb.append(" Principal ").append(pppe.getDisplayClass())
24b4e6082f19 8055723: Replace concat String to append in StringBuilder parameters (dev)
weijun
parents: 27499
diff changeset
   983
                        .append(' ')
24b4e6082f19 8055723: Replace concat String to append in StringBuilder parameters (dev)
weijun
parents: 27499
diff changeset
   984
                        .append(pppe.getDisplayName(true));
24969
afa6934dd8e8 8041679: Replace uses of StringBuffer with StringBuilder within core library classes
psandoz
parents: 23333
diff changeset
   985
                if (list.hasNext()) sb.append(", ");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   986
            }
24969
afa6934dd8e8 8041679: Replace uses of StringBuffer with StringBuilder within core library classes
psandoz
parents: 23333
diff changeset
   987
            result = sb.toString();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   988
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   989
        return result;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   990
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   991
90ce3da70b43 Initial load
duke
parents:
diff changeset
   992
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
   993
     * convert this policy entry into a PolicyParser.PermissionEntry
90ce3da70b43 Initial load
duke
parents:
diff changeset
   994
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   995
    PolicyParser.PermissionEntry toPermissionEntry(Permission perm) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   996
90ce3da70b43 Initial load
duke
parents:
diff changeset
   997
        String actions = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   998
90ce3da70b43 Initial load
duke
parents:
diff changeset
   999
        // get the actions
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1000
        if (perm.getActions() != null &&
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1001
            perm.getActions().trim() != "")
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1002
                actions = perm.getActions();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1003
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1004
        PolicyParser.PermissionEntry pe = new PolicyParser.PermissionEntry
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1005
                        (perm.getClass().getName(),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1006
                        perm.getName(),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1007
                        actions);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1008
        return pe;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1009
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1010
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1011
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1012
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1013
 * The main window for the PolicyTool
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1014
 */
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1015
class ToolWindow extends JFrame {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1016
    // use serialVersionUID from JDK 1.2.2 for interoperability
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1017
    private static final long serialVersionUID = 5682568601210376777L;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1018
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1019
    /* ESCAPE key */
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1020
    static final KeyStroke escKey = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1021
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1022
    /* external paddings */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1023
    public static final Insets TOP_PADDING = new Insets(25,0,0,0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1024
    public static final Insets BOTTOM_PADDING = new Insets(0,0,25,0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1025
    public static final Insets LITE_BOTTOM_PADDING = new Insets(0,0,10,0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1026
    public static final Insets LR_PADDING = new Insets(0,10,0,10);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1027
    public static final Insets TOP_BOTTOM_PADDING = new Insets(15, 0, 15, 0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1028
    public static final Insets L_TOP_BOTTOM_PADDING = new Insets(5,10,15,0);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1029
    public static final Insets LR_TOP_BOTTOM_PADDING = new Insets(15, 4, 15, 4);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1030
    public static final Insets LR_BOTTOM_PADDING = new Insets(0,10,5,10);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1031
    public static final Insets L_BOTTOM_PADDING = new Insets(0,10,5,0);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1032
    public static final Insets R_BOTTOM_PADDING = new Insets(0, 0, 25, 5);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1033
    public static final Insets R_PADDING = new Insets(0, 0, 0, 5);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1034
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1035
    /* buttons and menus */
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1036
    public static final String NEW_POLICY_FILE          = "New";
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1037
    public static final String OPEN_POLICY_FILE         = "Open";
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1038
    public static final String SAVE_POLICY_FILE         = "Save";
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1039
    public static final String SAVE_AS_POLICY_FILE      = "Save.As";
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1040
    public static final String VIEW_WARNINGS            = "View.Warning.Log";
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1041
    public static final String QUIT                     = "Exit";
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1042
    public static final String ADD_POLICY_ENTRY         = "Add.Policy.Entry";
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1043
    public static final String EDIT_POLICY_ENTRY        = "Edit.Policy.Entry";
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1044
    public static final String REMOVE_POLICY_ENTRY      = "Remove.Policy.Entry";
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1045
    public static final String EDIT_KEYSTORE            = "Edit";
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1046
    public static final String ADD_PUBKEY_ALIAS         = "Add.Public.Key.Alias";
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1047
    public static final String REMOVE_PUBKEY_ALIAS      = "Remove.Public.Key.Alias";
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1048
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1049
    /* gridbag index for components in the main window (MW) */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1050
    public static final int MW_FILENAME_LABEL           = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1051
    public static final int MW_FILENAME_TEXTFIELD       = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1052
    public static final int MW_PANEL                    = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1053
    public static final int MW_ADD_BUTTON               = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1054
    public static final int MW_EDIT_BUTTON              = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1055
    public static final int MW_REMOVE_BUTTON            = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1056
    public static final int MW_POLICY_LIST              = 3; // follows MW_PANEL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1057
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1058
    /* The preferred height of JTextField should match JComboBox. */
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1059
    static final int TEXTFIELD_HEIGHT = new JComboBox<>().getPreferredSize().height;
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1060
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1061
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1062
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1063
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1064
     * Constructor
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1065
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1066
    ToolWindow(PolicyTool tool) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1067
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1068
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1069
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1070
    /**
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1071
     * Don't call getComponent directly on the window
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1072
     */
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1073
    public Component getComponent(int n) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1074
        Component c = getContentPane().getComponent(n);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1075
        if (c instanceof JScrollPane) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1076
            c = ((JScrollPane)c).getViewport().getView();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1077
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1078
        return c;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1079
    }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1080
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1081
    /**
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1082
     * Initialize the PolicyTool window with the necessary components
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1083
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1084
    private void initWindow() {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1085
        // The ToolWindowListener will handle closing the window.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1086
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1087
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1088
        // create the top menu bar
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1089
        JMenuBar menuBar = new JMenuBar();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1090
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1091
        // create a File menu
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1092
        JMenu menu = new JMenu();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1093
        configureButton(menu, "File");
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1094
        ActionListener actionListener = new FileMenuListener(tool, this);
21365
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1095
        addMenuItem(menu, NEW_POLICY_FILE, actionListener, "N");
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1096
        addMenuItem(menu, OPEN_POLICY_FILE, actionListener, "O");
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1097
        addMenuItem(menu, SAVE_POLICY_FILE, actionListener, "S");
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1098
        addMenuItem(menu, SAVE_AS_POLICY_FILE, actionListener, null);
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1099
        addMenuItem(menu, VIEW_WARNINGS, actionListener, null);
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1100
        addMenuItem(menu, QUIT, actionListener, null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1101
        menuBar.add(menu);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1102
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1103
        // create a KeyStore menu
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1104
        menu = new JMenu();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1105
        configureButton(menu, "KeyStore");
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1106
        actionListener = new MainWindowListener(tool, this);
21365
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1107
        addMenuItem(menu, EDIT_KEYSTORE, actionListener, null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1108
        menuBar.add(menu);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1109
        setJMenuBar(menuBar);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1110
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1111
        // Create some space around components
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1112
        ((JPanel)getContentPane()).setBorder(new EmptyBorder(6, 6, 6, 6));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1113
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1114
        // policy entry listing
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1115
        JLabel label = new JLabel(PolicyTool.getMessage("Policy.File."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1116
        addNewComponent(this, label, MW_FILENAME_LABEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1117
                        0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1118
                        LR_TOP_BOTTOM_PADDING);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1119
        JTextField tf = new JTextField(50);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1120
        tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1121
        tf.getAccessibleContext().setAccessibleName(
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1122
                PolicyTool.getMessage("Policy.File."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1123
        tf.setEditable(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1124
        addNewComponent(this, tf, MW_FILENAME_TEXTFIELD,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1125
                        1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1126
                        LR_TOP_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1127
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1128
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1129
        // add ADD/REMOVE/EDIT buttons in a new panel
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1130
        JPanel panel = new JPanel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1131
        panel.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1132
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1133
        JButton button = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1134
        configureButton(button, ADD_POLICY_ENTRY);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1135
        button.addActionListener(new MainWindowListener(tool, this));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1136
        addNewComponent(panel, button, MW_ADD_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1137
                        0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1138
                        LR_PADDING);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1139
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1140
        button = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1141
        configureButton(button, EDIT_POLICY_ENTRY);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1142
        button.addActionListener(new MainWindowListener(tool, this));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1143
        addNewComponent(panel, button, MW_EDIT_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1144
                        1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1145
                        LR_PADDING);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1146
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1147
        button = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1148
        configureButton(button, REMOVE_POLICY_ENTRY);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1149
        button.addActionListener(new MainWindowListener(tool, this));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1150
        addNewComponent(panel, button, MW_REMOVE_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1151
                        2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1152
                        LR_PADDING);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1153
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1154
        addNewComponent(this, panel, MW_PANEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1155
                        0, 2, 2, 1, 0.0, 0.0, GridBagConstraints.BOTH,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1156
                        BOTTOM_PADDING);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1157
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1158
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1159
        String policyFile = tool.getPolicyFileName();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1160
        if (policyFile == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1161
            String userHome;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1162
            userHome = java.security.AccessController.doPrivileged(
23333
b0af2c7c8c91 8035808: Eliminate dependency to GetPropertyAction and other sun.security.action convenient classes
mchung
parents: 22059
diff changeset
  1163
                (PrivilegedAction<String>) () -> System.getProperty("user.home"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1164
            policyFile = userHome + File.separatorChar + ".java.policy";
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1165
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1166
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1167
        try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1168
            // open the policy file
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1169
            tool.openPolicy(policyFile);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1170
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1171
            // display the policy entries via the policy list textarea
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1172
            DefaultListModel<String> listModel = new DefaultListModel<>();
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1173
            JList<String> list = new JList<>(listModel);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1174
            list.setVisibleRowCount(15);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1175
            list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1176
            list.addMouseListener(new PolicyListListener(tool, this));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1177
            PolicyEntry entries[] = tool.getEntry();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1178
            if (entries != null) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1179
                for (int i = 0; i < entries.length; i++) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1180
                    listModel.addElement(entries[i].headerToString());
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1181
                }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1182
            }
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1183
            JTextField newFilename = (JTextField)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1184
                                getComponent(MW_FILENAME_TEXTFIELD);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1185
            newFilename.setText(policyFile);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1186
            initPolicyList(list);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1187
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1188
        } catch (FileNotFoundException fnfe) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1189
            // add blank policy listing
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1190
            JList<String> list = new JList<>(new DefaultListModel<>());
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1191
            list.setVisibleRowCount(15);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1192
            list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1193
            list.addMouseListener(new PolicyListListener(tool, this));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1194
            initPolicyList(list);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1195
            tool.setPolicyFileName(null);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1196
            tool.modified = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1197
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1198
            // just add warning
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1199
            tool.warnings.addElement(fnfe.toString());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1200
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1201
        } catch (Exception e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1202
            // add blank policy listing
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1203
            JList<String> list = new JList<>(new DefaultListModel<>());
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1204
            list.setVisibleRowCount(15);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1205
            list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1206
            list.addMouseListener(new PolicyListListener(tool, this));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1207
            initPolicyList(list);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1208
            tool.setPolicyFileName(null);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1209
            tool.modified = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1210
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1211
            // display the error
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1212
            MessageFormat form = new MessageFormat(PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  1213
                ("Could.not.open.policy.file.policyFile.e.toString."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1214
            Object[] source = {policyFile, e.toString()};
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1215
            displayErrorDialog(null, form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1216
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1217
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1218
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1219
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1220
    // Platform specific modifier (control / command).
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1221
    private int shortCutModifier = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1222
21365
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1223
    private void addMenuItem(JMenu menu, String key, ActionListener actionListener, String accelerator) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1224
        JMenuItem menuItem = new JMenuItem();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1225
        configureButton(menuItem, key);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1226
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1227
        if (PolicyTool.rb.containsKey(key + ".accelerator")) {
21365
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1228
            // Accelerator from resources takes precedence
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1229
            accelerator = PolicyTool.getMessage(key + ".accelerator");
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1230
        }
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1231
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1232
        if (accelerator != null && !accelerator.isEmpty()) {
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1233
            KeyStroke keyStroke;
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1234
            if (accelerator.length() == 1) {
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1235
                keyStroke = KeyStroke.getKeyStroke(KeyEvent.getExtendedKeyCodeForChar(accelerator.charAt(0)),
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1236
                                                   shortCutModifier);
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1237
            } else {
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1238
                keyStroke = KeyStroke.getKeyStroke(accelerator);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1239
            }
21365
2a7be11ae905 8026929: remove accelerators from policytool resources
weijun
parents: 20886
diff changeset
  1240
            menuItem.setAccelerator(keyStroke);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1241
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1242
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1243
        menuItem.addActionListener(actionListener);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1244
        menu.add(menuItem);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1245
    }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1246
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1247
    static void configureButton(AbstractButton button, String key) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1248
        button.setText(PolicyTool.getMessage(key));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1249
        button.setActionCommand(key);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1250
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1251
        int mnemonicInt = PolicyTool.getMnemonicInt(key);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1252
        if (mnemonicInt > 0) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1253
            button.setMnemonic(mnemonicInt);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1254
            button.setDisplayedMnemonicIndex(PolicyTool.getDisplayedMnemonicIndex(key));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1255
         }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1256
    }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1257
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1258
    static void configureLabelFor(JLabel label, JComponent component, String key) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1259
        label.setText(PolicyTool.getMessage(key));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1260
        label.setLabelFor(component);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1261
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1262
        int mnemonicInt = PolicyTool.getMnemonicInt(key);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1263
        if (mnemonicInt > 0) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1264
            label.setDisplayedMnemonic(mnemonicInt);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1265
            label.setDisplayedMnemonicIndex(PolicyTool.getDisplayedMnemonicIndex(key));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1266
         }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1267
    }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1268
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1269
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1270
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1271
     * Add a component to the PolicyTool window
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1272
     */
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1273
    void addNewComponent(Container container, JComponent component,
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1274
        int index, int gridx, int gridy, int gridwidth, int gridheight,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1275
        double weightx, double weighty, int fill, Insets is) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1276
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1277
        if (container instanceof JFrame) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1278
            container = ((JFrame)container).getContentPane();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1279
        } else if (container instanceof JDialog) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1280
            container = ((JDialog)container).getContentPane();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1281
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1282
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1283
        // add the component at the specified gridbag index
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1284
        container.add(component, index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1285
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1286
        // set the constraints
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1287
        GridBagLayout gbl = (GridBagLayout)container.getLayout();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1288
        GridBagConstraints gbc = new GridBagConstraints();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1289
        gbc.gridx = gridx;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1290
        gbc.gridy = gridy;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1291
        gbc.gridwidth = gridwidth;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1292
        gbc.gridheight = gridheight;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1293
        gbc.weightx = weightx;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1294
        gbc.weighty = weighty;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1295
        gbc.fill = fill;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1296
        if (is != null) gbc.insets = is;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1297
        gbl.setConstraints(component, gbc);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1298
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1299
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1300
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1301
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1302
     * Add a component to the PolicyTool window without external padding
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1303
     */
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1304
    void addNewComponent(Container container, JComponent component,
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1305
        int index, int gridx, int gridy, int gridwidth, int gridheight,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1306
        double weightx, double weighty, int fill) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1307
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1308
        // delegate with "null" external padding
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1309
        addNewComponent(container, component, index, gridx, gridy,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1310
                        gridwidth, gridheight, weightx, weighty,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1311
                        fill, null);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1312
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1313
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1314
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1315
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1316
     * Init the policy_entry_list TEXTAREA component in the
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1317
     * PolicyTool window
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1318
     */
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1319
    void initPolicyList(JList<String> policyList) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1320
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1321
        // add the policy list to the window
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1322
        //policyList.setPreferredSize(new Dimension(500, 350));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1323
        JScrollPane scrollPane = new JScrollPane(policyList);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1324
        addNewComponent(this, scrollPane, MW_POLICY_LIST,
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1325
                        0, 3, 2, 1, 1.0, 1.0, GridBagConstraints.BOTH);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1326
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1327
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1328
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1329
     * Replace the policy_entry_list TEXTAREA component in the
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1330
     * PolicyTool window with an updated one.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1331
     */
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1332
    void replacePolicyList(JList<String> policyList) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1333
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1334
        // remove the original list of Policy Entries
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1335
        // and add the new list of entries
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1336
        @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1337
        JList<String> list = (JList<String>)getComponent(MW_POLICY_LIST);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1338
        list.setModel(policyList.getModel());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1339
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1340
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1341
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1342
     * display the main PolicyTool window
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1343
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1344
    void displayToolWindow(String args[]) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1345
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1346
        setTitle(PolicyTool.getMessage("Policy.Tool"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1347
        setResizable(true);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1348
        addWindowListener(new ToolWindowListener(tool, this));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1349
        //setBounds(135, 80, 500, 500);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1350
        getContentPane().setLayout(new GridBagLayout());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1351
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1352
        initWindow();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1353
        pack();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1354
        setLocationRelativeTo(null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1355
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1356
        // display it
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1357
        setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1358
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1359
        if (tool.newWarning == true) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1360
            displayStatusDialog(this, PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  1361
                ("Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1362
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1363
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1364
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1365
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1366
     * displays a dialog box describing an error which occurred.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1367
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1368
    void displayErrorDialog(Window w, String error) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1369
        ToolDialog ed = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1370
                (PolicyTool.getMessage("Error"), tool, this, true);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1371
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1372
        // find where the PolicyTool gui is
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1373
        Point location = ((w == null) ?
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1374
                getLocationOnScreen() : w.getLocationOnScreen());
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1375
        //ed.setBounds(location.x + 50, location.y + 50, 600, 100);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1376
        ed.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1377
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1378
        JLabel label = new JLabel(error);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1379
        addNewComponent(ed, label, 0,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1380
                        0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1381
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1382
        JButton okButton = new JButton(PolicyTool.getMessage("OK"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1383
        ActionListener okListener = new ErrorOKButtonListener(ed);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1384
        okButton.addActionListener(okListener);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1385
        addNewComponent(ed, okButton, 1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1386
                        0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1387
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1388
        ed.getRootPane().setDefaultButton(okButton);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1389
        ed.getRootPane().registerKeyboardAction(okListener, escKey, JComponent.WHEN_IN_FOCUSED_WINDOW);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1390
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1391
        ed.pack();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1392
        ed.setLocationRelativeTo(w);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1393
        ed.setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1394
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1395
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1396
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1397
     * displays a dialog box describing an error which occurred.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1398
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1399
    void displayErrorDialog(Window w, Throwable t) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1400
        if (t instanceof NoDisplayException) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1401
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1402
        }
27499
10c5f7509a99 8063087: policytool reports error message with prefix of "java.lang.Exception"
weijun
parents: 26204
diff changeset
  1403
        if (t.getClass() == Exception.class) {
10c5f7509a99 8063087: policytool reports error message with prefix of "java.lang.Exception"
weijun
parents: 26204
diff changeset
  1404
            // Exception is usually thrown inside policytool for user
10c5f7509a99 8063087: policytool reports error message with prefix of "java.lang.Exception"
weijun
parents: 26204
diff changeset
  1405
            // interaction error. There is no need to show the type.
10c5f7509a99 8063087: policytool reports error message with prefix of "java.lang.Exception"
weijun
parents: 26204
diff changeset
  1406
            displayErrorDialog(w, t.getLocalizedMessage());
10c5f7509a99 8063087: policytool reports error message with prefix of "java.lang.Exception"
weijun
parents: 26204
diff changeset
  1407
        } else {
10c5f7509a99 8063087: policytool reports error message with prefix of "java.lang.Exception"
weijun
parents: 26204
diff changeset
  1408
            displayErrorDialog(w, t.toString());
10c5f7509a99 8063087: policytool reports error message with prefix of "java.lang.Exception"
weijun
parents: 26204
diff changeset
  1409
        }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1410
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1411
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1412
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1413
     * displays a dialog box describing the status of an event
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1414
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1415
    void displayStatusDialog(Window w, String status) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1416
        ToolDialog sd = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1417
                (PolicyTool.getMessage("Status"), tool, this, true);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1418
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1419
        // find the location of the PolicyTool gui
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1420
        Point location = ((w == null) ?
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1421
                getLocationOnScreen() : w.getLocationOnScreen());
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1422
        //sd.setBounds(location.x + 50, location.y + 50, 500, 100);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1423
        sd.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1424
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1425
        JLabel label = new JLabel(status);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1426
        addNewComponent(sd, label, 0,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1427
                        0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1428
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1429
        JButton okButton = new JButton(PolicyTool.getMessage("OK"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1430
        ActionListener okListener = new StatusOKButtonListener(sd);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1431
        okButton.addActionListener(okListener);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1432
        addNewComponent(sd, okButton, 1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1433
                        0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1434
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1435
        sd.getRootPane().setDefaultButton(okButton);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1436
        sd.getRootPane().registerKeyboardAction(okListener, escKey, JComponent.WHEN_IN_FOCUSED_WINDOW);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1437
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1438
        sd.pack();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1439
        sd.setLocationRelativeTo(w);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1440
        sd.setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1441
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1442
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1443
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1444
     * display the warning log
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1445
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1446
    void displayWarningLog(Window w) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1447
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1448
        ToolDialog wd = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1449
                (PolicyTool.getMessage("Warning"), tool, this, true);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1450
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1451
        // find the location of the PolicyTool gui
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1452
        Point location = ((w == null) ?
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1453
                getLocationOnScreen() : w.getLocationOnScreen());
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1454
        //wd.setBounds(location.x + 50, location.y + 50, 500, 100);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1455
        wd.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1456
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1457
        JTextArea ta = new JTextArea();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1458
        ta.setEditable(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1459
        for (int i = 0; i < tool.warnings.size(); i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1460
            ta.append(tool.warnings.elementAt(i));
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1461
            ta.append(PolicyTool.getMessage("NEWLINE"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1462
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1463
        addNewComponent(wd, ta, 0,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1464
                        0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1465
                        BOTTOM_PADDING);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1466
        ta.setFocusable(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1467
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1468
        JButton okButton = new JButton(PolicyTool.getMessage("OK"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1469
        ActionListener okListener = new CancelButtonListener(wd);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1470
        okButton.addActionListener(okListener);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1471
        addNewComponent(wd, okButton, 1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1472
                        0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1473
                        LR_PADDING);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1474
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1475
        wd.getRootPane().setDefaultButton(okButton);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1476
        wd.getRootPane().registerKeyboardAction(okListener, escKey, JComponent.WHEN_IN_FOCUSED_WINDOW);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1477
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1478
        wd.pack();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1479
        wd.setLocationRelativeTo(w);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1480
        wd.setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1481
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1482
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1483
    char displayYesNoDialog(Window w, String title, String prompt, String yes, String no) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1484
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1485
        final ToolDialog tw = new ToolDialog
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1486
                (title, tool, this, true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1487
        Point location = ((w == null) ?
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1488
                getLocationOnScreen() : w.getLocationOnScreen());
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1489
        //tw.setBounds(location.x + 75, location.y + 100, 400, 150);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1490
        tw.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1491
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1492
        JTextArea ta = new JTextArea(prompt, 10, 50);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1493
        ta.setEditable(false);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1494
        ta.setLineWrap(true);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1495
        ta.setWrapStyleWord(true);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1496
        JScrollPane scrollPane = new JScrollPane(ta,
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1497
                                                 JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1498
                                                 JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1499
        addNewComponent(tw, scrollPane, 0,
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1500
                0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1501
        ta.setFocusable(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1502
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1503
        JPanel panel = new JPanel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1504
        panel.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1505
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1506
        // StringBuffer to store button press. Must be final.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1507
        final StringBuffer chooseResult = new StringBuffer();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1508
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1509
        JButton button = new JButton(yes);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1510
        button.addActionListener(new ActionListener() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1511
            public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1512
                chooseResult.append('Y');
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1513
                tw.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1514
                tw.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1515
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1516
        });
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1517
        addNewComponent(panel, button, 0,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1518
                           0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1519
                           LR_PADDING);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1520
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1521
        button = new JButton(no);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1522
        button.addActionListener(new ActionListener() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1523
            public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1524
                chooseResult.append('N');
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1525
                tw.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1526
                tw.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1527
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1528
        });
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1529
        addNewComponent(panel, button, 1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1530
                           1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1531
                           LR_PADDING);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1532
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1533
        addNewComponent(tw, panel, 1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1534
                0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1535
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1536
        tw.pack();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1537
        tw.setLocationRelativeTo(w);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1538
        tw.setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1539
        if (chooseResult.length() > 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1540
            return chooseResult.charAt(0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1541
        } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1542
            // I did encounter this once, don't why.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1543
            return 'N';
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1544
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1545
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1546
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1547
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1548
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1549
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1550
 * General dialog window
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1551
 */
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1552
class ToolDialog extends JDialog {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1553
    // use serialVersionUID from JDK 1.2.2 for interoperability
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1554
    private static final long serialVersionUID = -372244357011301190L;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1555
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1556
    /* ESCAPE key */
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1557
    static final KeyStroke escKey = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1558
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1559
    /* necessary constants */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1560
    public static final int NOACTION            = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1561
    public static final int QUIT                = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1562
    public static final int NEW                 = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1563
    public static final int OPEN                = 3;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1564
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1565
    /* popup menus */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1566
    public static final String PERM             =
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1567
        PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  1568
        ("Permission.");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1569
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1570
    public static final String PRIN_TYPE        =
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1571
        PolicyTool.getMessage("Principal.Type.");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1572
    public static final String PRIN_NAME        =
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1573
        PolicyTool.getMessage("Principal.Name.");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1574
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1575
    /* more popu menus */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1576
    public static final String PERM_NAME        =
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1577
        PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  1578
        ("Target.Name.");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1579
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1580
    /* and more popup menus */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1581
    public static final String PERM_ACTIONS             =
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1582
      PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  1583
      ("Actions.");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1584
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1585
    /* gridbag index for display PolicyEntry (PE) components */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1586
    public static final int PE_CODEBASE_LABEL           = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1587
    public static final int PE_CODEBASE_TEXTFIELD       = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1588
    public static final int PE_SIGNEDBY_LABEL           = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1589
    public static final int PE_SIGNEDBY_TEXTFIELD       = 3;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1590
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1591
    public static final int PE_PANEL0                   = 4;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1592
    public static final int PE_ADD_PRIN_BUTTON          = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1593
    public static final int PE_EDIT_PRIN_BUTTON         = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1594
    public static final int PE_REMOVE_PRIN_BUTTON       = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1595
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1596
    public static final int PE_PRIN_LABEL               = 5;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1597
    public static final int PE_PRIN_LIST                = 6;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1598
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1599
    public static final int PE_PANEL1                   = 7;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1600
    public static final int PE_ADD_PERM_BUTTON          = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1601
    public static final int PE_EDIT_PERM_BUTTON         = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1602
    public static final int PE_REMOVE_PERM_BUTTON       = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1603
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1604
    public static final int PE_PERM_LIST                = 8;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1605
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1606
    public static final int PE_PANEL2                   = 9;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1607
    public static final int PE_CANCEL_BUTTON            = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1608
    public static final int PE_DONE_BUTTON              = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1609
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1610
    /* the gridbag index for components in the Principal Dialog (PRD) */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1611
    public static final int PRD_DESC_LABEL              = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1612
    public static final int PRD_PRIN_CHOICE             = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1613
    public static final int PRD_PRIN_TEXTFIELD          = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1614
    public static final int PRD_NAME_LABEL              = 3;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1615
    public static final int PRD_NAME_TEXTFIELD          = 4;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1616
    public static final int PRD_CANCEL_BUTTON           = 6;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1617
    public static final int PRD_OK_BUTTON               = 5;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1618
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1619
    /* the gridbag index for components in the Permission Dialog (PD) */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1620
    public static final int PD_DESC_LABEL               = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1621
    public static final int PD_PERM_CHOICE              = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1622
    public static final int PD_PERM_TEXTFIELD           = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1623
    public static final int PD_NAME_CHOICE              = 3;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1624
    public static final int PD_NAME_TEXTFIELD           = 4;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1625
    public static final int PD_ACTIONS_CHOICE           = 5;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1626
    public static final int PD_ACTIONS_TEXTFIELD        = 6;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1627
    public static final int PD_SIGNEDBY_LABEL           = 7;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1628
    public static final int PD_SIGNEDBY_TEXTFIELD       = 8;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1629
    public static final int PD_CANCEL_BUTTON            = 10;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1630
    public static final int PD_OK_BUTTON                = 9;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1631
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1632
    /* modes for KeyStore */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1633
    public static final int EDIT_KEYSTORE               = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1634
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1635
    /* the gridbag index for components in the Change KeyStore Dialog (KSD) */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1636
    public static final int KSD_NAME_LABEL              = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1637
    public static final int KSD_NAME_TEXTFIELD          = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1638
    public static final int KSD_TYPE_LABEL              = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1639
    public static final int KSD_TYPE_TEXTFIELD          = 3;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1640
    public static final int KSD_PROVIDER_LABEL          = 4;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1641
    public static final int KSD_PROVIDER_TEXTFIELD      = 5;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1642
    public static final int KSD_PWD_URL_LABEL           = 6;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1643
    public static final int KSD_PWD_URL_TEXTFIELD       = 7;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1644
    public static final int KSD_CANCEL_BUTTON           = 9;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1645
    public static final int KSD_OK_BUTTON               = 8;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1646
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1647
    /* the gridbag index for components in the User Save Changes Dialog (USC) */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1648
    public static final int USC_LABEL                   = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1649
    public static final int USC_PANEL                   = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1650
    public static final int USC_YES_BUTTON              = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1651
    public static final int USC_NO_BUTTON               = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1652
    public static final int USC_CANCEL_BUTTON           = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1653
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1654
    /* gridbag index for the ConfirmRemovePolicyEntryDialog (CRPE) */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1655
    public static final int CRPE_LABEL1                 = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1656
    public static final int CRPE_LABEL2                 = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1657
    public static final int CRPE_PANEL                  = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1658
    public static final int CRPE_PANEL_OK               = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1659
    public static final int CRPE_PANEL_CANCEL           = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1660
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1661
    /* some private static finals */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1662
    private static final int PERMISSION                 = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1663
    private static final int PERMISSION_NAME            = 1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1664
    private static final int PERMISSION_ACTIONS         = 2;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1665
    private static final int PERMISSION_SIGNEDBY        = 3;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1666
    private static final int PRINCIPAL_TYPE             = 4;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1667
    private static final int PRINCIPAL_NAME             = 5;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1668
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1669
    /* The preferred height of JTextField should match JComboBox. */
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1670
    static final int TEXTFIELD_HEIGHT = new JComboBox<>().getPreferredSize().height;
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1671
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1672
    public static java.util.ArrayList<Perm> PERM_ARRAY;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1673
    public static java.util.ArrayList<Prin> PRIN_ARRAY;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1674
    PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1675
    ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1676
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1677
    static {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1678
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1679
        // set up permission objects
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1680
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1681
        PERM_ARRAY = new java.util.ArrayList<Perm>();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1682
        PERM_ARRAY.add(new AllPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1683
        PERM_ARRAY.add(new AudioPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1684
        PERM_ARRAY.add(new AuthPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1685
        PERM_ARRAY.add(new AWTPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1686
        PERM_ARRAY.add(new DelegationPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1687
        PERM_ARRAY.add(new FilePerm());
20787
ab071ce90368 8014719: HttpClient/ProxyTest.java failing with IAE HttpURLPermission.parseURI
michaelm
parents: 20754
diff changeset
  1688
        PERM_ARRAY.add(new URLPerm());
3482
4aaa66ce712d 6710360: export Kerberos session key to applications
weijun
parents: 715
diff changeset
  1689
        PERM_ARRAY.add(new InqSecContextPerm());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1690
        PERM_ARRAY.add(new LogPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1691
        PERM_ARRAY.add(new MgmtPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1692
        PERM_ARRAY.add(new MBeanPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1693
        PERM_ARRAY.add(new MBeanSvrPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1694
        PERM_ARRAY.add(new MBeanTrustPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1695
        PERM_ARRAY.add(new NetPerm());
26204
77df35747ce7 8055901: Update policytool for jdk.net.NetworkPermission
weijun
parents: 25859
diff changeset
  1696
        PERM_ARRAY.add(new NetworkPerm());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1697
        PERM_ARRAY.add(new PrivCredPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1698
        PERM_ARRAY.add(new PropPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1699
        PERM_ARRAY.add(new ReflectPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1700
        PERM_ARRAY.add(new RuntimePerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1701
        PERM_ARRAY.add(new SecurityPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1702
        PERM_ARRAY.add(new SerialPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1703
        PERM_ARRAY.add(new ServicePerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1704
        PERM_ARRAY.add(new SocketPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1705
        PERM_ARRAY.add(new SQLPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1706
        PERM_ARRAY.add(new SSLPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1707
        PERM_ARRAY.add(new SubjDelegPerm());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1708
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1709
        // set up principal objects
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1710
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1711
        PRIN_ARRAY = new java.util.ArrayList<Prin>();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1712
        PRIN_ARRAY.add(new KrbPrin());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1713
        PRIN_ARRAY.add(new X500Prin());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1714
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1715
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1716
    ToolDialog(String title, PolicyTool tool, ToolWindow tw, boolean modal) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1717
        super(tw, modal);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1718
        setTitle(title);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1719
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1720
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1721
        addWindowListener(new ChildWindowListener(this));
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1722
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1723
        // Create some space around components
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1724
        ((JPanel)getContentPane()).setBorder(new EmptyBorder(6, 6, 6, 6));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1725
    }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1726
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1727
    /**
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1728
     * Don't call getComponent directly on the window
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1729
     */
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1730
    public Component getComponent(int n) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1731
        Component c = getContentPane().getComponent(n);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1732
        if (c instanceof JScrollPane) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1733
            c = ((JScrollPane)c).getViewport().getView();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1734
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1735
        return c;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1736
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1737
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1738
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1739
     * get the Perm instance based on either the (shortened) class name
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1740
     * or the fully qualified class name
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1741
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1742
    static Perm getPerm(String clazz, boolean fullClassName) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1743
        for (int i = 0; i < PERM_ARRAY.size(); i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1744
            Perm next = PERM_ARRAY.get(i);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1745
            if (fullClassName) {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  1746
                if (next.getName().equals(clazz)) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1747
                    return next;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1748
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1749
            } else {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  1750
                if (next.getSimpleName().equals(clazz)) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1751
                    return next;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1752
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1753
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1754
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1755
        return null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1756
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1757
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1758
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1759
     * get the Prin instance based on either the (shortened) class name
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1760
     * or the fully qualified class name
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1761
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1762
    static Prin getPrin(String clazz, boolean fullClassName) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1763
        for (int i = 0; i < PRIN_ARRAY.size(); i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1764
            Prin next = PRIN_ARRAY.get(i);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1765
            if (fullClassName) {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  1766
                if (next.getName().equals(clazz)) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1767
                    return next;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1768
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1769
            } else {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  1770
                if (next.getSimpleName().equals(clazz)) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1771
                    return next;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1772
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1773
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1774
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1775
        return null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1776
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1777
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1778
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1779
     * pop up a dialog so the user can enter info to add a new PolicyEntry
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1780
     * - if edit is TRUE, then the user is editing an existing entry
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1781
     *   and we should display the original info as well.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1782
     *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1783
     * - the other reason we need the 'edit' boolean is we need to know
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1784
     *   when we are adding a NEW policy entry.  in this case, we can
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1785
     *   not simply update the existing entry, because it doesn't exist.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1786
     *   we ONLY update the GUI listing/info, and then when the user
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1787
     *   finally clicks 'OK' or 'DONE', then we can collect that info
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1788
     *   and add it to the policy.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1789
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1790
    void displayPolicyEntryDialog(boolean edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1791
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1792
        int listIndex = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1793
        PolicyEntry entries[] = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1794
        TaggedList prinList = new TaggedList(3, false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1795
        prinList.getAccessibleContext().setAccessibleName(
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1796
                PolicyTool.getMessage("Principal.List"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1797
        prinList.addMouseListener
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1798
                (new EditPrinButtonListener(tool, tw, this, edit));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1799
        TaggedList permList = new TaggedList(10, false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1800
        permList.getAccessibleContext().setAccessibleName(
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1801
                PolicyTool.getMessage("Permission.List"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1802
        permList.addMouseListener
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1803
                (new EditPermButtonListener(tool, tw, this, edit));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1804
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1805
        // find where the PolicyTool gui is
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1806
        Point location = tw.getLocationOnScreen();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1807
        //setBounds(location.x + 75, location.y + 200, 650, 500);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1808
        setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1809
        setResizable(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1810
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1811
        if (edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1812
            // get the selected item
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1813
            entries = tool.getEntry();
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1814
            @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  1815
            JList<String> policyList = (JList<String>)tw.getComponent(ToolWindow.MW_POLICY_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1816
            listIndex = policyList.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1817
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1818
            // get principal list
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  1819
            LinkedList<PolicyParser.PrincipalEntry> principals =
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1820
                entries[listIndex].getGrantEntry().principals;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1821
            for (int i = 0; i < principals.size(); i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1822
                String prinString = null;
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  1823
                PolicyParser.PrincipalEntry nextPrin = principals.get(i);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1824
                prinList.addTaggedItem(PrincipalEntryToUserFriendlyString(nextPrin), nextPrin);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1825
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1826
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1827
            // get permission list
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1828
            Vector<PolicyParser.PermissionEntry> permissions =
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1829
                entries[listIndex].getGrantEntry().permissionEntries;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1830
            for (int i = 0; i < permissions.size(); i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1831
                String permString = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1832
                PolicyParser.PermissionEntry nextPerm =
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1833
                                                permissions.elementAt(i);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1834
                permList.addTaggedItem(ToolDialog.PermissionEntryToUserFriendlyString(nextPerm), nextPerm);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1835
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1836
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1837
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1838
        // codebase label and textfield
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1839
        JLabel label = new JLabel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1840
        tw.addNewComponent(this, label, PE_CODEBASE_LABEL,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1841
                0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1842
                ToolWindow.R_PADDING);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1843
        JTextField tf;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1844
        tf = (edit ?
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1845
                new JTextField(entries[listIndex].getGrantEntry().codeBase) :
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1846
                new JTextField());
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1847
        ToolWindow.configureLabelFor(label, tf, "CodeBase.");
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1848
        tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1849
        tf.getAccessibleContext().setAccessibleName(
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1850
                PolicyTool.getMessage("Code.Base"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1851
        tw.addNewComponent(this, tf, PE_CODEBASE_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1852
                1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1853
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1854
        // signedby label and textfield
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1855
        label = new JLabel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1856
        tw.addNewComponent(this, label, PE_SIGNEDBY_LABEL,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1857
                           0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1858
                           ToolWindow.R_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1859
        tf = (edit ?
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1860
                new JTextField(entries[listIndex].getGrantEntry().signedBy) :
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1861
                new JTextField());
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1862
        ToolWindow.configureLabelFor(label, tf, "SignedBy.");
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1863
        tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1864
        tf.getAccessibleContext().setAccessibleName(
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1865
                PolicyTool.getMessage("Signed.By."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1866
        tw.addNewComponent(this, tf, PE_SIGNEDBY_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1867
                           1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1868
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1869
        // panel for principal buttons
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1870
        JPanel panel = new JPanel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1871
        panel.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1872
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1873
        JButton button = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1874
        ToolWindow.configureButton(button, "Add.Principal");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1875
        button.addActionListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1876
                (new AddPrinButtonListener(tool, tw, this, edit));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1877
        tw.addNewComponent(panel, button, PE_ADD_PRIN_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1878
                0, 0, 1, 1, 100.0, 0.0, GridBagConstraints.HORIZONTAL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1879
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1880
        button = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1881
        ToolWindow.configureButton(button, "Edit.Principal");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1882
        button.addActionListener(new EditPrinButtonListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1883
                                                (tool, tw, this, edit));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1884
        tw.addNewComponent(panel, button, PE_EDIT_PRIN_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1885
                1, 0, 1, 1, 100.0, 0.0, GridBagConstraints.HORIZONTAL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1886
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1887
        button = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1888
        ToolWindow.configureButton(button, "Remove.Principal");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1889
        button.addActionListener(new RemovePrinButtonListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1890
                                        (tool, tw, this, edit));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1891
        tw.addNewComponent(panel, button, PE_REMOVE_PRIN_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1892
                2, 0, 1, 1, 100.0, 0.0, GridBagConstraints.HORIZONTAL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1893
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1894
        tw.addNewComponent(this, panel, PE_PANEL0,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1895
                1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.HORIZONTAL,
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1896
                           ToolWindow.LITE_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1897
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1898
        // principal label and list
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1899
        label = new JLabel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1900
        tw.addNewComponent(this, label, PE_PRIN_LABEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1901
                           0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1902
                           ToolWindow.R_BOTTOM_PADDING);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1903
        JScrollPane scrollPane = new JScrollPane(prinList);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1904
        ToolWindow.configureLabelFor(label, scrollPane, "Principals.");
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1905
        tw.addNewComponent(this, scrollPane, PE_PRIN_LIST,
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1906
                           1, 3, 3, 1, 0.0, prinList.getVisibleRowCount(), GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  1907
                           ToolWindow.BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1908
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1909
        // panel for permission buttons
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1910
        panel = new JPanel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1911
        panel.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1912
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1913
        button = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1914
        ToolWindow.configureButton(button, ".Add.Permission");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1915
        button.addActionListener(new AddPermButtonListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1916
                                                (tool, tw, this, edit));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1917
        tw.addNewComponent(panel, button, PE_ADD_PERM_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1918
                0, 0, 1, 1, 100.0, 0.0, GridBagConstraints.HORIZONTAL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1919
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1920
        button = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1921
        ToolWindow.configureButton(button, ".Edit.Permission");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1922
        button.addActionListener(new EditPermButtonListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1923
                                                (tool, tw, this, edit));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1924
        tw.addNewComponent(panel, button, PE_EDIT_PERM_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1925
                1, 0, 1, 1, 100.0, 0.0, GridBagConstraints.HORIZONTAL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1926
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1927
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1928
        button = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1929
        ToolWindow.configureButton(button, "Remove.Permission");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1930
        button.addActionListener(new RemovePermButtonListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1931
                                        (tool, tw, this, edit));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1932
        tw.addNewComponent(panel, button, PE_REMOVE_PERM_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1933
                2, 0, 1, 1, 100.0, 0.0, GridBagConstraints.HORIZONTAL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1934
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1935
        tw.addNewComponent(this, panel, PE_PANEL1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1936
                0, 4, 2, 1, 0.0, 0.0, GridBagConstraints.HORIZONTAL,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  1937
                ToolWindow.LITE_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1938
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1939
        // permission list
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1940
        scrollPane = new JScrollPane(permList);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1941
        tw.addNewComponent(this, scrollPane, PE_PERM_LIST,
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1942
                           0, 5, 3, 1, 0.0, permList.getVisibleRowCount(), GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  1943
                           ToolWindow.BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1944
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1945
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1946
        // panel for Done and Cancel buttons
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1947
        panel = new JPanel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1948
        panel.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1949
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1950
        // Done Button
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1951
        JButton okButton = new JButton(PolicyTool.getMessage("Done"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1952
        okButton.addActionListener
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1953
                (new AddEntryDoneButtonListener(tool, tw, this, edit));
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1954
        tw.addNewComponent(panel, okButton, PE_DONE_BUTTON,
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1955
                           0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  1956
                           ToolWindow.LR_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1957
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1958
        // Cancel Button
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1959
        JButton cancelButton = new JButton(PolicyTool.getMessage("Cancel"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1960
        ActionListener cancelListener = new CancelButtonListener(this);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1961
        cancelButton.addActionListener(cancelListener);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1962
        tw.addNewComponent(panel, cancelButton, PE_CANCEL_BUTTON,
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1963
                           1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  1964
                           ToolWindow.LR_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1965
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1966
        // add the panel
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1967
        tw.addNewComponent(this, panel, PE_PANEL2,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1968
                0, 6, 2, 1, 0.0, 0.0, GridBagConstraints.VERTICAL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1969
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1970
        getRootPane().setDefaultButton(okButton);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1971
        getRootPane().registerKeyboardAction(cancelListener, escKey, JComponent.WHEN_IN_FOCUSED_WINDOW);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1972
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1973
        pack();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1974
        setLocationRelativeTo(tw);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1975
        setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1976
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1977
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1978
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1979
     * Read all the Policy information data in the dialog box
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1980
     * and construct a PolicyEntry object with it.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1981
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1982
    PolicyEntry getPolicyEntryFromDialog()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1983
        throws InvalidParameterException, MalformedURLException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1984
        NoSuchMethodException, ClassNotFoundException, InstantiationException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1985
        IllegalAccessException, InvocationTargetException,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1986
        CertificateException, IOException, Exception {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1987
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1988
        // get the Codebase
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1989
        JTextField tf = (JTextField)getComponent(PE_CODEBASE_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1990
        String codebase = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1991
        if (tf.getText().trim().equals("") == false)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1992
                codebase = new String(tf.getText().trim());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1993
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1994
        // get the SignedBy
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  1995
        tf = (JTextField)getComponent(PE_SIGNEDBY_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1996
        String signedby = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1997
        if (tf.getText().trim().equals("") == false)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1998
                signedby = new String(tf.getText().trim());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1999
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2000
        // construct a new GrantEntry
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2001
        PolicyParser.GrantEntry ge =
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2002
                        new PolicyParser.GrantEntry(signedby, codebase);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2003
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2004
        // get the new Principals
7977
f47f211cd627 7008713: diamond conversion of kerberos5 and security tools
smarks
parents: 7532
diff changeset
  2005
        LinkedList<PolicyParser.PrincipalEntry> prins = new LinkedList<>();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2006
        TaggedList prinList = (TaggedList)getComponent(PE_PRIN_LIST);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2007
        for (int i = 0; i < prinList.getModel().getSize(); i++) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2008
            prins.add((PolicyParser.PrincipalEntry)prinList.getObject(i));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2009
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2010
        ge.principals = prins;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2011
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2012
        // get the new Permissions
7977
f47f211cd627 7008713: diamond conversion of kerberos5 and security tools
smarks
parents: 7532
diff changeset
  2013
        Vector<PolicyParser.PermissionEntry> perms = new Vector<>();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2014
        TaggedList permList = (TaggedList)getComponent(PE_PERM_LIST);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2015
        for (int i = 0; i < permList.getModel().getSize(); i++) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2016
            perms.addElement((PolicyParser.PermissionEntry)permList.getObject(i));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2017
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2018
        ge.permissionEntries = perms;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2019
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2020
        // construct a new PolicyEntry object
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2021
        PolicyEntry entry = new PolicyEntry(tool, ge);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2022
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2023
        return entry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2024
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2025
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2026
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2027
     * display a dialog box for the user to enter KeyStore information
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2028
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2029
    void keyStoreDialog(int mode) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2030
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2031
        // find where the PolicyTool gui is
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2032
        Point location = tw.getLocationOnScreen();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2033
        //setBounds(location.x + 25, location.y + 100, 500, 300);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2034
        setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2035
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2036
        if (mode == EDIT_KEYSTORE) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2037
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2038
            // KeyStore label and textfield
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2039
            JLabel label = new JLabel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2040
            tw.addNewComponent(this, label, KSD_NAME_LABEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2041
                               0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2042
                               ToolWindow.R_BOTTOM_PADDING);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2043
            JTextField tf = new JTextField(tool.getKeyStoreName(), 30);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2044
            ToolWindow.configureLabelFor(label, tf, "KeyStore.URL.");
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2045
            tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2046
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2047
            // URL to U R L, so that accessibility reader will pronounce well
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2048
            tf.getAccessibleContext().setAccessibleName(
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2049
                PolicyTool.getMessage("KeyStore.U.R.L."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2050
            tw.addNewComponent(this, tf, KSD_NAME_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2051
                               1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2052
                               ToolWindow.BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2053
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2054
            // KeyStore type and textfield
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2055
            label = new JLabel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2056
            tw.addNewComponent(this, label, KSD_TYPE_LABEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2057
                               0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2058
                               ToolWindow.R_BOTTOM_PADDING);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2059
            tf = new JTextField(tool.getKeyStoreType(), 30);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2060
            ToolWindow.configureLabelFor(label, tf, "KeyStore.Type.");
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2061
            tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2062
            tf.getAccessibleContext().setAccessibleName(
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2063
                PolicyTool.getMessage("KeyStore.Type."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2064
            tw.addNewComponent(this, tf, KSD_TYPE_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2065
                               1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2066
                               ToolWindow.BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2067
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2068
            // KeyStore provider and textfield
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2069
            label = new JLabel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2070
            tw.addNewComponent(this, label, KSD_PROVIDER_LABEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2071
                               0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2072
                               ToolWindow.R_BOTTOM_PADDING);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2073
            tf = new JTextField(tool.getKeyStoreProvider(), 30);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2074
            ToolWindow.configureLabelFor(label, tf, "KeyStore.Provider.");
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2075
            tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2076
            tf.getAccessibleContext().setAccessibleName(
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2077
                PolicyTool.getMessage("KeyStore.Provider."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2078
            tw.addNewComponent(this, tf, KSD_PROVIDER_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2079
                               1, 2, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2080
                               ToolWindow.BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2081
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2082
            // KeyStore password URL and textfield
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2083
            label = new JLabel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2084
            tw.addNewComponent(this, label, KSD_PWD_URL_LABEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2085
                               0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2086
                               ToolWindow.R_BOTTOM_PADDING);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2087
            tf = new JTextField(tool.getKeyStorePwdURL(), 30);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2088
            ToolWindow.configureLabelFor(label, tf, "KeyStore.Password.URL.");
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2089
            tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2090
            tf.getAccessibleContext().setAccessibleName(
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2091
                PolicyTool.getMessage("KeyStore.Password.U.R.L."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2092
            tw.addNewComponent(this, tf, KSD_PWD_URL_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2093
                               1, 3, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2094
                               ToolWindow.BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2095
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2096
            // OK button
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2097
            JButton okButton = new JButton(PolicyTool.getMessage("OK"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2098
            okButton.addActionListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2099
                        (new ChangeKeyStoreOKButtonListener(tool, tw, this));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2100
            tw.addNewComponent(this, okButton, KSD_OK_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2101
                        0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2102
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2103
            // cancel button
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2104
            JButton cancelButton = new JButton(PolicyTool.getMessage("Cancel"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2105
            ActionListener cancelListener = new CancelButtonListener(this);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2106
            cancelButton.addActionListener(cancelListener);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2107
            tw.addNewComponent(this, cancelButton, KSD_CANCEL_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2108
                        1, 4, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2109
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2110
            getRootPane().setDefaultButton(okButton);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2111
            getRootPane().registerKeyboardAction(cancelListener, escKey, JComponent.WHEN_IN_FOCUSED_WINDOW);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2112
        }
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2113
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2114
        pack();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2115
        setLocationRelativeTo(tw);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2116
        setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2117
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2118
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2119
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2120
     * display a dialog box for the user to input Principal info
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2121
     *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2122
     * if editPolicyEntry is false, then we are adding Principals to
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2123
     * a new PolicyEntry, and we only update the GUI listing
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2124
     * with the new Principal.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2125
     *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2126
     * if edit is true, then we are editing an existing Policy entry.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2127
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2128
    void displayPrincipalDialog(boolean editPolicyEntry, boolean edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2129
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2130
        PolicyParser.PrincipalEntry editMe = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2131
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2132
        // get the Principal selected from the Principal List
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2133
        TaggedList prinList = (TaggedList)getComponent(PE_PRIN_LIST);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2134
        int prinIndex = prinList.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2135
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2136
        if (edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2137
            editMe = (PolicyParser.PrincipalEntry)prinList.getObject(prinIndex);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2138
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2139
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2140
        ToolDialog newTD = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2141
                (PolicyTool.getMessage("Principals"), tool, tw, true);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2142
        newTD.addWindowListener(new ChildWindowListener(newTD));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2143
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2144
        // find where the PolicyTool gui is
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2145
        Point location = getLocationOnScreen();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2146
        //newTD.setBounds(location.x + 50, location.y + 100, 650, 190);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2147
        newTD.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2148
        newTD.setResizable(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2149
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2150
        // description label
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2151
        JLabel label = (edit ?
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2152
                new JLabel(PolicyTool.getMessage(".Edit.Principal.")) :
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2153
                new JLabel(PolicyTool.getMessage(".Add.New.Principal.")));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2154
        tw.addNewComponent(newTD, label, PRD_DESC_LABEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2155
                           0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2156
                           ToolWindow.TOP_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2157
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2158
        // principal choice
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2159
        JComboBox<String> choice = new JComboBox<>();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2160
        choice.addItem(PRIN_TYPE);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2161
        choice.getAccessibleContext().setAccessibleName(PRIN_TYPE);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2162
        for (int i = 0; i < PRIN_ARRAY.size(); i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2163
            Prin next = PRIN_ARRAY.get(i);
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  2164
            choice.addItem(next.getSimpleName());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2165
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2166
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2167
        if (edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2168
            if (PolicyParser.PrincipalEntry.WILDCARD_CLASS.equals
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2169
                                (editMe.getPrincipalClass())) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2170
                choice.setSelectedItem(PRIN_TYPE);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2171
            } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2172
                Prin inputPrin = getPrin(editMe.getPrincipalClass(), true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2173
                if (inputPrin != null) {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  2174
                    choice.setSelectedItem(inputPrin.getSimpleName());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2175
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2176
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2177
        }
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2178
        // Add listener after selected item is set
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2179
        choice.addItemListener(new PrincipalTypeMenuListener(newTD));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2180
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2181
        tw.addNewComponent(newTD, choice, PRD_PRIN_CHOICE,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2182
                           0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2183
                           ToolWindow.LR_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2184
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2185
        // principal textfield
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2186
        JTextField tf;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2187
        tf = (edit ?
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2188
                new JTextField(editMe.getDisplayClass(), 30) :
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2189
                new JTextField(30));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2190
        tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2191
        tf.getAccessibleContext().setAccessibleName(PRIN_TYPE);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2192
        tw.addNewComponent(newTD, tf, PRD_PRIN_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2193
                           1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2194
                           ToolWindow.LR_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2195
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2196
        // name label and textfield
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2197
        label = new JLabel(PRIN_NAME);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2198
        tf = (edit ?
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2199
                new JTextField(editMe.getDisplayName(), 40) :
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2200
                new JTextField(40));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2201
        tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2202
        tf.getAccessibleContext().setAccessibleName(PRIN_NAME);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2203
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2204
        tw.addNewComponent(newTD, label, PRD_NAME_LABEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2205
                           0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2206
                           ToolWindow.LR_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2207
        tw.addNewComponent(newTD, tf, PRD_NAME_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2208
                           1, 2, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2209
                           ToolWindow.LR_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2210
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2211
        // OK button
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2212
        JButton okButton = new JButton(PolicyTool.getMessage("OK"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2213
        okButton.addActionListener(
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2214
            new NewPolicyPrinOKButtonListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2215
                                        (tool, tw, this, newTD, edit));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2216
        tw.addNewComponent(newTD, okButton, PRD_OK_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2217
                           0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2218
                           ToolWindow.TOP_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2219
        // cancel button
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2220
        JButton cancelButton = new JButton(PolicyTool.getMessage("Cancel"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2221
        ActionListener cancelListener = new CancelButtonListener(newTD);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2222
        cancelButton.addActionListener(cancelListener);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2223
        tw.addNewComponent(newTD, cancelButton, PRD_CANCEL_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2224
                           1, 3, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2225
                           ToolWindow.TOP_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2226
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2227
        newTD.getRootPane().setDefaultButton(okButton);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2228
        newTD.getRootPane().registerKeyboardAction(cancelListener, escKey, JComponent.WHEN_IN_FOCUSED_WINDOW);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2229
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2230
        newTD.pack();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2231
        newTD.setLocationRelativeTo(tw);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2232
        newTD.setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2233
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2234
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2235
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2236
     * display a dialog box for the user to input Permission info
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2237
     *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2238
     * if editPolicyEntry is false, then we are adding Permissions to
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2239
     * a new PolicyEntry, and we only update the GUI listing
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2240
     * with the new Permission.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2241
     *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2242
     * if edit is true, then we are editing an existing Permission entry.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2243
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2244
    void displayPermissionDialog(boolean editPolicyEntry, boolean edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2245
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2246
        PolicyParser.PermissionEntry editMe = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2247
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2248
        // get the Permission selected from the Permission List
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2249
        TaggedList permList = (TaggedList)getComponent(PE_PERM_LIST);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2250
        int permIndex = permList.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2251
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2252
        if (edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2253
            editMe = (PolicyParser.PermissionEntry)permList.getObject(permIndex);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2254
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2255
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2256
        ToolDialog newTD = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2257
                (PolicyTool.getMessage("Permissions"), tool, tw, true);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2258
        newTD.addWindowListener(new ChildWindowListener(newTD));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2259
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2260
        // find where the PolicyTool gui is
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2261
        Point location = getLocationOnScreen();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2262
        //newTD.setBounds(location.x + 50, location.y + 100, 700, 250);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2263
        newTD.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2264
        newTD.setResizable(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2265
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2266
        // description label
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2267
        JLabel label = (edit ?
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2268
                new JLabel(PolicyTool.getMessage(".Edit.Permission.")) :
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2269
                new JLabel(PolicyTool.getMessage(".Add.New.Permission.")));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2270
        tw.addNewComponent(newTD, label, PD_DESC_LABEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2271
                           0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2272
                           ToolWindow.TOP_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2273
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2274
        // permission choice (added in alphabetical order)
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2275
        JComboBox<String> choice = new JComboBox<>();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2276
        choice.addItem(PERM);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2277
        choice.getAccessibleContext().setAccessibleName(PERM);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2278
        for (int i = 0; i < PERM_ARRAY.size(); i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2279
            Perm next = PERM_ARRAY.get(i);
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  2280
            choice.addItem(next.getSimpleName());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2281
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2282
        tw.addNewComponent(newTD, choice, PD_PERM_CHOICE,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2283
                           0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2284
                           ToolWindow.LR_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2285
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2286
        // permission textfield
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2287
        JTextField tf;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2288
        tf = (edit ? new JTextField(editMe.permission, 30) : new JTextField(30));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2289
        tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2290
        tf.getAccessibleContext().setAccessibleName(PERM);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2291
        if (edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2292
            Perm inputPerm = getPerm(editMe.permission, true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2293
            if (inputPerm != null) {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  2294
                choice.setSelectedItem(inputPerm.getSimpleName());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2295
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2296
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2297
        tw.addNewComponent(newTD, tf, PD_PERM_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2298
                           1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH,
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2299
                           ToolWindow.LR_BOTTOM_PADDING);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2300
        choice.addItemListener(new PermissionMenuListener(newTD));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2301
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2302
        // name label and textfield
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2303
        choice = new JComboBox<>();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2304
        choice.addItem(PERM_NAME);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2305
        choice.getAccessibleContext().setAccessibleName(PERM_NAME);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2306
        tf = (edit ? new JTextField(editMe.name, 40) : new JTextField(40));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2307
        tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2308
        tf.getAccessibleContext().setAccessibleName(PERM_NAME);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2309
        if (edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2310
            setPermissionNames(getPerm(editMe.permission, true), choice, tf);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2311
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2312
        tw.addNewComponent(newTD, choice, PD_NAME_CHOICE,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2313
                           0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2314
                           ToolWindow.LR_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2315
        tw.addNewComponent(newTD, tf, PD_NAME_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2316
                           1, 2, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH,
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2317
                           ToolWindow.LR_BOTTOM_PADDING);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2318
        choice.addItemListener(new PermissionNameMenuListener(newTD));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2319
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2320
        // actions label and textfield
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2321
        choice = new JComboBox<>();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2322
        choice.addItem(PERM_ACTIONS);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2323
        choice.getAccessibleContext().setAccessibleName(PERM_ACTIONS);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2324
        tf = (edit ? new JTextField(editMe.action, 40) : new JTextField(40));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2325
        tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2326
        tf.getAccessibleContext().setAccessibleName(PERM_ACTIONS);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2327
        if (edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2328
            setPermissionActions(getPerm(editMe.permission, true), choice, tf);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2329
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2330
        tw.addNewComponent(newTD, choice, PD_ACTIONS_CHOICE,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2331
                           0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2332
                           ToolWindow.LR_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2333
        tw.addNewComponent(newTD, tf, PD_ACTIONS_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2334
                           1, 3, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH,
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2335
                           ToolWindow.LR_BOTTOM_PADDING);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2336
        choice.addItemListener(new PermissionActionsMenuListener(newTD));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2337
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2338
        // signedby label and textfield
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2339
        label = new JLabel(PolicyTool.getMessage("Signed.By."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2340
        tw.addNewComponent(newTD, label, PD_SIGNEDBY_LABEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2341
                           0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2342
                           ToolWindow.LR_BOTTOM_PADDING);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2343
        tf = (edit ? new JTextField(editMe.signedBy, 40) : new JTextField(40));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2344
        tf.setPreferredSize(new Dimension(tf.getPreferredSize().width, TEXTFIELD_HEIGHT));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2345
        tf.getAccessibleContext().setAccessibleName(
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2346
                PolicyTool.getMessage("Signed.By."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2347
        tw.addNewComponent(newTD, tf, PD_SIGNEDBY_TEXTFIELD,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2348
                           1, 4, 1, 1, 1.0, 0.0, GridBagConstraints.BOTH,
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2349
                           ToolWindow.LR_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2350
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2351
        // OK button
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2352
        JButton okButton = new JButton(PolicyTool.getMessage("OK"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2353
        okButton.addActionListener(
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2354
            new NewPolicyPermOKButtonListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2355
                                    (tool, tw, this, newTD, edit));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2356
        tw.addNewComponent(newTD, okButton, PD_OK_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2357
                           0, 5, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2358
                           ToolWindow.TOP_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2359
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2360
        // cancel button
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2361
        JButton cancelButton = new JButton(PolicyTool.getMessage("Cancel"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2362
        ActionListener cancelListener = new CancelButtonListener(newTD);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2363
        cancelButton.addActionListener(cancelListener);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2364
        tw.addNewComponent(newTD, cancelButton, PD_CANCEL_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2365
                           1, 5, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2366
                           ToolWindow.TOP_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2367
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2368
        newTD.getRootPane().setDefaultButton(okButton);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2369
        newTD.getRootPane().registerKeyboardAction(cancelListener, escKey, JComponent.WHEN_IN_FOCUSED_WINDOW);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2370
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2371
        newTD.pack();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2372
        newTD.setLocationRelativeTo(tw);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2373
        newTD.setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2374
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2375
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2376
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2377
     * construct a Principal object from the Principal Info Dialog Box
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2378
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2379
    PolicyParser.PrincipalEntry getPrinFromDialog() throws Exception {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2380
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2381
        JTextField tf = (JTextField)getComponent(PRD_PRIN_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2382
        String pclass = new String(tf.getText().trim());
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2383
        tf = (JTextField)getComponent(PRD_NAME_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2384
        String pname = new String(tf.getText().trim());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2385
        if (pclass.equals("*")) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2386
            pclass = PolicyParser.PrincipalEntry.WILDCARD_CLASS;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2387
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2388
        if (pname.equals("*")) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2389
            pname = PolicyParser.PrincipalEntry.WILDCARD_NAME;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2390
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2391
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2392
        PolicyParser.PrincipalEntry pppe = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2393
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2394
        if ((pclass.equals(PolicyParser.PrincipalEntry.WILDCARD_CLASS)) &&
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2395
            (!pname.equals(PolicyParser.PrincipalEntry.WILDCARD_NAME))) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2396
            throw new Exception
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2397
                        (PolicyTool.getMessage("Cannot.Specify.Principal.with.a.Wildcard.Class.without.a.Wildcard.Name"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2398
        } else if (pname.equals("")) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2399
            throw new Exception
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2400
                        (PolicyTool.getMessage("Cannot.Specify.Principal.without.a.Name"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2401
        } else if (pclass.equals("")) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2402
            // make this consistent with what PolicyParser does
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2403
            // when it sees an empty principal class
15013
4a17ca431caf 7019834: Eliminate dependency from PolicyFile to com.sun.security.auth.PrincipalComparator
mullan
parents: 14182
diff changeset
  2404
            pclass = PolicyParser.PrincipalEntry.REPLACE_NAME;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2405
            tool.warnings.addElement(
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2406
                        "Warning: Principal name '" + pname +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2407
                                "' specified without a Principal class.\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2408
                        "\t'" + pname + "' will be interpreted " +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2409
                                "as a key store alias.\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2410
                        "\tThe final principal class will be " +
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  2411
                                X500Principal.class.getName() + ".\n" +
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2412
                        "\tThe final principal name will be " +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2413
                                "determined by the following:\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2414
                        "\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2415
                        "\tIf the key store entry identified by '"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2416
                                + pname + "'\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2417
                        "\tis a key entry, then the principal name will be\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2418
                        "\tthe subject distinguished name from the first\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2419
                        "\tcertificate in the entry's certificate chain.\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2420
                        "\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2421
                        "\tIf the key store entry identified by '" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2422
                                pname + "'\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2423
                        "\tis a trusted certificate entry, then the\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2424
                        "\tprincipal name will be the subject distinguished\n" +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2425
                        "\tname from the trusted public key certificate.");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2426
            tw.displayStatusDialog(this,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2427
                        "'" + pname + "' will be interpreted as a key " +
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2428
                        "store alias.  View Warning Log for details.");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2429
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2430
        return new PolicyParser.PrincipalEntry(pclass, pname);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2431
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2432
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2433
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2434
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2435
     * construct a Permission object from the Permission Info Dialog Box
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2436
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2437
    PolicyParser.PermissionEntry getPermFromDialog() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2438
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2439
        JTextField tf = (JTextField)getComponent(PD_PERM_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2440
        String permission = new String(tf.getText().trim());
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2441
        tf = (JTextField)getComponent(PD_NAME_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2442
        String name = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2443
        if (tf.getText().trim().equals("") == false)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2444
            name = new String(tf.getText().trim());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2445
        if (permission.equals("") ||
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  2446
            (!permission.equals(AllPermission.class.getName()) && name == null)) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2447
            throw new InvalidParameterException(PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  2448
                ("Permission.and.Target.Name.must.have.a.value"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2449
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2450
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2451
        // When the permission is FilePermission, we need to check the name
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2452
        // to make sure it's not escaped. We believe --
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2453
        //
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2454
        // String             name.lastIndexOf("\\\\")
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2455
        // ----------------   ------------------------
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2456
        // c:\foo\bar         -1, legal
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2457
        // c:\\foo\\bar       2, illegal
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2458
        // \\server\share     0, legal
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2459
        // \\\\server\share   2, illegal
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2460
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  2461
        if (permission.equals(FilePermission.class.getName())
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  2462
                && name.lastIndexOf("\\\\") > 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2463
            char result = tw.displayYesNoDialog(this,
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2464
                    PolicyTool.getMessage("Warning"),
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2465
                    PolicyTool.getMessage(
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  2466
                        "Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes"),
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2467
                    PolicyTool.getMessage("Retain"),
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2468
                    PolicyTool.getMessage("Edit")
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2469
                    );
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2470
            if (result != 'Y') {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2471
                // an invisible exception
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2472
                throw new NoDisplayException();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2473
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2474
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2475
        // get the Actions
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2476
        tf = (JTextField)getComponent(PD_ACTIONS_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2477
        String actions = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2478
        if (tf.getText().trim().equals("") == false)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2479
            actions = new String(tf.getText().trim());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2480
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2481
        // get the Signed By
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2482
        tf = (JTextField)getComponent(PD_SIGNEDBY_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2483
        String signedBy = null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2484
        if (tf.getText().trim().equals("") == false)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2485
            signedBy = new String(tf.getText().trim());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2486
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2487
        PolicyParser.PermissionEntry pppe = new PolicyParser.PermissionEntry
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2488
                                (permission, name, actions);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2489
        pppe.signedBy = signedBy;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2490
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2491
        // see if the signers have public keys
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2492
        if (signedBy != null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2493
                String signers[] = tool.parseSigners(pppe.signedBy);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2494
                for (int i = 0; i < signers.length; i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2495
                try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2496
                    PublicKey pubKey = tool.getPublicKeyAlias(signers[i]);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2497
                    if (pubKey == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2498
                        MessageFormat form = new MessageFormat
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2499
                            (PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  2500
                            ("Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2501
                        Object[] source = {signers[i]};
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2502
                        tool.warnings.addElement(form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2503
                        tw.displayStatusDialog(this, form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2504
                    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2505
                } catch (Exception e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2506
                    tw.displayErrorDialog(this, e);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2507
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2508
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2509
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2510
        return pppe;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2511
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2512
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2513
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2514
     * confirm that the user REALLY wants to remove the Policy Entry
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2515
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2516
    void displayConfirmRemovePolicyEntry() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2517
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2518
        // find the entry to be removed
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2519
        @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2520
        JList<String> list = (JList<String>)tw.getComponent(ToolWindow.MW_POLICY_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2521
        int index = list.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2522
        PolicyEntry entries[] = tool.getEntry();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2523
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2524
        // find where the PolicyTool gui is
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2525
        Point location = tw.getLocationOnScreen();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2526
        //setBounds(location.x + 25, location.y + 100, 600, 400);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2527
        setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2528
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2529
        // ask the user do they really want to do this?
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2530
        JLabel label = new JLabel
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2531
                (PolicyTool.getMessage("Remove.this.Policy.Entry."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2532
        tw.addNewComponent(this, label, CRPE_LABEL1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2533
                           0, 0, 2, 1, 0.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2534
                           ToolWindow.BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2535
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2536
        // display the policy entry
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2537
        label = new JLabel(entries[index].codebaseToString());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2538
        tw.addNewComponent(this, label, CRPE_LABEL2,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2539
                        0, 1, 2, 1, 0.0, 0.0, GridBagConstraints.BOTH);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2540
        label = new JLabel(entries[index].principalsToString().trim());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2541
        tw.addNewComponent(this, label, CRPE_LABEL2+1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2542
                        0, 2, 2, 1, 0.0, 0.0, GridBagConstraints.BOTH);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2543
        Vector<PolicyParser.PermissionEntry> perms =
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2544
                        entries[index].getGrantEntry().permissionEntries;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2545
        for (int i = 0; i < perms.size(); i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2546
            PolicyParser.PermissionEntry nextPerm = perms.elementAt(i);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2547
            String permString = ToolDialog.PermissionEntryToUserFriendlyString(nextPerm);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2548
            label = new JLabel("    " + permString);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2549
            if (i == (perms.size()-1)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2550
                tw.addNewComponent(this, label, CRPE_LABEL2 + 2 + i,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2551
                                 1, 3 + i, 1, 1, 0.0, 0.0,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2552
                                 GridBagConstraints.BOTH,
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2553
                                 ToolWindow.BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2554
            } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2555
                tw.addNewComponent(this, label, CRPE_LABEL2 + 2 + i,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2556
                                 1, 3 + i, 1, 1, 0.0, 0.0,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2557
                                 GridBagConstraints.BOTH);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2558
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2559
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2560
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2561
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2562
        // add OK/CANCEL buttons in a new panel
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2563
        JPanel panel = new JPanel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2564
        panel.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2565
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2566
        // OK button
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2567
        JButton okButton = new JButton(PolicyTool.getMessage("OK"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2568
        okButton.addActionListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2569
                (new ConfirmRemovePolicyEntryOKButtonListener(tool, tw, this));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2570
        tw.addNewComponent(panel, okButton, CRPE_PANEL_OK,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2571
                           0, 0, 1, 1, 0.0, 0.0,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2572
                           GridBagConstraints.VERTICAL, ToolWindow.LR_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2573
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2574
        // cancel button
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2575
        JButton cancelButton = new JButton(PolicyTool.getMessage("Cancel"));
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2576
        ActionListener cancelListener = new CancelButtonListener(this);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2577
        cancelButton.addActionListener(cancelListener);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2578
        tw.addNewComponent(panel, cancelButton, CRPE_PANEL_CANCEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2579
                           1, 0, 1, 1, 0.0, 0.0,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2580
                           GridBagConstraints.VERTICAL, ToolWindow.LR_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2581
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2582
        tw.addNewComponent(this, panel, CRPE_LABEL2 + 2 + perms.size(),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2583
                           0, 3 + perms.size(), 2, 1, 0.0, 0.0,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2584
                           GridBagConstraints.VERTICAL, ToolWindow.TOP_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2585
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2586
        getRootPane().setDefaultButton(okButton);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2587
        getRootPane().registerKeyboardAction(cancelListener, escKey, JComponent.WHEN_IN_FOCUSED_WINDOW);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2588
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2589
        pack();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2590
        setLocationRelativeTo(tw);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2591
        setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2592
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2593
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2594
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2595
     * perform SAVE AS
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2596
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2597
    void displaySaveAsDialog(int nextEvent) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2598
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2599
        // pop up a dialog box for the user to enter a filename.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2600
        FileDialog fd = new FileDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2601
                (tw, PolicyTool.getMessage("Save.As"), FileDialog.SAVE);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2602
        fd.addWindowListener(new WindowAdapter() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2603
            public void windowClosing(WindowEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2604
                e.getWindow().setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2605
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2606
        });
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2607
        fd.setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2608
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2609
        // see if the user hit cancel
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2610
        if (fd.getFile() == null ||
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2611
            fd.getFile().equals(""))
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2612
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2613
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2614
        // get the entered filename
7532
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2615
        File saveAsFile = new File(fd.getDirectory(), fd.getFile());
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2616
        String filename = saveAsFile.getPath();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2617
        fd.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2618
7532
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2619
        try {
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2620
            // save the policy entries to a file
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2621
            tool.savePolicy(filename);
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2622
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2623
            // display status
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2624
            MessageFormat form = new MessageFormat(PolicyTool.getMessage
7532
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2625
                    ("Policy.successfully.written.to.filename"));
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2626
            Object[] source = {filename};
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2627
            tw.displayStatusDialog(null, form.format(source));
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2628
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2629
            // display the new policy filename
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2630
            JTextField newFilename = (JTextField)tw.getComponent
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2631
                            (ToolWindow.MW_FILENAME_TEXTFIELD);
7532
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2632
            newFilename.setText(filename);
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2633
            tw.setVisible(true);
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2634
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2635
            // now continue with the originally requested command
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2636
            // (QUIT, NEW, or OPEN)
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2637
            userSaveContinue(tool, tw, this, nextEvent);
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2638
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2639
        } catch (FileNotFoundException fnfe) {
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2640
            if (filename == null || filename.equals("")) {
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2641
                tw.displayErrorDialog(null, new FileNotFoundException
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2642
                            (PolicyTool.getMessage("null.filename")));
7532
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2643
            } else {
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2644
                tw.displayErrorDialog(null, fnfe);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2645
            }
7532
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2646
        } catch (Exception ee) {
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2647
            tw.displayErrorDialog(null, ee);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2648
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2649
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2650
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2651
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2652
     * ask user if they want to save changes
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2653
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2654
    void displayUserSave(int select) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2655
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2656
        if (tool.modified == true) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2657
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2658
            // find where the PolicyTool gui is
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2659
            Point location = tw.getLocationOnScreen();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2660
            //setBounds(location.x + 75, location.y + 100, 400, 150);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2661
            setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2662
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2663
            JLabel label = new JLabel
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2664
                (PolicyTool.getMessage("Save.changes."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2665
            tw.addNewComponent(this, label, USC_LABEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2666
                               0, 0, 3, 1, 0.0, 0.0, GridBagConstraints.BOTH,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2667
                               ToolWindow.L_TOP_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2668
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2669
            JPanel panel = new JPanel();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2670
            panel.setLayout(new GridBagLayout());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2671
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2672
            JButton yesButton = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2673
            ToolWindow.configureButton(yesButton, "Yes");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2674
            yesButton.addActionListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2675
                        (new UserSaveYesButtonListener(this, tool, tw, select));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2676
            tw.addNewComponent(panel, yesButton, USC_YES_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2677
                               0, 0, 1, 1, 0.0, 0.0,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2678
                               GridBagConstraints.VERTICAL,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2679
                               ToolWindow.LR_BOTTOM_PADDING);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2680
            JButton noButton = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2681
            ToolWindow.configureButton(noButton, "No");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2682
            noButton.addActionListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2683
                        (new UserSaveNoButtonListener(this, tool, tw, select));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2684
            tw.addNewComponent(panel, noButton, USC_NO_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2685
                               1, 0, 1, 1, 0.0, 0.0,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2686
                               GridBagConstraints.VERTICAL,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2687
                               ToolWindow.LR_BOTTOM_PADDING);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2688
            JButton cancelButton = new JButton();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2689
            ToolWindow.configureButton(cancelButton, "Cancel");
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2690
            ActionListener cancelListener = new CancelButtonListener(this);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2691
            cancelButton.addActionListener(cancelListener);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2692
            tw.addNewComponent(panel, cancelButton, USC_CANCEL_BUTTON,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2693
                               2, 0, 1, 1, 0.0, 0.0,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2694
                               GridBagConstraints.VERTICAL,
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2695
                               ToolWindow.LR_BOTTOM_PADDING);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2696
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2697
            tw.addNewComponent(this, panel, USC_PANEL,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2698
                               0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.BOTH);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2699
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2700
            getRootPane().registerKeyboardAction(cancelListener, escKey, JComponent.WHEN_IN_FOCUSED_WINDOW);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2701
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2702
            pack();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2703
            setLocationRelativeTo(tw);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2704
            setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2705
        } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2706
            // just do the original request (QUIT, NEW, or OPEN)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2707
            userSaveContinue(tool, tw, this, select);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2708
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2709
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2710
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2711
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2712
     * when the user sees the 'YES', 'NO', 'CANCEL' buttons on the
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2713
     * displayUserSave dialog, and the click on one of them,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2714
     * we need to continue the originally requested action
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2715
     * (either QUITting, opening NEW policy file, or OPENing an existing
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2716
     * policy file.  do that now.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2717
     */
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2718
    @SuppressWarnings("fallthrough")
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2719
    void userSaveContinue(PolicyTool tool, ToolWindow tw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2720
                        ToolDialog us, int select) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2721
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2722
        // now either QUIT, open a NEW policy file, or OPEN an existing policy
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2723
        switch(select) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2724
        case ToolDialog.QUIT:
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2725
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2726
            tw.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2727
            tw.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2728
            System.exit(0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2729
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2730
        case ToolDialog.NEW:
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2731
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2732
            try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2733
                tool.openPolicy(null);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2734
            } catch (Exception ee) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2735
                tool.modified = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2736
                tw.displayErrorDialog(null, ee);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2737
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2738
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2739
            // display the policy entries via the policy list textarea
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2740
            JList<String> list = new JList<>(new DefaultListModel<>());
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2741
            list.setVisibleRowCount(15);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2742
            list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2743
            list.addMouseListener(new PolicyListListener(tool, tw));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2744
            tw.replacePolicyList(list);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2745
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2746
            // display null policy filename and keystore
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2747
            JTextField newFilename = (JTextField)tw.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2748
                    ToolWindow.MW_FILENAME_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2749
            newFilename.setText("");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2750
            tw.setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2751
            break;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2752
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2753
        case ToolDialog.OPEN:
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2754
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2755
            // pop up a dialog box for the user to enter a filename.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2756
            FileDialog fd = new FileDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2757
                (tw, PolicyTool.getMessage("Open"), FileDialog.LOAD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2758
            fd.addWindowListener(new WindowAdapter() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2759
                public void windowClosing(WindowEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2760
                    e.getWindow().setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2761
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2762
            });
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2763
            fd.setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2764
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2765
            // see if the user hit 'cancel'
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2766
            if (fd.getFile() == null ||
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2767
                fd.getFile().equals(""))
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2768
                return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2769
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2770
            // get the entered filename
7532
d16a3eaa26c6 6986825: policytool can not save file.
weijun
parents: 7179
diff changeset
  2771
            String policyFile = new File(fd.getDirectory(), fd.getFile()).getPath();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2772
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2773
            try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2774
                // open the policy file
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2775
                tool.openPolicy(policyFile);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2776
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2777
                // display the policy entries via the policy list textarea
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2778
                DefaultListModel<String> listModel = new DefaultListModel<>();
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2779
                list = new JList<>(listModel);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2780
                list.setVisibleRowCount(15);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2781
                list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2782
                list.addMouseListener(new PolicyListListener(tool, tw));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2783
                PolicyEntry entries[] = tool.getEntry();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2784
                if (entries != null) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2785
                    for (int i = 0; i < entries.length; i++) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2786
                        listModel.addElement(entries[i].headerToString());
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2787
                    }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2788
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2789
                tw.replacePolicyList(list);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2790
                tool.modified = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2791
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2792
                // display the new policy filename
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2793
                newFilename = (JTextField)tw.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2794
                        ToolWindow.MW_FILENAME_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2795
                newFilename.setText(policyFile);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2796
                tw.setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2797
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2798
                // inform user of warnings
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2799
                if (tool.newWarning == true) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2800
                    tw.displayStatusDialog(null, PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  2801
                        ("Errors.have.occurred.while.opening.the.policy.configuration.View.the.Warning.Log.for.more.information."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2802
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2803
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2804
            } catch (Exception e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2805
                // add blank policy listing
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2806
                list = new JList<>(new DefaultListModel<>());
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2807
                list.setVisibleRowCount(15);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2808
                list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2809
                list.addMouseListener(new PolicyListListener(tool, tw));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2810
                tw.replacePolicyList(list);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2811
                tool.setPolicyFileName(null);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2812
                tool.modified = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2813
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2814
                // display a null policy filename
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2815
                newFilename = (JTextField)tw.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  2816
                        ToolWindow.MW_FILENAME_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2817
                newFilename.setText("");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2818
                tw.setVisible(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2819
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2820
                // display the error
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2821
                MessageFormat form = new MessageFormat(PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  2822
                    ("Could.not.open.policy.file.policyFile.e.toString."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2823
                Object[] source = {policyFile, e.toString()};
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2824
                tw.displayErrorDialog(null, form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2825
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2826
            break;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2827
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2828
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2829
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2830
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2831
     * Return a Menu list of names for a given permission
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2832
     *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2833
     * If inputPerm's TARGETS are null, then this means TARGETS are
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2834
     * not allowed to be entered (and the TextField is set to be
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2835
     * non-editable).
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2836
     *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2837
     * If TARGETS are valid but there are no standard ones
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2838
     * (user must enter them by hand) then the TARGETS array may be empty
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2839
     * (and of course non-null).
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2840
     */
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2841
    void setPermissionNames(Perm inputPerm, JComboBox<String> names, JTextField field) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2842
        names.removeAllItems();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2843
        names.addItem(PERM_NAME);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2844
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2845
        if (inputPerm == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2846
            // custom permission
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2847
            field.setEditable(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2848
        } else if (inputPerm.TARGETS == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2849
            // standard permission with no targets
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2850
            field.setEditable(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2851
        } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2852
            // standard permission with standard targets
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2853
            field.setEditable(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2854
            for (int i = 0; i < inputPerm.TARGETS.length; i++) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2855
                names.addItem(inputPerm.TARGETS[i]);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2856
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2857
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2858
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2859
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2860
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2861
     * Return a Menu list of actions for a given permission
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2862
     *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2863
     * If inputPerm's ACTIONS are null, then this means ACTIONS are
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2864
     * not allowed to be entered (and the TextField is set to be
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2865
     * non-editable).  This is typically true for BasicPermissions.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2866
     *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2867
     * If ACTIONS are valid but there are no standard ones
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2868
     * (user must enter them by hand) then the ACTIONS array may be empty
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2869
     * (and of course non-null).
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2870
     */
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  2871
    void setPermissionActions(Perm inputPerm, JComboBox<String> actions, JTextField field) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2872
        actions.removeAllItems();
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2873
        actions.addItem(PERM_ACTIONS);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2874
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2875
        if (inputPerm == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2876
            // custom permission
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2877
            field.setEditable(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2878
        } else if (inputPerm.ACTIONS == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2879
            // standard permission with no actions
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2880
            field.setEditable(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2881
        } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2882
            // standard permission with standard actions
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2883
            field.setEditable(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2884
            for (int i = 0; i < inputPerm.ACTIONS.length; i++) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2885
                actions.addItem(inputPerm.ACTIONS[i]);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2886
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2887
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2888
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2889
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2890
    static String PermissionEntryToUserFriendlyString(PolicyParser.PermissionEntry pppe) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2891
        String result = pppe.permission;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2892
        if (pppe.name != null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2893
            result += " " + pppe.name;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2894
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2895
        if (pppe.action != null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2896
            result += ", \"" + pppe.action + "\"";
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2897
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2898
        if (pppe.signedBy != null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2899
            result += ", signedBy " + pppe.signedBy;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2900
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2901
        return result;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2902
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2903
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2904
    static String PrincipalEntryToUserFriendlyString(PolicyParser.PrincipalEntry pppe) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2905
        StringWriter sw = new StringWriter();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2906
        PrintWriter pw = new PrintWriter(sw);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2907
        pppe.write(pw);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2908
        return sw.toString();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2909
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2910
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2911
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2912
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2913
 * Event handler for the PolicyTool window
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2914
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2915
class ToolWindowListener implements WindowListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2916
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2917
    private PolicyTool tool;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2918
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2919
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2920
    ToolWindowListener(PolicyTool tool, ToolWindow tw) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2921
        this.tool = tool;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2922
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2923
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2924
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2925
    public void windowOpened(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2926
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2927
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2928
    public void windowClosing(WindowEvent we) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2929
        // Closing the window acts the same as choosing Menu->Exit.
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2930
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2931
        // ask user if they want to save changes
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2932
        ToolDialog td = new ToolDialog(PolicyTool.getMessage("Save.Changes"), tool, tw, true);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2933
        td.displayUserSave(ToolDialog.QUIT);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2934
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2935
        // the above method will perform the QUIT as long as the
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2936
        // user does not CANCEL the request
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2937
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2938
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2939
    public void windowClosed(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2940
        System.exit(0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2941
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2942
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2943
    public void windowIconified(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2944
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2945
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2946
    public void windowDeiconified(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2947
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2948
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2949
    public void windowActivated(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2950
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2951
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2952
    public void windowDeactivated(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2953
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2954
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2955
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2956
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2957
 * Event handler for the Policy List
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2958
 */
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2959
class PolicyListListener extends MouseAdapter implements ActionListener {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2960
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2961
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2962
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2963
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2964
    PolicyListListener(PolicyTool tool, ToolWindow tw) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2965
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2966
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2967
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2968
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2969
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2970
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2971
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2972
        // display the permission list for a policy entry
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2973
        ToolDialog td = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2974
                (PolicyTool.getMessage("Policy.Entry"), tool, tw, true);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2975
        td.displayPolicyEntryDialog(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2976
    }
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2977
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2978
    public void mouseClicked(MouseEvent evt) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2979
        if (evt.getClickCount() == 2) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2980
            actionPerformed(null);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2981
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  2982
    }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2983
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2984
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2985
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2986
 * Event handler for the File Menu
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2987
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2988
class FileMenuListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2989
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2990
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2991
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2992
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2993
    FileMenuListener(PolicyTool tool, ToolWindow tw) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2994
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2995
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2996
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2997
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2998
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  2999
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3000
        if (PolicyTool.collator.compare(e.getActionCommand(),
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3001
                                       ToolWindow.QUIT) == 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3002
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3003
            // ask user if they want to save changes
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3004
            ToolDialog td = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3005
                (PolicyTool.getMessage("Save.Changes"), tool, tw, true);
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3006
            td.displayUserSave(ToolDialog.QUIT);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3007
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3008
            // the above method will perform the QUIT as long as the
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3009
            // user does not CANCEL the request
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3010
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3011
        } else if (PolicyTool.collator.compare(e.getActionCommand(),
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3012
                                   ToolWindow.NEW_POLICY_FILE) == 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3013
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3014
            // ask user if they want to save changes
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3015
            ToolDialog td = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3016
                (PolicyTool.getMessage("Save.Changes"), tool, tw, true);
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3017
            td.displayUserSave(ToolDialog.NEW);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3018
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3019
            // the above method will perform the NEW as long as the
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3020
            // user does not CANCEL the request
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3021
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3022
        } else if (PolicyTool.collator.compare(e.getActionCommand(),
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3023
                                  ToolWindow.OPEN_POLICY_FILE) == 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3024
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3025
            // ask user if they want to save changes
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3026
            ToolDialog td = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3027
                (PolicyTool.getMessage("Save.Changes"), tool, tw, true);
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3028
            td.displayUserSave(ToolDialog.OPEN);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3029
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3030
            // the above method will perform the OPEN as long as the
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3031
            // user does not CANCEL the request
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3032
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3033
        } else if (PolicyTool.collator.compare(e.getActionCommand(),
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3034
                                  ToolWindow.SAVE_POLICY_FILE) == 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3035
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3036
            // get the previously entered filename
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3037
            String filename = ((JTextField)tw.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3038
                    ToolWindow.MW_FILENAME_TEXTFIELD)).getText();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3039
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3040
            // if there is no filename, do a SAVE_AS
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3041
            if (filename == null || filename.length() == 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3042
                // user wants to SAVE AS
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3043
                ToolDialog td = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3044
                        (PolicyTool.getMessage("Save.As"), tool, tw, true);
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3045
                td.displaySaveAsDialog(ToolDialog.NOACTION);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3046
            } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3047
                try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3048
                    // save the policy entries to a file
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3049
                    tool.savePolicy(filename);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3050
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3051
                    // display status
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3052
                    MessageFormat form = new MessageFormat
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3053
                        (PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  3054
                        ("Policy.successfully.written.to.filename"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3055
                    Object[] source = {filename};
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3056
                    tw.displayStatusDialog(null, form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3057
                } catch (FileNotFoundException fnfe) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3058
                    if (filename == null || filename.equals("")) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3059
                        tw.displayErrorDialog(null, new FileNotFoundException
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3060
                                (PolicyTool.getMessage("null.filename")));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3061
                    } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3062
                        tw.displayErrorDialog(null, fnfe);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3063
                    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3064
                } catch (Exception ee) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3065
                    tw.displayErrorDialog(null, ee);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3066
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3067
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3068
        } else if (PolicyTool.collator.compare(e.getActionCommand(),
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3069
                               ToolWindow.SAVE_AS_POLICY_FILE) == 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3070
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3071
            // user wants to SAVE AS
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3072
            ToolDialog td = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3073
                (PolicyTool.getMessage("Save.As"), tool, tw, true);
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3074
            td.displaySaveAsDialog(ToolDialog.NOACTION);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3075
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3076
        } else if (PolicyTool.collator.compare(e.getActionCommand(),
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3077
                                     ToolWindow.VIEW_WARNINGS) == 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3078
            tw.displayWarningLog(null);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3079
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3080
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3081
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3082
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3083
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3084
 * Event handler for the main window buttons and Edit Menu
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3085
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3086
class MainWindowListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3087
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3088
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3089
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3090
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3091
    MainWindowListener(PolicyTool tool, ToolWindow tw) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3092
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3093
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3094
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3095
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3096
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3097
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3098
        if (PolicyTool.collator.compare(e.getActionCommand(),
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3099
                           ToolWindow.ADD_POLICY_ENTRY) == 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3100
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3101
            // display a dialog box for the user to enter policy info
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3102
            ToolDialog td = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3103
                (PolicyTool.getMessage("Policy.Entry"), tool, tw, true);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3104
            td.displayPolicyEntryDialog(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3105
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3106
        } else if (PolicyTool.collator.compare(e.getActionCommand(),
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3107
                               ToolWindow.REMOVE_POLICY_ENTRY) == 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3108
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3109
            // get the selected entry
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3110
            @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3111
            JList<String> list = (JList<String>)tw.getComponent(ToolWindow.MW_POLICY_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3112
            int index = list.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3113
            if (index < 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3114
                tw.displayErrorDialog(null, new Exception
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3115
                        (PolicyTool.getMessage("No.Policy.Entry.selected")));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3116
                return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3117
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3118
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3119
            // ask the user if they really want to remove the policy entry
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3120
            ToolDialog td = new ToolDialog(PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  3121
                ("Remove.Policy.Entry"), tool, tw, true);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3122
            td.displayConfirmRemovePolicyEntry();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3123
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3124
        } else if (PolicyTool.collator.compare(e.getActionCommand(),
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3125
                                 ToolWindow.EDIT_POLICY_ENTRY) == 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3126
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3127
            // get the selected entry
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3128
            @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3129
            JList<String> list = (JList<String>)tw.getComponent(ToolWindow.MW_POLICY_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3130
            int index = list.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3131
            if (index < 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3132
                tw.displayErrorDialog(null, new Exception
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3133
                        (PolicyTool.getMessage("No.Policy.Entry.selected")));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3134
                return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3135
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3136
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3137
            // display the permission list for a policy entry
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3138
            ToolDialog td = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3139
                (PolicyTool.getMessage("Policy.Entry"), tool, tw, true);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3140
            td.displayPolicyEntryDialog(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3141
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3142
        } else if (PolicyTool.collator.compare(e.getActionCommand(),
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3143
                                     ToolWindow.EDIT_KEYSTORE) == 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3144
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3145
            // display a dialog box for the user to enter keystore info
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3146
            ToolDialog td = new ToolDialog
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3147
                (PolicyTool.getMessage("KeyStore"), tool, tw, true);
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3148
            td.keyStoreDialog(ToolDialog.EDIT_KEYSTORE);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3149
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3150
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3151
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3152
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3153
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3154
 * Event handler for AddEntryDoneButton button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3155
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3156
 * -- if edit is TRUE, then we are EDITing an existing PolicyEntry
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3157
 *    and we need to update both the policy and the GUI listing.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3158
 *    if edit is FALSE, then we are ADDing a new PolicyEntry,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3159
 *    so we only need to update the GUI listing.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3160
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3161
class AddEntryDoneButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3162
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3163
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3164
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3165
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3166
    private boolean edit;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3167
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3168
    AddEntryDoneButtonListener(PolicyTool tool, ToolWindow tw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3169
                                ToolDialog td, boolean edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3170
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3171
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3172
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3173
        this.edit = edit;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3174
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3175
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3176
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3177
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3178
        try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3179
            // get a PolicyEntry object from the dialog policy info
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3180
            PolicyEntry newEntry = td.getPolicyEntryFromDialog();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3181
            PolicyParser.GrantEntry newGe = newEntry.getGrantEntry();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3182
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3183
            // see if all the signers have public keys
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3184
            if (newGe.signedBy != null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3185
                String signers[] = tool.parseSigners(newGe.signedBy);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3186
                for (int i = 0; i < signers.length; i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3187
                    PublicKey pubKey = tool.getPublicKeyAlias(signers[i]);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3188
                    if (pubKey == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3189
                        MessageFormat form = new MessageFormat
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3190
                            (PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  3191
                            ("Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3192
                        Object[] source = {signers[i]};
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3193
                        tool.warnings.addElement(form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3194
                        tw.displayStatusDialog(td, form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3195
                    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3196
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3197
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3198
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3199
            // add the entry
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3200
            @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3201
            JList<String> policyList = (JList<String>)tw.getComponent(ToolWindow.MW_POLICY_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3202
            if (edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3203
                int listIndex = policyList.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3204
                tool.addEntry(newEntry, listIndex);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3205
                String newCodeBaseStr = newEntry.headerToString();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3206
                if (PolicyTool.collator.compare
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3207
                        (newCodeBaseStr, policyList.getModel().getElementAt(listIndex)) != 0)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3208
                    tool.modified = true;
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3209
                ((DefaultListModel<String>)policyList.getModel()).set(listIndex, newCodeBaseStr);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3210
            } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3211
                tool.addEntry(newEntry, -1);
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3212
                ((DefaultListModel<String>)policyList.getModel()).addElement(newEntry.headerToString());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3213
                tool.modified = true;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3214
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3215
            td.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3216
            td.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3217
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3218
        } catch (Exception eee) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3219
            tw.displayErrorDialog(td, eee);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3220
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3221
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3222
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3223
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3224
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3225
 * Event handler for ChangeKeyStoreOKButton button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3226
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3227
class ChangeKeyStoreOKButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3228
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3229
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3230
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3231
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3232
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3233
    ChangeKeyStoreOKButtonListener(PolicyTool tool, ToolWindow tw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3234
                ToolDialog td) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3235
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3236
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3237
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3238
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3239
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3240
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3241
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3242
        String URLString = ((JTextField)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3243
                ToolDialog.KSD_NAME_TEXTFIELD)).getText().trim();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3244
        String type = ((JTextField)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3245
                ToolDialog.KSD_TYPE_TEXTFIELD)).getText().trim();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3246
        String provider = ((JTextField)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3247
                ToolDialog.KSD_PROVIDER_TEXTFIELD)).getText().trim();
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3248
        String pwdURL = ((JTextField)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3249
                ToolDialog.KSD_PWD_URL_TEXTFIELD)).getText().trim();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3250
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3251
        try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3252
            tool.openKeyStore
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3253
                        ((URLString.length() == 0 ? null : URLString),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3254
                        (type.length() == 0 ? null : type),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3255
                        (provider.length() == 0 ? null : provider),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3256
                        (pwdURL.length() == 0 ? null : pwdURL));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3257
            tool.modified = true;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3258
        } catch (Exception ex) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3259
            MessageFormat form = new MessageFormat(PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  3260
                ("Unable.to.open.KeyStore.ex.toString."));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3261
            Object[] source = {ex.toString()};
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3262
            tw.displayErrorDialog(td, form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3263
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3264
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3265
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3266
        td.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3267
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3268
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3269
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3270
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3271
 * Event handler for AddPrinButton button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3272
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3273
class AddPrinButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3274
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3275
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3276
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3277
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3278
    private boolean editPolicyEntry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3279
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3280
    AddPrinButtonListener(PolicyTool tool, ToolWindow tw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3281
                                ToolDialog td, boolean editPolicyEntry) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3282
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3283
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3284
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3285
        this.editPolicyEntry = editPolicyEntry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3286
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3287
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3288
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3289
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3290
        // display a dialog box for the user to enter principal info
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3291
        td.displayPrincipalDialog(editPolicyEntry, false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3292
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3293
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3294
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3295
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3296
 * Event handler for AddPermButton button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3297
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3298
class AddPermButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3299
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3300
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3301
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3302
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3303
    private boolean editPolicyEntry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3304
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3305
    AddPermButtonListener(PolicyTool tool, ToolWindow tw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3306
                                ToolDialog td, boolean editPolicyEntry) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3307
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3308
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3309
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3310
        this.editPolicyEntry = editPolicyEntry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3311
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3312
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3313
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3314
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3315
        // display a dialog box for the user to enter permission info
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3316
        td.displayPermissionDialog(editPolicyEntry, false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3317
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3318
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3319
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3320
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3321
 * Event handler for AddPrinOKButton button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3322
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3323
class NewPolicyPrinOKButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3324
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3325
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3326
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3327
    private ToolDialog listDialog;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3328
    private ToolDialog infoDialog;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3329
    private boolean edit;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3330
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3331
    NewPolicyPrinOKButtonListener(PolicyTool tool,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3332
                                ToolWindow tw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3333
                                ToolDialog listDialog,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3334
                                ToolDialog infoDialog,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3335
                                boolean edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3336
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3337
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3338
        this.listDialog = listDialog;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3339
        this.infoDialog = infoDialog;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3340
        this.edit = edit;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3341
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3342
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3343
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3344
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3345
        try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3346
            // read in the new principal info from Dialog Box
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3347
            PolicyParser.PrincipalEntry pppe =
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3348
                        infoDialog.getPrinFromDialog();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3349
            if (pppe != null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3350
                try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3351
                    tool.verifyPrincipal(pppe.getPrincipalClass(),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3352
                                        pppe.getPrincipalName());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3353
                } catch (ClassNotFoundException cnfe) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3354
                    MessageFormat form = new MessageFormat
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3355
                                (PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  3356
                                ("Warning.Class.not.found.class"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3357
                    Object[] source = {pppe.getPrincipalClass()};
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3358
                    tool.warnings.addElement(form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3359
                    tw.displayStatusDialog(infoDialog, form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3360
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3361
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3362
                // add the principal to the GUI principal list
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3363
                TaggedList prinList =
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3364
                    (TaggedList)listDialog.getComponent(ToolDialog.PE_PRIN_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3365
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3366
                String prinString = ToolDialog.PrincipalEntryToUserFriendlyString(pppe);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3367
                if (edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3368
                    // if editing, replace the original principal
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3369
                    int index = prinList.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3370
                    prinList.replaceTaggedItem(prinString, pppe, index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3371
                } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3372
                    // if adding, just add it to the end
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3373
                    prinList.addTaggedItem(prinString, pppe);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3374
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3375
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3376
            infoDialog.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3377
        } catch (Exception ee) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3378
            tw.displayErrorDialog(infoDialog, ee);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3379
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3380
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3381
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3382
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3383
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3384
 * Event handler for AddPermOKButton button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3385
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3386
class NewPolicyPermOKButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3387
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3388
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3389
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3390
    private ToolDialog listDialog;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3391
    private ToolDialog infoDialog;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3392
    private boolean edit;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3393
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3394
    NewPolicyPermOKButtonListener(PolicyTool tool,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3395
                                ToolWindow tw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3396
                                ToolDialog listDialog,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3397
                                ToolDialog infoDialog,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3398
                                boolean edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3399
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3400
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3401
        this.listDialog = listDialog;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3402
        this.infoDialog = infoDialog;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3403
        this.edit = edit;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3404
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3405
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3406
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3407
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3408
        try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3409
            // read in the new permission info from Dialog Box
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3410
            PolicyParser.PermissionEntry pppe =
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3411
                        infoDialog.getPermFromDialog();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3412
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3413
            try {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3414
                tool.verifyPermission(pppe.permission, pppe.name, pppe.action);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3415
            } catch (ClassNotFoundException cnfe) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3416
                MessageFormat form = new MessageFormat(PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  3417
                                ("Warning.Class.not.found.class"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3418
                Object[] source = {pppe.permission};
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3419
                tool.warnings.addElement(form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3420
                tw.displayStatusDialog(infoDialog, form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3421
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3422
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3423
            // add the permission to the GUI permission list
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3424
            TaggedList permList =
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3425
                (TaggedList)listDialog.getComponent(ToolDialog.PE_PERM_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3426
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3427
            String permString = ToolDialog.PermissionEntryToUserFriendlyString(pppe);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3428
            if (edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3429
                // if editing, replace the original permission
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3430
                int which = permList.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3431
                permList.replaceTaggedItem(permString, pppe, which);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3432
            } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3433
                // if adding, just add it to the end
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3434
                permList.addTaggedItem(permString, pppe);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3435
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3436
            infoDialog.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3437
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3438
        } catch (InvocationTargetException ite) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3439
            tw.displayErrorDialog(infoDialog, ite.getTargetException());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3440
        } catch (Exception ee) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3441
            tw.displayErrorDialog(infoDialog, ee);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3442
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3443
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3444
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3445
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3446
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3447
 * Event handler for RemovePrinButton button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3448
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3449
class RemovePrinButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3450
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3451
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3452
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3453
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3454
    private boolean edit;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3455
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3456
    RemovePrinButtonListener(PolicyTool tool, ToolWindow tw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3457
                                ToolDialog td, boolean edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3458
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3459
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3460
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3461
        this.edit = edit;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3462
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3463
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3464
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3465
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3466
        // get the Principal selected from the Principal List
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3467
        TaggedList prinList = (TaggedList)td.getComponent(
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3468
                ToolDialog.PE_PRIN_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3469
        int prinIndex = prinList.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3470
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3471
        if (prinIndex < 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3472
            tw.displayErrorDialog(td, new Exception
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3473
                (PolicyTool.getMessage("No.principal.selected")));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3474
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3475
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3476
        // remove the principal from the display
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3477
        prinList.removeTaggedItem(prinIndex);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3478
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3479
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3480
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3481
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3482
 * Event handler for RemovePermButton button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3483
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3484
class RemovePermButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3485
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3486
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3487
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3488
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3489
    private boolean edit;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3490
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3491
    RemovePermButtonListener(PolicyTool tool, ToolWindow tw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3492
                                ToolDialog td, boolean edit) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3493
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3494
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3495
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3496
        this.edit = edit;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3497
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3498
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3499
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3500
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3501
        // get the Permission selected from the Permission List
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3502
        TaggedList permList = (TaggedList)td.getComponent(
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3503
                ToolDialog.PE_PERM_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3504
        int permIndex = permList.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3505
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3506
        if (permIndex < 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3507
            tw.displayErrorDialog(td, new Exception
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3508
                (PolicyTool.getMessage("No.permission.selected")));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3509
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3510
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3511
        // remove the permission from the display
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3512
        permList.removeTaggedItem(permIndex);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3513
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3514
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3515
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3516
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3517
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3518
 * Event handler for Edit Principal button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3519
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3520
 * We need the editPolicyEntry boolean to tell us if the user is
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3521
 * adding a new PolicyEntry at this time, or editing an existing entry.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3522
 * If the user is adding a new PolicyEntry, we ONLY update the
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3523
 * GUI listing.  If the user is editing an existing PolicyEntry, we
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3524
 * update both the GUI listing and the actual PolicyEntry.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3525
 */
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3526
class EditPrinButtonListener extends MouseAdapter implements ActionListener {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3527
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3528
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3529
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3530
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3531
    private boolean editPolicyEntry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3532
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3533
    EditPrinButtonListener(PolicyTool tool, ToolWindow tw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3534
                                ToolDialog td, boolean editPolicyEntry) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3535
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3536
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3537
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3538
        this.editPolicyEntry = editPolicyEntry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3539
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3540
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3541
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3542
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3543
        // get the Principal selected from the Principal List
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3544
        TaggedList list = (TaggedList)td.getComponent(
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3545
                ToolDialog.PE_PRIN_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3546
        int prinIndex = list.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3547
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3548
        if (prinIndex < 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3549
            tw.displayErrorDialog(td, new Exception
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3550
                (PolicyTool.getMessage("No.principal.selected")));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3551
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3552
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3553
        td.displayPrincipalDialog(editPolicyEntry, true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3554
    }
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3555
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3556
    public void mouseClicked(MouseEvent evt) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3557
        if (evt.getClickCount() == 2) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3558
            actionPerformed(null);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3559
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3560
    }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3561
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3562
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3563
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3564
 * Event handler for Edit Permission button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3565
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3566
 * We need the editPolicyEntry boolean to tell us if the user is
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3567
 * adding a new PolicyEntry at this time, or editing an existing entry.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3568
 * If the user is adding a new PolicyEntry, we ONLY update the
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3569
 * GUI listing.  If the user is editing an existing PolicyEntry, we
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3570
 * update both the GUI listing and the actual PolicyEntry.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3571
 */
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3572
class EditPermButtonListener extends MouseAdapter implements ActionListener {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3573
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3574
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3575
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3576
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3577
    private boolean editPolicyEntry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3578
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3579
    EditPermButtonListener(PolicyTool tool, ToolWindow tw,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3580
                                ToolDialog td, boolean editPolicyEntry) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3581
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3582
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3583
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3584
        this.editPolicyEntry = editPolicyEntry;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3585
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3586
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3587
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3588
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3589
        // get the Permission selected from the Permission List
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3590
        @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3591
        JList<String> list = (JList<String>)td.getComponent(ToolDialog.PE_PERM_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3592
        int permIndex = list.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3593
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3594
        if (permIndex < 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3595
            tw.displayErrorDialog(td, new Exception
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3596
                (PolicyTool.getMessage("No.permission.selected")));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3597
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3598
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3599
        td.displayPermissionDialog(editPolicyEntry, true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3600
    }
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3601
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3602
    public void mouseClicked(MouseEvent evt) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3603
        if (evt.getClickCount() == 2) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3604
            actionPerformed(null);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3605
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3606
    }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3607
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3608
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3609
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3610
 * Event handler for Principal Popup Menu
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3611
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3612
class PrincipalTypeMenuListener implements ItemListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3613
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3614
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3615
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3616
    PrincipalTypeMenuListener(ToolDialog td) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3617
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3618
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3619
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3620
    public void itemStateChanged(ItemEvent e) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3621
        if (e.getStateChange() == ItemEvent.DESELECTED) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3622
            // We're only interested in SELECTED events
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3623
            return;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3624
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3625
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3626
        @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3627
        JComboBox<String> prin = (JComboBox<String>)td.getComponent(ToolDialog.PRD_PRIN_CHOICE);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3628
        JTextField prinField = (JTextField)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3629
                ToolDialog.PRD_PRIN_TEXTFIELD);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3630
        JTextField nameField = (JTextField)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3631
                ToolDialog.PRD_NAME_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3632
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3633
        prin.getAccessibleContext().setAccessibleName(
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3634
            PolicyTool.splitToWords((String)e.getItem()));
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3635
        if (((String)e.getItem()).equals(ToolDialog.PRIN_TYPE)) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3636
            // ignore if they choose "Principal Type:" item
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3637
            if (prinField.getText() != null &&
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3638
                prinField.getText().length() > 0) {
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3639
                Prin inputPrin = ToolDialog.getPrin(prinField.getText(), true);
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  3640
                prin.setSelectedItem(inputPrin.getSimpleName());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3641
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3642
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3643
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3644
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3645
        // if you change the principal, clear the name
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3646
        if (prinField.getText().indexOf((String)e.getItem()) == -1) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3647
            nameField.setText("");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3648
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3649
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3650
        // set the text in the textfield and also modify the
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3651
        // pull-down choice menus to reflect the correct possible
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3652
        // set of names and actions
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3653
        Prin inputPrin = ToolDialog.getPrin((String)e.getItem(), false);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3654
        if (inputPrin != null) {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  3655
            prinField.setText(inputPrin.getName());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3656
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3657
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3658
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3659
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3660
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3661
 * Event handler for Permission Popup Menu
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3662
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3663
class PermissionMenuListener implements ItemListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3664
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3665
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3666
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3667
    PermissionMenuListener(ToolDialog td) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3668
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3669
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3670
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3671
    public void itemStateChanged(ItemEvent e) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3672
        if (e.getStateChange() == ItemEvent.DESELECTED) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3673
            // We're only interested in SELECTED events
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3674
            return;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3675
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3676
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3677
        @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3678
        JComboBox<String> perms = (JComboBox<String>)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3679
                ToolDialog.PD_PERM_CHOICE);
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3680
        @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3681
        JComboBox<String> names = (JComboBox<String>)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3682
                ToolDialog.PD_NAME_CHOICE);
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3683
        @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3684
        JComboBox<String> actions = (JComboBox<String>)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3685
                ToolDialog.PD_ACTIONS_CHOICE);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3686
        JTextField nameField = (JTextField)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3687
                ToolDialog.PD_NAME_TEXTFIELD);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3688
        JTextField actionsField = (JTextField)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3689
                ToolDialog.PD_ACTIONS_TEXTFIELD);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3690
        JTextField permField = (JTextField)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3691
                ToolDialog.PD_PERM_TEXTFIELD);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3692
        JTextField signedbyField = (JTextField)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3693
                ToolDialog.PD_SIGNEDBY_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3694
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3695
        perms.getAccessibleContext().setAccessibleName(
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3696
            PolicyTool.splitToWords((String)e.getItem()));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3697
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3698
        // ignore if they choose the 'Permission:' item
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3699
        if (PolicyTool.collator.compare((String)e.getItem(),
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3700
                                      ToolDialog.PERM) == 0) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3701
            if (permField.getText() != null &&
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3702
                permField.getText().length() > 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3703
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3704
                Perm inputPerm = ToolDialog.getPerm(permField.getText(), true);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3705
                if (inputPerm != null) {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  3706
                    perms.setSelectedItem(inputPerm.getSimpleName());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3707
                }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3708
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3709
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3710
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3711
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3712
        // if you change the permission, clear the name, actions, and signedBy
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3713
        if (permField.getText().indexOf((String)e.getItem()) == -1) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3714
            nameField.setText("");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3715
            actionsField.setText("");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3716
            signedbyField.setText("");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3717
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3718
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3719
        // set the text in the textfield and also modify the
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3720
        // pull-down choice menus to reflect the correct possible
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3721
        // set of names and actions
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3722
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3723
        Perm inputPerm = ToolDialog.getPerm((String)e.getItem(), false);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3724
        if (inputPerm == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3725
            permField.setText("");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3726
        } else {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  3727
            permField.setText(inputPerm.getName());
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3728
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3729
        td.setPermissionNames(inputPerm, names, nameField);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3730
        td.setPermissionActions(inputPerm, actions, actionsField);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3731
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3732
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3733
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3734
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3735
 * Event handler for Permission Name Popup Menu
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3736
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3737
class PermissionNameMenuListener implements ItemListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3738
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3739
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3740
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3741
    PermissionNameMenuListener(ToolDialog td) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3742
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3743
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3744
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3745
    public void itemStateChanged(ItemEvent e) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3746
        if (e.getStateChange() == ItemEvent.DESELECTED) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3747
            // We're only interested in SELECTED events
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3748
            return;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3749
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3750
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3751
        @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3752
        JComboBox<String> names = (JComboBox<String>)td.getComponent(ToolDialog.PD_NAME_CHOICE);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3753
        names.getAccessibleContext().setAccessibleName(
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3754
            PolicyTool.splitToWords((String)e.getItem()));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3755
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3756
        if (((String)e.getItem()).indexOf(ToolDialog.PERM_NAME) != -1)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3757
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3758
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3759
        JTextField tf = (JTextField)td.getComponent(ToolDialog.PD_NAME_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3760
        tf.setText((String)e.getItem());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3761
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3762
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3763
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3764
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3765
 * Event handler for Permission Actions Popup Menu
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3766
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3767
class PermissionActionsMenuListener implements ItemListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3768
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3769
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3770
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3771
    PermissionActionsMenuListener(ToolDialog td) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3772
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3773
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3774
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3775
    public void itemStateChanged(ItemEvent e) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3776
        if (e.getStateChange() == ItemEvent.DESELECTED) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3777
            // We're only interested in SELECTED events
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3778
            return;
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3779
        }
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3780
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3781
        @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  3782
        JComboBox<String> actions = (JComboBox<String>)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3783
                ToolDialog.PD_ACTIONS_CHOICE);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3784
        actions.getAccessibleContext().setAccessibleName((String)e.getItem());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3785
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3786
        if (((String)e.getItem()).indexOf(ToolDialog.PERM_ACTIONS) != -1)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3787
            return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3788
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3789
        JTextField tf = (JTextField)td.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3790
                ToolDialog.PD_ACTIONS_TEXTFIELD);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3791
        if (tf.getText() == null || tf.getText().equals("")) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3792
            tf.setText((String)e.getItem());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3793
        } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3794
            if (tf.getText().indexOf((String)e.getItem()) == -1)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3795
                tf.setText(tf.getText() + ", " + (String)e.getItem());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3796
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3797
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3798
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3799
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3800
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3801
 * Event handler for all the children dialogs/windows
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3802
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3803
class ChildWindowListener implements WindowListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3804
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3805
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3806
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3807
    ChildWindowListener(ToolDialog td) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3808
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3809
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3810
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3811
    public void windowOpened(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3812
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3813
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3814
    public void windowClosing(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3815
        // same as pressing the "cancel" button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3816
        td.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3817
        td.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3818
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3819
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3820
    public void windowClosed(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3821
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3822
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3823
    public void windowIconified(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3824
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3825
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3826
    public void windowDeiconified(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3827
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3828
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3829
    public void windowActivated(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3830
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3831
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3832
    public void windowDeactivated(WindowEvent we) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3833
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3834
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3835
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3836
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3837
 * Event handler for CancelButton button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3838
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3839
class CancelButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3840
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3841
    private ToolDialog td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3842
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3843
    CancelButtonListener(ToolDialog td) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3844
        this.td = td;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3845
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3846
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3847
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3848
        td.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3849
        td.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3850
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3851
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3852
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3853
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3854
 * Event handler for ErrorOKButton button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3855
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3856
class ErrorOKButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3857
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3858
    private ToolDialog ed;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3859
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3860
    ErrorOKButtonListener(ToolDialog ed) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3861
        this.ed = ed;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3862
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3863
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3864
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3865
        ed.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3866
        ed.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3867
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3868
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3869
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3870
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3871
 * Event handler for StatusOKButton button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3872
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3873
class StatusOKButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3874
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3875
    private ToolDialog sd;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3876
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3877
    StatusOKButtonListener(ToolDialog sd) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3878
        this.sd = sd;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3879
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3880
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3881
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3882
        sd.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3883
        sd.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3884
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3885
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3886
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3887
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3888
 * Event handler for UserSaveYes button
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3889
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3890
class UserSaveYesButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3891
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3892
    private ToolDialog us;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3893
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3894
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3895
    private int select;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3896
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3897
    UserSaveYesButtonListener(ToolDialog us, PolicyTool tool,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3898
                        ToolWindow tw, int select) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3899
        this.us = us;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3900
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3901
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3902
        this.select = select;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3903
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3904
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3905
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3906
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3907
        // first get rid of the window
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3908
        us.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3909
        us.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3910
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3911
        try {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3912
            String filename = ((JTextField)tw.getComponent(
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  3913
                    ToolWindow.MW_FILENAME_TEXTFIELD)).getText();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3914
            if (filename == null || filename.equals("")) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3915
                us.displaySaveAsDialog(select);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3916
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3917
                // the above dialog will continue with the originally
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3918
                // requested command if necessary
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3919
            } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3920
                // save the policy entries to a file
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3921
                tool.savePolicy(filename);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3922
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3923
                // display status
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3924
                MessageFormat form = new MessageFormat
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  3925
                        (PolicyTool.getMessage
7179
4afb81e50183 6987827: security/util/Resources.java needs improvement
weijun
parents: 6542
diff changeset
  3926
                        ("Policy.successfully.written.to.filename"));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3927
                Object[] source = {filename};
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3928
                tw.displayStatusDialog(null, form.format(source));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3929
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3930
                // now continue with the originally requested command
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3931
                // (QUIT, NEW, or OPEN)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3932
                us.userSaveContinue(tool, tw, us, select);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3933
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3934
        } catch (Exception ee) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3935
            // error -- just report it and bail
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3936
            tw.displayErrorDialog(null, ee);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3937
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3938
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3939
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3940
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3941
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3942
 * Event handler for UserSaveNoButton
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3943
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3944
class UserSaveNoButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3945
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3946
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3947
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3948
    private ToolDialog us;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3949
    private int select;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3950
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3951
    UserSaveNoButtonListener(ToolDialog us, PolicyTool tool,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3952
                        ToolWindow tw, int select) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3953
        this.us = us;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3954
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3955
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3956
        this.select = select;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3957
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3958
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3959
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3960
        us.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3961
        us.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3962
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3963
        // now continue with the originally requested command
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3964
        // (QUIT, NEW, or OPEN)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3965
        us.userSaveContinue(tool, tw, us, select);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3966
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3967
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3968
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3969
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3970
 * Event handler for UserSaveCancelButton
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3971
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3972
class UserSaveCancelButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3973
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3974
    private ToolDialog us;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3975
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3976
    UserSaveCancelButtonListener(ToolDialog us) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3977
        this.us = us;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3978
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3979
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3980
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3981
        us.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3982
        us.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3983
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3984
        // do NOT continue with the originally requested command
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3985
        // (QUIT, NEW, or OPEN)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3986
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3987
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3988
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3989
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3990
 * Event handler for ConfirmRemovePolicyEntryOKButtonListener
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3991
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3992
class ConfirmRemovePolicyEntryOKButtonListener implements ActionListener {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3993
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3994
    private PolicyTool tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3995
    private ToolWindow tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3996
    private ToolDialog us;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3997
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3998
    ConfirmRemovePolicyEntryOKButtonListener(PolicyTool tool,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  3999
                                ToolWindow tw, ToolDialog us) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4000
        this.tool = tool;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4001
        this.tw = tw;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4002
        this.us = us;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4003
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4004
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4005
    public void actionPerformed(ActionEvent e) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4006
        // remove the entry
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  4007
        @SuppressWarnings("unchecked")
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  4008
        JList<String> list = (JList<String>)tw.getComponent(ToolWindow.MW_POLICY_LIST);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4009
        int index = list.getSelectedIndex();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4010
        PolicyEntry entries[] = tool.getEntry();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4011
        tool.removeEntry(entries[index]);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4012
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4013
        // redraw the window listing
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  4014
        DefaultListModel<String> listModel = new DefaultListModel<>();
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  4015
        list = new JList<>(listModel);
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4016
        list.setVisibleRowCount(15);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4017
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4018
        list.addMouseListener(new PolicyListListener(tool, tw));
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4019
        entries = tool.getEntry();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4020
        if (entries != null) {
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4021
                for (int i = 0; i < entries.length; i++) {
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4022
                    listModel.addElement(entries[i].headerToString());
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4023
                }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4024
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4025
        tw.replacePolicyList(list);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4026
        us.setVisible(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4027
        us.dispose();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4028
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4029
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4030
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4031
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4032
 * Just a special name, so that the codes dealing with this exception knows
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4033
 * it's special, and does not pop out a warning box.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4034
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4035
class NoDisplayException extends RuntimeException {
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  4036
    private static final long serialVersionUID = -4611761427108719794L;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4037
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4038
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4039
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4040
 * This is a java.awt.List that bind an Object to each String it holds.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4041
 */
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  4042
class TaggedList extends JList<String> {
10336
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  4043
    private static final long serialVersionUID = -5676238110427785853L;
0bb1999251f8 7064075: Security libraries don't build with javac -Xlint:all,-deprecation -Werror
jjg
parents: 9035
diff changeset
  4044
7977
f47f211cd627 7008713: diamond conversion of kerberos5 and security tools
smarks
parents: 7532
diff changeset
  4045
    private java.util.List<Object> data = new LinkedList<>();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4046
    public TaggedList(int i, boolean b) {
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  4047
        super(new DefaultListModel<>());
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4048
        setVisibleRowCount(i);
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4049
        setSelectionMode(b ? ListSelectionModel.MULTIPLE_INTERVAL_SELECTION : ListSelectionModel.SINGLE_SELECTION);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4050
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4051
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4052
    public Object getObject(int index) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4053
        return data.get(index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4054
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4055
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4056
    public void addTaggedItem(String string, Object object) {
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  4057
        ((DefaultListModel<String>)getModel()).addElement(string);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4058
        data.add(object);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4059
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4060
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4061
    public void replaceTaggedItem(String string, Object object, int index) {
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  4062
        ((DefaultListModel<String>)getModel()).set(index, string);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4063
        data.set(index, object);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4064
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4065
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4066
    public void removeTaggedItem(int index) {
22059
3ad91a1b7495 8030084: Fix lint warnings in sun.security.tools.policytool
darcy
parents: 21365
diff changeset
  4067
        ((DefaultListModel<String>)getModel()).remove(index);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4068
        data.remove(index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4069
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4070
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4071
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4072
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4073
 * Convenience Principal Classes
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4074
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4075
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4076
class Prin {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4077
    final Class<? extends Principal> CLASS;
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4078
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4079
    Prin(Class<? extends Principal> clazz) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4080
        this.CLASS = clazz;
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4081
    }
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4082
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4083
    String getName() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4084
        return CLASS.getName();
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4085
    }
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4086
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4087
    String getSimpleName() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4088
        return CLASS.getSimpleName();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4089
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4090
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4091
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4092
class KrbPrin extends Prin {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4093
    KrbPrin() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4094
        super(javax.security.auth.kerberos.KerberosPrincipal.class);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4095
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4096
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4097
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4098
class X500Prin extends Prin {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4099
    X500Prin() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4100
        super(javax.security.auth.x500.X500Principal.class);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4101
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4102
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4103
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4104
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4105
 * Convenience Permission Classes
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4106
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4107
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4108
class Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4109
    final Class<? extends Permission> CLASS;
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4110
    final String[] TARGETS;
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4111
    final String[] ACTIONS;
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4112
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4113
    Perm(Class<? extends Permission> clazz,
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4114
                String[] targets, String[] actions) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4115
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4116
        this.CLASS = clazz;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4117
        this.TARGETS = targets;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4118
        this.ACTIONS = actions;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4119
    }
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4120
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4121
    String getName() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4122
        return CLASS.getName();
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4123
    }
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4124
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4125
    String getSimpleName() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4126
        return CLASS.getSimpleName();
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4127
    }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4128
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4129
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4130
class AllPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4131
    AllPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4132
        super(java.security.AllPermission.class, null, null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4133
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4134
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4135
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4136
class AudioPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4137
    AudioPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4138
        super(javax.sound.sampled.AudioPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4139
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4140
                "play",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4141
                "record"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4142
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4143
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4144
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4145
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4146
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4147
class AuthPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4148
    AuthPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4149
        super(javax.security.auth.AuthPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4150
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4151
                "doAs",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4152
                "doAsPrivileged",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4153
                "getSubject",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4154
                "getSubjectFromDomainCombiner",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4155
                "setReadOnly",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4156
                "modifyPrincipals",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4157
                "modifyPublicCredentials",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4158
                "modifyPrivateCredentials",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4159
                "refreshCredential",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4160
                "destroyCredential",
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4161
                "createLoginContext.<" + PolicyTool.getMessage("name") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4162
                "getLoginConfiguration",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4163
                "setLoginConfiguration",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4164
                "createLoginConfiguration.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4165
                        PolicyTool.getMessage("configuration.type") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4166
                "refreshLoginConfiguration"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4167
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4168
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4169
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4170
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4171
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4172
class AWTPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4173
    AWTPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4174
        super(java.awt.AWTPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4175
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4176
                "accessClipboard",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4177
                "accessEventQueue",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4178
                "accessSystemTray",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4179
                "createRobot",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4180
                "fullScreenExclusive",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4181
                "listenToAllAWTEvents",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4182
                "readDisplayPixels",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4183
                "replaceKeyboardFocusManager",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4184
                "setAppletStub",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4185
                "setWindowAlwaysOnTop",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4186
                "showWindowWithoutWarningBanner",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4187
                "toolkitModality",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4188
                "watchMousePointer"
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4189
                },
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4190
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4191
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4192
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4193
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4194
class DelegationPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4195
    DelegationPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4196
        super(javax.security.auth.kerberos.DelegationPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4197
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4198
                // allow user input
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4199
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4200
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4201
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4202
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4203
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4204
class FilePerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4205
    FilePerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4206
        super(java.io.FilePermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4207
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4208
                "<<ALL FILES>>"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4209
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4210
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4211
                "read",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4212
                "write",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4213
                "delete",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4214
                "execute"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4215
                });
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4216
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4217
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4218
20787
ab071ce90368 8014719: HttpClient/ProxyTest.java failing with IAE HttpURLPermission.parseURI
michaelm
parents: 20754
diff changeset
  4219
class URLPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4220
    URLPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4221
        super(java.net.URLPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4222
            new String[]    {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4223
                "<"+ PolicyTool.getMessage("url") + ">",
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4224
            },
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4225
            new String[]    {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4226
                "<" + PolicyTool.getMessage("method.list") + ">:<"
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4227
                    + PolicyTool.getMessage("request.headers.list") + ">",
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4228
            });
17692
685c0741cfbb 8012261: update policytool to support java.net.HttpURLPermission
weijun
parents: 15013
diff changeset
  4229
    }
685c0741cfbb 8012261: update policytool to support java.net.HttpURLPermission
weijun
parents: 15013
diff changeset
  4230
}
685c0741cfbb 8012261: update policytool to support java.net.HttpURLPermission
weijun
parents: 15013
diff changeset
  4231
3482
4aaa66ce712d 6710360: export Kerberos session key to applications
weijun
parents: 715
diff changeset
  4232
class InqSecContextPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4233
    InqSecContextPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4234
        super(com.sun.security.jgss.InquireSecContextPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4235
            new String[]    {
3483
a16fce1820ef 6821190: more InquireType values for ExtendedGSSContext
weijun
parents: 3482
diff changeset
  4236
                "KRB5_GET_SESSION_KEY",
a16fce1820ef 6821190: more InquireType values for ExtendedGSSContext
weijun
parents: 3482
diff changeset
  4237
                "KRB5_GET_TKT_FLAGS",
a16fce1820ef 6821190: more InquireType values for ExtendedGSSContext
weijun
parents: 3482
diff changeset
  4238
                "KRB5_GET_AUTHZ_DATA",
a16fce1820ef 6821190: more InquireType values for ExtendedGSSContext
weijun
parents: 3482
diff changeset
  4239
                "KRB5_GET_AUTHTIME"
3482
4aaa66ce712d 6710360: export Kerberos session key to applications
weijun
parents: 715
diff changeset
  4240
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4241
            null);
3482
4aaa66ce712d 6710360: export Kerberos session key to applications
weijun
parents: 715
diff changeset
  4242
    }
4aaa66ce712d 6710360: export Kerberos session key to applications
weijun
parents: 715
diff changeset
  4243
}
4aaa66ce712d 6710360: export Kerberos session key to applications
weijun
parents: 715
diff changeset
  4244
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4245
class LogPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4246
    LogPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4247
        super(java.util.logging.LoggingPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4248
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4249
                "control"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4250
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4251
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4252
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4253
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4254
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4255
class MgmtPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4256
    MgmtPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4257
        super(java.lang.management.ManagementPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4258
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4259
                "control",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4260
                "monitor"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4261
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4262
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4263
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4264
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4265
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4266
class MBeanPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4267
    MBeanPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4268
        super(javax.management.MBeanPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4269
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4270
                // allow user input
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4271
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4272
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4273
                "addNotificationListener",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4274
                "getAttribute",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4275
                "getClassLoader",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4276
                "getClassLoaderFor",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4277
                "getClassLoaderRepository",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4278
                "getDomains",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4279
                "getMBeanInfo",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4280
                "getObjectInstance",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4281
                "instantiate",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4282
                "invoke",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4283
                "isInstanceOf",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4284
                "queryMBeans",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4285
                "queryNames",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4286
                "registerMBean",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4287
                "removeNotificationListener",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4288
                "setAttribute",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4289
                "unregisterMBean"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4290
                });
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4291
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4292
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4293
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4294
class MBeanSvrPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4295
    MBeanSvrPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4296
        super(javax.management.MBeanServerPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4297
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4298
                "createMBeanServer",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4299
                "findMBeanServer",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4300
                "newMBeanServer",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4301
                "releaseMBeanServer"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4302
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4303
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4304
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4305
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4306
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4307
class MBeanTrustPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4308
    MBeanTrustPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4309
        super(javax.management.MBeanTrustPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4310
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4311
                "register"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4312
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4313
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4314
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4315
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4316
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4317
class NetPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4318
    NetPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4319
        super(java.net.NetPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4320
            new String[]    {
26204
77df35747ce7 8055901: Update policytool for jdk.net.NetworkPermission
weijun
parents: 25859
diff changeset
  4321
                "allowHttpTrace",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4322
                "setDefaultAuthenticator",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4323
                "requestPasswordAuthentication",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4324
                "specifyStreamHandler",
26204
77df35747ce7 8055901: Update policytool for jdk.net.NetworkPermission
weijun
parents: 25859
diff changeset
  4325
                "getNetworkInformation",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4326
                "setProxySelector",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4327
                "getProxySelector",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4328
                "setCookieHandler",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4329
                "getCookieHandler",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4330
                "setResponseCache",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4331
                "getResponseCache"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4332
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4333
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4334
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4335
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4336
26204
77df35747ce7 8055901: Update policytool for jdk.net.NetworkPermission
weijun
parents: 25859
diff changeset
  4337
class NetworkPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4338
    NetworkPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4339
        super(jdk.net.NetworkPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4340
            new String[]    {
26204
77df35747ce7 8055901: Update policytool for jdk.net.NetworkPermission
weijun
parents: 25859
diff changeset
  4341
                "setOption.SO_FLOW_SLA",
77df35747ce7 8055901: Update policytool for jdk.net.NetworkPermission
weijun
parents: 25859
diff changeset
  4342
                "getOption.SO_FLOW_SLA"
77df35747ce7 8055901: Update policytool for jdk.net.NetworkPermission
weijun
parents: 25859
diff changeset
  4343
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4344
            null);
26204
77df35747ce7 8055901: Update policytool for jdk.net.NetworkPermission
weijun
parents: 25859
diff changeset
  4345
    }
77df35747ce7 8055901: Update policytool for jdk.net.NetworkPermission
weijun
parents: 25859
diff changeset
  4346
}
77df35747ce7 8055901: Update policytool for jdk.net.NetworkPermission
weijun
parents: 25859
diff changeset
  4347
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4348
class PrivCredPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4349
    PrivCredPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4350
        super(javax.security.auth.PrivateCredentialPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4351
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4352
                // allow user input
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4353
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4354
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4355
                "read"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4356
                });
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4357
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4358
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4359
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4360
class PropPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4361
    PropPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4362
        super(java.util.PropertyPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4363
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4364
                // allow user input
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4365
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4366
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4367
                "read",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4368
                "write"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4369
                });
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4370
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4371
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4372
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4373
class ReflectPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4374
    ReflectPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4375
        super(java.lang.reflect.ReflectPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4376
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4377
                "suppressAccessChecks"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4378
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4379
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4380
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4381
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4382
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4383
class RuntimePerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4384
    RuntimePerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4385
        super(java.lang.RuntimePermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4386
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4387
                "createClassLoader",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4388
                "getClassLoader",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4389
                "setContextClassLoader",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4390
                "enableContextClassLoaderOverride",
705
1db8adb3ea95 6711509: PolicyTool is misspelling Runtime permission - 'setSecurityManager' entry in the policy file
weijun
parents: 2
diff changeset
  4391
                "setSecurityManager",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4392
                "createSecurityManager",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4393
                "getenv.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4394
                    PolicyTool.getMessage("environment.variable.name") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4395
                "exitVM",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4396
                "shutdownHooks",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4397
                "setFactory",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4398
                "setIO",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4399
                "modifyThread",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4400
                "stopThread",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4401
                "modifyThreadGroup",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4402
                "getProtectionDomain",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4403
                "readFileDescriptor",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4404
                "writeFileDescriptor",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4405
                "loadLibrary.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4406
                    PolicyTool.getMessage("library.name") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4407
                "accessClassInPackage.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4408
                    PolicyTool.getMessage("package.name")+">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4409
                "defineClassInPackage.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4410
                    PolicyTool.getMessage("package.name")+">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4411
                "accessDeclaredMembers",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4412
                "queuePrintJob",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4413
                "getStackTrace",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4414
                "setDefaultUncaughtExceptionHandler",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4415
                "preferences",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4416
                "usePolicy",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4417
                // "inheritedChannel"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4418
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4419
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4420
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4421
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4422
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4423
class SecurityPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4424
    SecurityPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4425
        super(java.security.SecurityPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4426
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4427
                "createAccessControlContext",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4428
                "getDomainCombiner",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4429
                "getPolicy",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4430
                "setPolicy",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4431
                "createPolicy.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4432
                    PolicyTool.getMessage("policy.type") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4433
                "getProperty.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4434
                    PolicyTool.getMessage("property.name") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4435
                "setProperty.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4436
                    PolicyTool.getMessage("property.name") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4437
                "insertProvider.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4438
                    PolicyTool.getMessage("provider.name") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4439
                "removeProvider.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4440
                    PolicyTool.getMessage("provider.name") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4441
                //"setSystemScope",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4442
                //"setIdentityPublicKey",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4443
                //"setIdentityInfo",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4444
                //"addIdentityCertificate",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4445
                //"removeIdentityCertificate",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4446
                //"printIdentity",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4447
                "clearProviderProperties.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4448
                    PolicyTool.getMessage("provider.name") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4449
                "putProviderProperty.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4450
                    PolicyTool.getMessage("provider.name") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4451
                "removeProviderProperty.<" +
20886
9630bb813a6c 7025699: Policy Tool is not accessible by keyboard
weijun
parents: 20787
diff changeset
  4452
                    PolicyTool.getMessage("provider.name") + ">",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4453
                //"getSignerPrivateKey",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4454
                //"setSignerKeyPair"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4455
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4456
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4457
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4458
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4459
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4460
class SerialPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4461
    SerialPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4462
        super(java.io.SerializablePermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4463
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4464
                "enableSubclassImplementation",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4465
                "enableSubstitution"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4466
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4467
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4468
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4469
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4470
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4471
class ServicePerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4472
    ServicePerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4473
        super(javax.security.auth.kerberos.ServicePermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4474
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4475
                // allow user input
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4476
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4477
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4478
                "initiate",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4479
                "accept"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4480
                });
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4481
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4482
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4483
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4484
class SocketPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4485
    SocketPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4486
        super(java.net.SocketPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4487
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4488
                // allow user input
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4489
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4490
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4491
                "accept",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4492
                "connect",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4493
                "listen",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4494
                "resolve"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4495
                });
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4496
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4497
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4498
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4499
class SQLPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4500
    SQLPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4501
        super(java.sql.SQLPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4502
            new String[]    {
6542
155856185c1b 6845220: Need to update Policytool for Rowset 1.1 and JDBC 4.1 MR added permissions
weijun
parents: 5627
diff changeset
  4503
                "setLog",
155856185c1b 6845220: Need to update Policytool for Rowset 1.1 and JDBC 4.1 MR added permissions
weijun
parents: 5627
diff changeset
  4504
                "callAbort",
155856185c1b 6845220: Need to update Policytool for Rowset 1.1 and JDBC 4.1 MR added permissions
weijun
parents: 5627
diff changeset
  4505
                "setSyncFactory",
155856185c1b 6845220: Need to update Policytool for Rowset 1.1 and JDBC 4.1 MR added permissions
weijun
parents: 5627
diff changeset
  4506
                "setNetworkTimeout",
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4507
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4508
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4509
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4510
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4511
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4512
class SSLPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4513
    SSLPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4514
        super(javax.net.ssl.SSLPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4515
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4516
                "setHostnameVerifier",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4517
                "getSSLSessionContext"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4518
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4519
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4520
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4521
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4522
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4523
class SubjDelegPerm extends Perm {
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4524
    SubjDelegPerm() {
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4525
        super(javax.management.remote.SubjectDelegationPermission.class,
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4526
            new String[]    {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4527
                // allow user input
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4528
                },
31803
a359181776b2 8131350: policytool can directly reference permission classes
weijun
parents: 29370
diff changeset
  4529
            null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4530
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  4531
}