<!DOCTYPE HTML>
<!--
 -
 - 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="virtualhostnode">
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Virtual Host Node Attributes',  open: true">
        <div class="clear">
            <div class="formLabel-labelCell">Name:</div>
            <div class="name"></div>
        </div>
        <div class="clear">
            <div class="formLabel-labelCell">Type:</div>
            <div class="type"></div>
        </div>
        <div class="clear">
            <div class="formLabel-labelCell">State:</div>
            <div class="state"></div>
        </div>
        <div class="clear">
            <div class="formLabel-labelCell">Default Virtual Host Node:</div>
            <div class="defaultVirtualHostNode"></div>
        </div>
        <div class="clear virtualhostnodedetails">
        </div>
        <div class="clear"></div>
    </div>
    <div class="dijitDialogPaneActionBar">
      <button data-dojo-type="dijit.form.Button" class="startNodeButton" type="button" data-dojo-props="disabled: true">Start</button>
      <button data-dojo-type="dijit.form.Button" class="stopNodeButton" type="button" data-dojo-props="disabled: true">Stop</button>
      <button data-dojo-type="dijit.form.Button" class="editNodeButton" type="button" data-dojo-props="disabled: true">Edit</button>
      <button data-dojo-type="dijit.form.Button" class="deleteNodeButton" data-dojo-props="iconClass: 'dijitIconDelete'">Delete</button>
    </div>
    <br/>
    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Virtual Host'" class="clear">
        <div class="virtualHost"></div>
        <button data-dojo-type="dijit.form.Button" class="addVHButton" data-dojo-props="disabled: true">Add</button>
        <button data-dojo-type="dijit.form.Button" class="deleteVHButton" data-dojo-props="disabled: true">Delete</button>
    </div>
</div>

