<?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"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd">
    <screen name="FindMessageInfo">
        <section>
            <actions>
                <set field="titleProperty" value="OagisListMessageInfo"/>
                <set field="headerItem" value="MessageInfos"/>
            </actions>
            <widgets>
                <decorator-screen name="CommonOagisMessageScreen" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <screenlet title="${uiLabelMap.OagisListMessageInfo}">
                            <container>
                                <link target="EditMessageInfo" text="${uiLabelMap.OagisNewMessageInfo}" style="buttontext"/>
                            </container>
                            <include-form name="FindMessageInfos" location="component://oagis/widget/forms/MessageInfoForms.xml"/>
                        </screenlet>
                        <screenlet title="${uiLabelMap.OagisListMessageInfo}">
                            <include-form name="ListMessageInfos" location="component://oagis/widget/forms/MessageInfoForms.xml"/>
                        </screenlet>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="EditMessageInfo">
        <section>
            <actions>
                <set field="titleProperty" value="OagisEditMessageInfo"/>
                <set field="headerItem" value="MessageInfos"/>
                <set field="logicalId" from-field="parameters.logicalId"/>
                <set field="component" from-field="parameters.component"/>
                <set field="task" from-field="parameters.task"/>
                <set field="referenceId" from-field="parameters.referenceId"/>
                <entity-one entity-name="OagisMessageInfo" value-field="oagisMessageInfo"/>
            </actions>
            <widgets>
                <decorator-screen name="CommonOagisMessageScreen" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <screenlet title="${uiLabelMap.OagisEditMessageInfo}">
                            <include-form name="EditMessageInfo" location="component://oagis/widget/forms/MessageInfoForms.xml"/>
                        </screenlet>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="FindMessageErrorInfo">
        <section>
            <actions>
                <set field="titleProperty" value="OagisListMessageErrorInfo"/>
                <set field="headerItem" value="MessageErrorInfos"/>
            </actions>
            <widgets>
                <decorator-screen name="CommonOagisMessageScreen" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <screenlet title="${uiLabelMap.OagisListMessageErrorInfo}">
                            <container>
                                <link target="EditMessageErrorInfo" text="${uiLabelMap.OagisNewMessageErrorInfo}" style="buttontext"/>
                            </container>
                            <include-form name="FindMessageErrorInfos" location="component://oagis/widget/forms/MessageInfoForms.xml"/>
                        </screenlet>
                        <screenlet title="${uiLabelMap.OagisListMessageErrorInfo}">
                            <include-form name="ListMessageErrorInfos" location="component://oagis/widget/forms/MessageInfoForms.xml"/>
                        </screenlet>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="EditMessageErrorInfo">
        <section>
            <actions>
                <set field="titleProperty" value="OagisEditMessageErrorInfo"/>
                <set field="headerItem" value="MessageErrorInfos"/>
                <set field="logicalId" from-field="parameters.logicalId"/>
                <set field="component" from-field="parameters.component"/>
                <set field="task" from-field="parameters.task"/>
                <set field="referenceId" from-field="parameters.referenceId"/>
                <set field="errorSeqId" from-field="parameters.errorSeqId"/>
                <entity-one entity-name="OagisMessageErrorInfo" value-field="oagisMessageErrorInfo"/>
            </actions>
            <widgets>
                <decorator-screen name="CommonOagisMessageScreen" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <screenlet title="${uiLabelMap.OagisEditMessageErrorInfo}">
                            <include-form name="EditMessageErrorInfo" location="component://oagis/widget/forms/MessageInfoForms.xml"/>
                        </screenlet>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="ProcessShipment">
        <section>
            <widgets>
                <platform-specific>
                    <html><html-template location="component://oagis/webapp/oagis/message/ProcessShipment.ftl"/></html>
                </platform-specific>
            </widgets>
        </section>
    </screen>

    <screen name="ConfirmBod">
        <section>
            <widgets>
                <platform-specific>
                    <html><html-template location="component://oagis/webapp/oagis/message/ConfirmBod.ftl"/></html>
                </platform-specific>
            </widgets>
        </section>
    </screen>

    <screen name="ReceiveDelivery">
        <section>
            <widgets>
                <platform-specific>
                    <html><html-template location="component://oagis/webapp/oagis/message/ReceiveDelivery.ftl"/></html>
                </platform-specific>
            </widgets>
        </section>
    </screen>
</screens>
