<?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.
-->

<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://ofbiz.apache.org/Widget-Screen" xsi:schemaLocation="http://ofbiz.apache.org/Widget-Screen http://ofbiz.apache.org/dtds/widget-screen.xsd">
    <screen name="FindPartyQuals">
        <section>
            <actions>
                <set field="titleProperty" value="HumanResFindPartyQual"/>
                <set field="headerItem" value="PartyQual"/>
                <set field="partyId" from-field="parameters.partyId"/>
                <set field="partyQualTypeId" from-field="parameters.partyQualTypeId"/>
                <set field="fromDate" from-field="parameters.fromDate"/>
                <set field="partyQualCtx" from-field="parameters"/>
            </actions>
            <widgets>
                <decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <decorator-screen name="FindScreenDecorator" location="component://common/widget/CommonScreens.xml">
                            <decorator-section name="menu-bar">
                                <section>
                                    <widgets>
                                        <container style="button-bar">
                                            <link target="NewPartyQual" text="${uiLabelMap.HumanResNewPartyQual}" style="buttontext create"/>
                                        </container>
                                    </widgets>
                                </section>
                            </decorator-section>
                           <decorator-section name="search-options">
                               <include-form name="FindPartyQuals" location="component://humanres/widget/forms/PartyQualForms.xml"/>
                           </decorator-section>
                           <decorator-section name="search-results">
                               <include-form name="ListPartyQuals" location="component://humanres/widget/forms/PartyQualForms.xml"/>
                           </decorator-section>
                       </decorator-screen>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
    <screen name="EditPartyQuals">
        <section>
            <actions>
                <set field="titleProperty" value="HumanResEditPartyQual"/>
                <set field="headerItem" value="Employee"/>
                <set field="tabButtonItem" value="EditPartyQuals"/>
                <set field="partyId" from-field="parameters.partyId"/>
                <set field="partyQualCtx.partyId" from-field="parameters.partyId"/>
                <set field="parameters.insideEmployee" value="true"/>
            </actions>
            <widgets>
                <decorator-screen name="CommonPartyDecorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <screenlet id="AddPartyQualPanel" title="${uiLabelMap.HumanResAddPartyQual}" collapsible="true">
                            <include-form name="AddPartyQual" location="component://humanres/widget/forms/PartyQualForms.xml"/>
                        </screenlet>
                        <include-form name="ListPartyQuals" location="component://humanres/widget/forms/PartyQualForms.xml"/>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
    <screen name="NewPartyQual">
        <section>
            <actions>
                <set field="headerItem" value="PartyQual"/>
                <entity-one entity-name="PartyQual" value-field="partyQual"/>
            </actions>
            <widgets>
                <decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <screenlet title="${uiLabelMap.HumanResNewPartyQual}">
                            <section>
                                <widgets>
                                    <include-form name="AddPartyQual" location="component://humanres/widget/forms/PartyQualForms.xml"/>
                                </widgets>
                            </section>
                        </screenlet>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
</screens>
