<!--

    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

-->

<!-- iiopTab.inc -->

<sun:tabSet id="iiopTab" immediate="$boolean{true}" selected="#{sessionScope.iiopTab}">
    <sun:tab id="iiopEdit" immediate="$boolean{true}" text="$resource{i18n_corba.iiop.editIiopTab}" toolTip="$resource{i18n_corba.iiop.editIiopTab} Tab" >
        <!command
            setSessionAttribute(key="iiopTab" value="iiopEdit");
            gf.redirect(page="#{request.contextPath}/corba/iiopListenerEdit.jsf?configName=#{pageSession.encodedConfigName}&name=#{pageSession.encodedName}");
        /> 
    </sun:tab>
    <sun:tab id="sslEdit" immediate="$boolean{true}" text="$resource{i18n_corba.iiop.editSSLTab}" toolTip="$resource{i18n_corba.iiop.editSSLTab} Tab" >
        <!command
           setSessionAttribute(key="iiopTab" value="sslEdit");
           gf.redirect(page="#{request.contextPath}/corba/sslEdit.jsf?configName=#{pageSession.encodedConfigName}&name=#{pageSession.encodedName}");
        /> 
    </sun:tab>
</sun:tabSet>
