<!--

    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

"<SCRIPT language = "Javascript" >
" function enableClassnameFields(opt){	\
    var selectedOption = getSelectedValueFromForm(document.forms['propertyForm'], 'usersOptionGrp'); \
    if(opt == 'principals') {\
 	enableComponent('#{principalsId}', 'text');  \
        getTextElement('#{userGroupsId}').value='';  \
        disableComponent('#{userGroupsId}', 'text'); \
	getTextElement('#{principalsId}').focus();  \
        #{themeJavascript.JS_PREFIX}.radiobutton.setChecked('#{pPropId}:optB', true); \
    }else{ \
        getTextElement('#{principalsId}').value='';  \
	disableComponent('#{principalsId}', 'text'); \
        enableComponent('#{userGroupsId}', 'text');  \
        getTextElement('#{userGroupsId}').focus();  \
        #{themeJavascript.JS_PREFIX}.radiobutton.setChecked('#{grpPropId}:optA', true);  \
    }\
 }
"</SCRIPT>          
