
<%
/**
 * Copyright (c) 2010 Ed Merks and others.
 * All rights reserved.   This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v20.html
 * 
 * Contributors: 
 *   Ed Merks - Initial API and implementation
 */
%>
<%GenModel genModel = (GenModel)argument; /* Trick to import java.util.* without warnings */Iterator.class.getName();%>
<?xml version="1.0" encoding="UTF-8"?>
<!doctype html>
<html style="height : 100%"> 
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

    <!--                                           -->
    <!-- Any title is fine                         -->
    <!--                                           -->
    <title><%=genModel.getModelName()%> Application</title>
    
    <style TYPE="text/css">
      <!--
        .ToolBar
        {
          background-color: #d0e4f6;
        }
        .ToolBarButton
        {
          float: left;
          margin-top: 5px;
        }
        .ToolBarButtonLeftMargin
        {
          float: left;
          margin-left: 10px;
          margin-top: 5px;
        }
        .Header
        {
          background-color: #628cd5;
          color: #FFFFFF;
          float: left;
          font-weight: bold;
          font-size: xx-large;
        }
        .HeaderLabel
        {
          float: left;
          margin-left: 10px;
        }
        .PropertiesTitle
        {
          background-color: #628cd5;
          color: #FFFFFF;
          font-weight: bold;
          font-size: large;
        }
        .PropertiesTitleLabel
        {
          float: left;
          margin-left: 5px;
        }
      -->
    </style>

    <!--                                           -->
    <!-- This script loads your compiled module.   -->
    <!-- If you add any GWT meta tags, they must   -->
    <!-- be added before this line.                -->
    <script type="text/javascript" language="javascript" src="<%=genModel.getQualifiedEditorModuleName()%>/<%=genModel.getQualifiedEditorModuleName()%>.nocache.js"></script>
  </head>

  <body style="height : 100%">
    <div id="main" style="height : 100%">
    </div>
  </body>
</html>
