<!--
 -
 - 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="broker">
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Broker',  open: false" id="showBrokerPane">
        <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Broker Attributes',  open: true">
            <div id="brokerAttributes" class="clear">
                 <div id="brokerAttribute.name.container" class="clear">
                    <div class="formLabel-labelCell">Broker name:</div>
                    <div id="brokerAttribute.name"></div>
                </div>
                <div id="brokerAttribute.operatingSystem.container" class="clear">
                    <div class="formLabel-labelCell">Operating system:</div>
                    <div id="brokerAttribute.operatingSystem"></div>
                </div>
                <div id="brokerAttribute.platform.container" class="clear">
                    <div class="formLabel-labelCell">Platform:</div>
                    <div id="brokerAttribute.platform"></div>
                </div>
                <div id="brokerAttribute.productVersion.container" class="clear">
                    <div class="formLabel-labelCell">Broker version:</div>
                    <div id="brokerAttribute.productVersion"></div>
                </div>
                <div id="brokerAttribute.modelVersion.container" class="clear">
                    <div class="formLabel-labelCell">Broker model version:</div>
                    <div id="brokerAttribute.modelVersion"></div>
                </div>
                <div id="brokerAttribute.processPid.container" class="clear">
                    <div class="formLabel-labelCell">PID:</div>
                    <div id="brokerAttribute.processPid"></div>
                </div>
                <div id="brokerAttribute.confidentialConfigurationEncryptionProvider.container" class="clear">
                    <div class="formLabel-labelCell">Config Encryption:</div>
                    <div id="brokerAttribute.confidentialConfigurationEncryptionProvider"></div>
                </div>
                <div id="brokerAttribute.statisticsReportingPeriod.container" class="hidden clear">
                    <div class="formLabel-labelCell">Statistics reporting period (s):</div>
                    <div id="brokerAttribute.statisticsReportingPeriod"></div>
                </div>
                <div class="clear"></div>
            </div>
            <br/>
        </div>
        <br/>
        <div id="showBroker.statistics"></div>
        <div class="dijitDialogPaneActionBar">
            <button data-dojo-type="dijit.form.Button" class="editBroker">Edit</button>
            <button data-dojo-type="dijit.form.Button" class="restartBroker">Restart</button>
            <div data-dojo-type="dijit.form.DropDownButton" data-dojo-props="iconClass: 'dijitIconFunction'" class="brokerDiagnosticsMenu">
                <span>Diagnostics</span>
                <div data-dojo-type="dijit.Menu">
                    <div data-dojo-type="dijit.MenuItem"
                    data-dojo-props="iconClass: 'downloadLogsIcon'">Download JVM thread-dump</div>
                </div>
            </div>
        </div>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Virtual Hosts'">
        <div class="broker-virtualhosts"></div>
        <button data-dojo-type="dijit.form.Button" class="addVirtualHostNodeAndVirtualHostButton">Add</button>
        <div data-dojo-type="dijit.form.DropDownButton" class="virtualHostNodeMenuButton" data-dojo-props="iconClass: 'dijitIconConnector',disabled:true">
            <span>Virtual Host Node</span>
            <div data-dojo-type="dijit.Menu">
                <div data-dojo-type="dijit.MenuItem">View</div>
                <div data-dojo-type="dijit.MenuItem">Delete</div>
                <div data-dojo-type="dijit.MenuItem" data-dojo-props="disabled:true">Start</div>
                <div data-dojo-type="dijit.MenuItem" data-dojo-props="disabled:true">Stop</div>
            </div>
          </div>
        <div data-dojo-type="dijit.form.DropDownButton" class="virtualHostMenuButton" data-dojo-props="iconClass: 'dijitIconPackage',disabled:true">
            <span>Virtual Host</span>
            <div data-dojo-type="dijit.Menu" class="virtualHostMenu">
                <div data-dojo-type="dijit.MenuItem">Add</div>
                <div data-dojo-type="dijit.MenuItem" class="viewVirtualHost" >View</div>
                <div data-dojo-type="dijit.MenuItem" data-dojo-props="disabled:true">Start</div>
                <div data-dojo-type="dijit.MenuItem" data-dojo-props="disabled:true">Stop</div>
            </div>
          </div>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Ports'">
        <div class="broker-ports"></div>
        <button data-dojo-type="dijit.form.Button" class="addPort">Add Port</button>
        <button data-dojo-type="dijit.form.Button" class="deletePort">Delete Port</button>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Broker Loggers'">
        <div class="broker-loggers"></div>
        <button data-dojo-type="dijit.form.Button" class="addBrokerLogger">Add Broker Logger</button>
        <button data-dojo-type="dijit.form.Button" class="deleteBrokerLogger">Delete Broker Logger</button>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Authentication Providers'">
        <div class="broker-authentication-providers"></div>
        <button data-dojo-type="dijit.form.Button" class="addAuthenticationProvider">Add Provider</button>
        <button data-dojo-type="dijit.form.Button" class="deleteAuthenticationProvider">Delete Provider</button>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Key stores'">
        <div class="broker-key-stores"></div>
        <button data-dojo-type="dijit.form.Button" class="addKeystore">Add Key Store</button>
        <button data-dojo-type="dijit.form.Button" class="deleteKeystore">Delete Key Store</button>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Trust stores'">
        <div class="broker-trust-stores"></div>
        <button data-dojo-type="dijit.form.Button" class="addTruststore">Add Trust Store</button>
        <button data-dojo-type="dijit.form.Button" class="deleteTruststore">Delete Trust Store</button>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Group Providers'">
        <div class="broker-group-providers"></div>
        <button data-dojo-type="dijit.form.Button" class="addGroupProvider">Add Group Provider</button>
        <button data-dojo-type="dijit.form.Button" class="deleteGroupProvider">Delete Group Provider</button>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Access Control Providers'">
        <div class="broker-access-control-providers-warning" style="color: red"></div>
        <div class="broker-access-control-providers"></div>
        <button data-dojo-type="dijit.form.Button" class="addAccessControlProvider">Add Access Control Provider</button>
        <button data-dojo-type="dijit.form.Button" class="deleteAccessControlProvider">Delete Access Control Provider</button>
    </div>
    <br/>
</div>

