<!--
 -
 - 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="queue">
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Queue Attributes',  open: true">

        <div class="clear">
            <div class="formLabel-labelCell">Name:</div>
            <div class="name formValue-valueCell"></div>
        </div>
        <div class="clear"></div>
        <div class="alignLeft">
            <div class="clear">
                <div class="formLabel-labelCell">Type:</div>
                <div class="type formValue-valueCell"></div>
                <div class="typeQualifier formValue-valueCell"></div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">State:</div>
                <div class="state formValue-valueCell"></div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">Durable:</div>
                <div class="durable formValue-valueCell"></div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">Lifespan:</div>
                <div class="lifetimePolicy formValue-valueCell"></div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">Persist Messages:</div>
                <div class="messageDurability formValue-valueCell"></div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">Overflow Policy:</div>
                <div class="overflowPolicy formValue-valueCell"></div>
            </div>
            <div class="clear maximumQueueDepth">
                <div class="formLabel-labelCell">Maximum Queue Depth:</div>
                <div class="formValue-valueCell">
                    <span class="maximumQueueDepthMessages"></span>
                    <span> msgs</span>
                    (<span class="maximumQueueDepthBytes"></span> <span class="maximumQueueDepthBytesUnits"></span>)
                </div>
            </div>
        </div>
        <div class="alignRight">
            <div class="clear">
                <div class="formLabel-labelCell">Exclusive:</div>
                <div class="exclusive formValue-valueCell"></div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">Owner:</div>
                <div class="owner formValue-valueCell"></div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">Alternate Binding:</div>
                <div class="alternateBinding formValue-valueCell"></div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">Maximum Delivery Attempts:</div>
                <div class="maximumDeliveryAttempts formValue-valueCell"></div>
            </div>
            <div class="clear">
                <div class="formLabel-labelCell">Hold on Publish Enabled:</div>
                <div class="holdOnPublishEnabled formValue-valueCell"></div>
            </div>
        </div>
        <div class="clear"></div>
        <div class="clear">
            <div class="formLabel-labelCell">Enforced Max. Ttl(ms):</div>
            <div class="maximumMessageTtl"></div>
        </div>
        <div class="clear">
            <div class="formLabel-labelCell">Enforced Min. Ttl(ms):</div>
            <div class="minimumMessageTtl"></div>
        </div>
        <div class="clear messageGroups">
            <div class="clear">
                <div class="messageGroupTypeLabel formLabel-labelCell">Message Group Type:</div>
                <div class="messageGroupType"></div>
            </div>
            <div class="clear">
                <div class="messageGroupKeyOverrideLabel formLabel-labelCell ">Message Group Key Override:</div>
                <div class="messageGroupKeyOverride"></div>
            </div>
        </div>
        <div class="clear"></div>
    </div>
    <br/>
    <div class="queueStatistics"></div>
    <div class="dijitDialogPaneActionBar">
        <button data-dojo-type="dijit.form.Button" class="editQueueButton" type="button">Edit Queue</button>
        <button data-dojo-type="dijit.form.Button" class="deleteQueueButton" type="button">Delete Queue</button>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Bindings'">
        <div class="bindings"></div>
        <button data-dojo-type="dijit.form.Button" class="addBindingButton" type="button">Add Binding</button>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Consumers'" class="queueConsumers">
        <div class="consumers"></div>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Messages'" class="queueMessages">
        <div class="messagesGrid"></div>
        <button data-dojo-type="dijit.form.Button" class="deleteMessagesButton" type="button">Delete Messages</button>
        <button data-dojo-type="dijit.form.Button" class="clearQueueButton" type="button">Clear Queue</button>
        <button data-dojo-type="dijit.form.Button" class="moveMessagesButton" type="button">Move Messages</button>
        <button data-dojo-type="dijit.form.Button" class="copyMessagesButton" type="button">Copy Messages</button>
        <button data-dojo-type="dijit.form.Button" class="refreshMessagesButton" type="button">Refresh</button>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Alerting Thresholds', open: false">
      <div class="clear">
            <div class="formLabel-labelCell">Queue Depth (Messages):</div>
            <div>
                <span class="alertThresholdQueueDepthMessages"></span>
                <span>msgs</span>
            </div>
        </div>
        <div class="clear">
            <div class="formLabel-labelCell">Queue Depth (Bytes):</div>
            <div>
                <span class="alertThresholdQueueDepthBytes"></span>
                <span class="alertThresholdQueueDepthBytesUnits"></span>
            </div>
        </div>
        <div class="clear">
            <div class="formLabel-labelCell">Message Age:</div>
            <div>
                <span class="alertThresholdMessageAge"></span>
                <span class="alertThresholdMessageAgeUnits"></span>
            </div>
        </div>
        <div class="clear">
            <div class="formLabel-labelCell">Message Size:</div>
            <div>
                <span class="alertThresholdMessageSize"></span>
                <span class="alertThresholdMessageSizeUnits"></span>
            </div>
        </div>
        <div class="clear">
            <div class="formLabel-labelCell">Gap between alerts:</div>
            <div>
                <span class="alertRepeatGap"></span>
                <span class="alertRepeatGapUnits"></span>
            </div>
        </div>
        <div class="clear"></div>
    </div>
</div>

