<!--
 -
 - 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.
 -
 -->
<div class="dijitHidden">
    <div data-dojo-type="dijit.Dialog" style="width:600px;" data-dojo-props="title:'Exchange'" id="addExchange">
        <form id="formAddExchange" method="post" dojoType="dijit.form.Form">
            <div class="clear">
                <div class="formLabel-labelCell">Name*:</div>
                <div class="formLabel-controlCell">
                    <input type="text" id="formAddExchange.name"
                           data-dojo-type="dijit/form/ValidationTextBox"
                           data-dojo-props="
                              name: 'name',
                              placeHolder: 'exchange name',
                              required: true,
                              promptMessage: 'Name of exchange',
                              title: 'Enter an exchange name',
                              regExp:'^(?!qpid\.|amq\.|\<\<default\>\>)[\x20-\x2e\x30-\x7F]{1,255}$',
                              invalidMessage:'Illegal or reserved exchange name!'"/>
                </div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">Exchange Type:</div>
                <div class="formLabel-controlCell">
                    <select id="formAddExchange.type"
                            data-dojo-type="dijit.form.FilteringSelect"
                            data-dojo-props="
                              name: 'type',
                              promptMessage: 'Type of exchange - responsible for routing messages to queues'">
                        <option value="direct">direct</option>
                        <option value="topic">topic</option>
                        <option value="headers">headers</option>
                        <option value="fanout">fanout</option>
                    </select>
                </div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">Durable?</div>
                <div class="formLabel-controlCell">
                    <input type="checkbox" id="formAddExchange.durable"
                           dojoType="dijit.form.CheckBox"
                           data-dojo-props="
                              name: 'durable',
                              value: 'durable',
                              checked: true"/>
                </div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">Alternate Binding:</div>
                <div class="formLabel-controlCell">
                    <input type="select" id="formAddExchange.alternateBinding"
                           data-dojo-type="qpid/common/DestinationChooser"
                           data-dojo-props="
                                      name: 'alternateBinding',
                                      value: ' ',
                                      placeHolder: 'alternate binding',
                                      promptMessage: 'Alternate binding to redirect messages to',
                                      title: 'Select an alternate binding to redirect messages to'"/>
                </div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">AMQP 1.0 Unroutable Message Behaviour:</div>
                <div class="formLabel-controlCell">
                    <select id="formAddExchange.unroutableMessageBehaviour"
                            data-dojo-type="dijit.form.FilteringSelect"
                            data-dojo-props="
                              name: 'unroutableMessageBehaviour',
                              required: false,
                              value: null,
                              promptMessage: 'Default behaviour to apply when a message is not routed to any queues'">
                        <option value="DISCARD">DISCARD</option>
                        <option value="REJECT">REJECT</option>
                    </select>
                </div>
            </div>
            <div class="editorPanel clear"
                 data-dojo-type="dijit/TitlePane"
                 data-dojo-props="title: 'Context variables',  open: false">
                <div id="formAddExchange.context"
                     data-dojo-type="qpid.common.ContextVariablesEditor"
                     data-dojo-props="name: 'context', title: 'Context variables'"></div>
            </div>

            <div class="dijitDialogPaneActionBar qpidDialogPaneActionBar">
                <input type="submit" data-dojo-type="dijit/form/Button" id="formAddExchange.saveButton" data-dojo-props="label: 'Save'"/>
                <button data-dojo-type="dijit/form/Button" id="formAddExchange.cancelButton" data-dojo-props="label: 'Cancel'" ></button>
            </div>
        </form>
    </div>
</div>
