<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->

<menus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-menu.xsd">

    <menu name="SecurityGroupTabBar" default-menu-item-name="EditSecurityGroup" default-selected-style="selected"
        menu-container-style="button-bar tab-bar" type="simple" selected-menuitem-context-field-name="tabButtonItem">
        <menu-item name="FindUserLogin" title="${uiLabelMap.FindUserLogin}">
            <link target="FindUserLogin"/>
        </menu-item>
        <menu-item name="FindSecurityGroup" title="${uiLabelMap.PageTitleFindSecurityGroup}">
            <link target="FindSecurityGroup"/>
        </menu-item>
        <menu-item name="EditUserLogin" title="${uiLabelMap.UserLogin}">
            <condition>
                <not><if-empty field="userLoginId"/></not>
            </condition>
            <link target="editlogin">
                <parameter param-name="userLoginId"/>
            </link>
        </menu-item>
        <menu-item name="EditSecurityGroup" title="${uiLabelMap.SecurityGroups}">
            <condition>
                <not><if-empty field="groupId"/></not>
            </condition>
            <link target="EditSecurityGroup">
                <parameter param-name="groupId"/>
            </link>
        </menu-item>
        <menu-item name="EditUserLoginSecurityGroups" title="${uiLabelMap.SecurityGroups}">
            <condition>
                <not><if-empty field="userLoginId"/></not>
            </condition>
            <link target="EditUserLoginSecurityGroups">
                <parameter param-name="userLoginId"/>
            </link>
        </menu-item>
        <menu-item name="EditSecurityGroupPermissions" title="${uiLabelMap.Permissions}">
            <condition>
                <not><if-empty field="groupId"/></not>
            </condition>
            <link target="EditSecurityGroupPermissions">
                <parameter param-name="groupId"/>
            </link>
        </menu-item>
        <menu-item name="EditSecurityGroupUserLogins" title="${uiLabelMap.UserLogins}">
            <condition>
                <not><if-empty field="groupId"/></not>
            </condition>
            <link target="EditSecurityGroupUserLogins">
                <parameter param-name="groupId"/>
            </link>
        </menu-item>
        <menu-item name="EditSecurityGroupProtectedViews" title="${uiLabelMap.ProtectedViews}">
            <condition>
                <not><if-empty field="groupId"/></not>
            </condition>
            <link target="EditSecurityGroupProtectedViews">
                <parameter param-name="groupId"/>
            </link>
        </menu-item>
        <menu-item name="EditCertIssuerProvisions" title="${uiLabelMap.CertIssuers}">
            <link target="EditCertIssuerProvisions"/>
        </menu-item>
    </menu>

</menus>
