// 
//     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.
//

= Getting Started with HTML5 Applications
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:syntax: true
:icons: font
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Getting Started with HTML5 Applications - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Getting Started with HTML5 Applications

This document demonstrates how to create an HTML5 project in the IDE and some of the features in the IDE that support the use of JavaScript and CSS in your project. In this document you will create a simple HTML5 application that uses a jQuery JavaScript library to modify a list in a web page.

This document also demonstrates how to install the NetBeans Connector extension for the Chrome browser from the Chrome Web Store.

For a tutorial on how to use jQuery in a NetBeans Java web application, see the tutorial link:../web/js-toolkits-jquery.html[+Using jQuery to Enhance the Appearance and Usability of a Web Page+].

To complete this tutorial, you will need the following resources:

|===
|Software or Resource |Version Required 

|link:http://www.google.com/chrome[+Chrome Browser+] |-- 

|link:https://chrome.google.com/webstore/detail/netbeans-connector/hafdlehgocfcodbgjnpecfajgkeejnaa?utm_source=chrome-ntp-icon[+NetBeans Connector Extension for Chrome+] |1.0.0 or greater 

|link:https://netbeans.org/projects/samples/downloads/download/Samples/Web%20Client/HTML5Demo-projectresources.zip[+HTML5 Demo project resources+] |-- 

|link:https://netbeans.org/projects/samples/downloads/download/Samples/Web%20Client/HTML5DemoSiteTemplate.zip[Site template of finished project] |-- 
|===

NOTE: The link:https://netbeans.org/projects/samples/downloads/download/Samples/Web%20Client/HTML5Demo-projectresources.zip[+project resources zip file+] contains the JPG images and the CSS file that you need to add to the project in this tutorial.

NOTE: If you would like to compare your project with a working solution, you can download the link:https://netbeans.org/projects/samples/downloads/download/Samples/Web%20Client/HTML5DemoSiteTemplate.zip[site template] of the finished project.

== Using the IDE with the Chrome Browser

To take full advantage of some of the tools available in the IDE that support HTML5 application development it is recommended that you use the Chrome browser and install the NetBeans Connector extension from the link:https://chrome.google.com/webstore/[+Chrome Web Store+]. You only need to install the extension once.

When installed, the NetBeans Connector extension adds a NetBeans Actions menu that is accessible from the URL location bar when you run a NetBeans HTML5 project in the Chrome browser. The NetBeans Actions menu enables you to enable Inspect in NetBeans Mode and to quickly resize the browser window to the dimensions of common display devices. The JavaScript debugger is also automatically enabled when you run an HTML5 application.

=== Installing the Extension from the Chrome Web Store

You will automatically be prompted to install the NetBeans Connector extension if you run a NetBeans HTML5 application project from the IDE and select Chrome with NetBeans Integration as the target browser. This exercise demonstrates how to install the extension by creating and running a dummy HTML5 project. You can skip this exercise and install the extension when you are prompted by the IDE or install the NetBeans Connector extension directly from the Chrome Web Store.

NOTE: The IDE will open the Chrome Web Store in the default browser. If Chrome is not set as the default browser for the IDE you need to open the Options window and select Chrome in the Web Browser dropdown list in the General category before you perform the following steps.

1. Choose File > New Project to open the New Project wizard.
2. Select *HTML5/JS Application* in the *HTML/JavaScript* category. Click Next.

image::images/html5-newproject1.png[title="HTML5 Application template in the New Project wizard"]

[start=3]
3. Specify a Name and Location for the project. Click Next.

For this exercise the name is not important.

[start=4]
4. Select No Site Template. Click Finish.

When you click Finish the IDE creates a new HTML5 project and opens  ``index.html``  in the editor.

[start=5]
5. Confirm that Chrome with NetBeans Integration is selected in the dropdown list in the toolbar.
6. Click Run in the toolbar.
7. Click Go to Chrome Web Store in the Install Chrome Extension dialog box.

image::images/html5-offline-extension1.png[title="Install Chrome Extension dialog box"]

When you click Go to Chrome Web Store the NetBeans Connector page in the Chrome Web Store opens in the Chrome browser.

Note: The Install Chrome Extension displays a button that you will click after the extension is installed.

image::images/html5-rerun-dialog.png[title="Install Chrome Extension dialog box"]

[start=8]
8. Go to the Chrome browser and click Add to Chrome in the NetBeans Connector page. Click Add when you are prompted to confirm that you want to add the extension.

image::images/html5-chrome-netbeanshome.png[title="NetBeans Connector page in the Chrome Web Store"]

When the extension is installed you will see a notification that the extension was added and that the NetBeans Connector icon will be visible in the URL location bar when you run a NetBeans HTML5 project in the Chrome browser.

image::images/html5-install-extension2.png[title="Confirmation in that extension was installed"]

[start=9]
9. In the IDE, Click Re-Run Project in the Install Chrome Extension dialog box.

When you click Re-Run Project a new tab will open in the Chrome browser and you will see the index page of the HTML5 application.

After the extension is installed you will see the NetBeans Connector icon in the URL location bar when you run a NetBeans HTML5 project in the Chrome browser.

If you open the Chrome Extensions page ( ``chrome://extensions/`` ) for the Chrome browser you will see that the extension is now enabled.

image::images/html5-install-extension3.png[title="NetBeans Connector extension is enabled in Chrome Extensions"]

NOTE: Alternatively, you can install the NetBeans Connector extension directly from the Chrome Web Store by performing the following steps.

1. Start the Chrome browser and go to the link:https://chrome.google.com/webstore/[+Chrome Web Store+].
2. Search the Chrome Web Store for the Netbeans Connector extension.
3. Click Add To Chrome in the search results page and click Add when you are prompted to add the extension. 

image::images/html5-install-extension1.png[title="NetBeans Connector extension in Chrome Web Store"]

=== Offline Installation of the Extension

If you are unable to connect to the Chrome Web Store you can install the NetBeans Connector extension that is bundled with the IDE. If you run a NetBeans HTML5 project and you are prompted to install the NetBeans Connector extension, you can perform the following steps to install the extension if you are not able to access the Chrome Web Store.

1. Click Not Connected in the Install Chrome Extension dialog box.

image::images/html5-offline-extension1.png[title="Install Chrome extension dialog box"]

[start=2]
2. Click *locate* in the dialog box to open the NetBeans IDE installation folder on your local system that contains the * ``netbeans-chrome-connector.crx`` * extension.

image::images/html5-offline-extension2.png[title="NetBeans Connector extension is enabled in Chrome Extensions"]

[start=3]
3. Open the Chrome extensions page ( ``chrome://extensions/`` ) in your Chrome browser.

image::images/html5-offline-extension3.png[title="NetBeans Connector extension is enabled in Chrome Extensions"]

[start=4]
4. Drag the  ``netbeans-chrome-connector.crx``  extension into the Extensions page in the browser and click Add to confirm that you want to add the extension.

After the extension is added you will see that the NetBeans Connector extension is added to the list of installed extensions.

[start=5]
5. Click *Yes, the plugin is installed now* in the Install Chrome Extension dialog box to open the NetBeans HTML5 project in the Chrome browser. You will see the NetBeans Connector icon in the location bar of the browser tab.

== Using the Embedded WebKit Browser

It is recommended that you run your HTML5 applications in the Chrome browser with the NetBeans Connector extension installed when you are developing the application. The *Chrome with NetBeans Integration* option is selected by default as the run target when you create an HTML5 application. However, it is also possible to run your HTML5 application in the Embedded WebKit Browser that is bundled with the IDE.

When you run the HTML5 application in the Embedded WebKit Browser the IDE opens the Web Browser window in the IDE. The Embedded WebKit Browser supports many of the features that are enabled in the Chrome browser when the NetBeans Connector extension is installed, including Inspect mode, various screen size options and JavaScript debugging.

NOTE: When you choose Window > Web > Web Browser in the main menu the IDE opens the browser that is specified as the Web Browser in the Options window.

Perform the following steps to run an HTML5 application in the Embedded WebKit Browser.

1. Select Embedded WebKit Browser in the dropdown list in the toolbar.

image::images/html5-embedded1.png[title="List of target browsers for HTML5 applications in the dropdown list in the toolbar"]

[start=2]
2. Click Run in the toolbar or right-click the project node in the Projects window and choose Run.

When you run application the Web Browser window opens in the IDE.

image::images/html5-embedded2.png[title="Embedded WebKit Browser window"]

You can click the icons in the toolbar of the Web Browser tab to enable Inspect mode and to quickly switch between different display sizes.

== Creating a NetBeans HTML5 Project

In this exercise you will use the New Project wizard in the IDE to create a new HTML5 project. For this tutorial you will create a very basic HTML5 project that only has an  ``index.html``  file. In the wizard you will also select some jQuery JavaScript libraries that you want to use in the project.

1. Select File > New Project (Ctrl-Shift-N; ⌘-Shift-N on Mac) in the main menu to open the New Project wizard.
2. Select the *HTML5/JavaScript* category and then select *HTML5/JS Application*. Click Next.

image::images/html5-newproject1.png[title="HTML5 Application template in the New Project wizard"]

[start=3]
3. Type *HTML5Demo* for the Project Name and specify the directory on your computer where you want save the project. Click Next.

4. In Step 3. Site Template, select No Site Template. Click Next.

image::images/html5-newproject2.png[title="Site Templates panel in the New HTML5 Application wizard"]

When you select the No Site Template option the wizard generates a basic empty NetBeans HTML5 project. If you click Finish now the project will only contain a Site Root folder and an  ``index.html``  file in the Site Root folder.

The Site Template page of the wizard enables you to select from a list of popular online templates for HTML5 projects or to specify the location of a  ``.zip``  archive of a site template. You can type the URL of the  ``.zip``  archive or click Browse to specify a location on your local system. When you create a project based on a site template the files, libraries and the structure of the project are determined by the template.

NOTE: You must be online to create a project that is based on one of the online templates in the list.

[start=5]
5. In Step 4. Tools, select only "Bower", which is the standard HTML5 dependency management tool that you can use via the IDE.

image::images/html5-newproject3.png[title="Tools panel in the New HTML5 Application wizard"]

6. Click *Finish* to complete the wizard.

When you click Finish the IDE creates the project and displays a node for the project in the Projects window and opens the  ``index.html``  file in the editor.

image::images/html5-projectswindow1.png[title="JavaScript Libraries panel in the New HTML5 Application wizard"]

You can now test that your project displays correctly in the Chrome browser.

[start=7]
7. Confirm that Chrome with NetBeans Connector integration is selected in the browser dropdown table in the toolbar. 

image::images/html5-js-selectbrowser.png[title="Browser selected in dropdown list in toolbar"]

[start=8]
8. Right-click the project node in the Projects window and choose Run.

When you choose Run the IDE opens a tab in the Chrome browser and displays the default  ``index.html``  page of the application. The Browser DOM window opens in the IDE and displays the DOM tree of the page that is open in the browser.

image::images/html5-runproject.png[title="Application in the Chrome browser tab"]

You will notice that there is a yellow bar in the browser tab that notifies you that the NetBeans Connector is debugging the tab. The IDE and the browser are connected and are able to communicate with each other when the yellow bar is visible. When you launch an HTML5 application from the IDE the JavaScript debugger is automatically enabled. When you save changes to a file or make changes to a CSS style sheet you do not need to reload the page because the browser window is automatically updated to display the changes.

If you close the yellow bar or click Cancel you will break the connection between the IDE and the browser. If you break the connection you will need to run the HTML5 application from the IDE again.

You will also notice that the NetBeans icon is visible in the URL location field of the browser. You can click the icon to open a menu that provides various options for changing the display size of the browser and for enabling the Inspect in NetBeans mode.

image::images/html5-runproject2.png[title="NetBeans menu in the Chrome browser tab"]

If you select one of the default devices in the menu the browser window will resize to the dimensions of the device. This enables you to see how the application will look on the selected device. HTML5 applications are usually designed to respond to the size of the screen of the device on which they are viewed. You can use JavaScript and CSS rules that respond to the screen size and modify how the application is displayed so that the layout is optimized for the device.

== Installing and Using Bower

In this exercise you will set up Bower (link:http://bower.io[+bower.io+]) and use it to download the JavaScript libraries that you'll use in the sections that follow.

1. Right-click the project and choose Properties.

image::images/html5-bower-1.png[title="bower1"]

[start=2]
2. If Bower has not been installed, you will see the tab below. Click Configure Bower. If Bower has been installed, skip to step 5 below.

image::images/html5-bower-2.png[title="bower2"]

[start=3]
3. Click the Install Bower link and go through the steps required for setting up Bower. To use Bower, you will also need Node, NPM, and Git. All these are standard tools used in the JavaScript ecosystem. Familiarize yourself with them if needed before continuining.

image::images/html5-bower-3.png[title="bower3"]

[start=4]
4. Specify the location of the Bower installation. Click Apply.

image::images/html5-bower-4.png[title="bower4"]

[start=5]
5. Back in the Bower tab, search for the  ``jquery``  and  ``jqueryui``  JavaScript libraries. By default the libraries are created in the  ``public_html/bower_components``  folder of the project. Change the  ``.bowerrc``  file in your project, if you want the libraries to be installed in a different folder.

You can use the text field in the panel to filter the list of JavaScript libraries. For example, type *jq* in the field to help you find the  ``jquery``  libraries. You can Ctrl-click the names of the libraries to select multiple libraries.

image::images/html5-bower-5.png[title="bower5"]

NOTE: You can click on the library version number in the Version column to open a popup window that enables you to select older versions of the library. By default the wizard displays the most recent version.

NOTE: For this tutorial, choose the latest version of the libraries.

When you have completed this step, you should see the below.

image::images/html5-bower-6.png[title="bower6"]

[start=6]
6. Click OK and Bower will download the JavaScript libraries and, once the process is complete, you should see them in the Projects window.

image::images/html5-bower-7.png[title="bower7"]

== Editing the HTML File

In this exercise you will add the project resources to the project and edit the  ``index.html``  file to add links to the resources and add some CSS rules. You will see how a few simple CSS selectors when combined with JavaScript can significantly change how a page is displayed in a browser.

1. Download the link:https://netbeans.org/projects/samples/downloads/download/Samples/Web%20Client/HTML5Demo-projectresources.zip[+project resources+] archive and extract the contents.

The ZIP archive contains two folders with files that you need to add to the project:  ``pix``  and  ``css`` .

[start=2]
2. Copy the  ``pix``  and  ``css``  folders into the Site Root folder.

Note: If you are looking at the directory structure of the project, you need to copy the folders into the  ``public_html``  folder.

image::images/html5-fileswindow.png[title="NetBeans menu in the Chrome browser tab"]

[start=3]
3. Open `index.html` in the editor (if it is not already open).
4. In the editor, add references to the JavaScript libraries that you added when you created the project by adding the following code (in bold) between the opening and closing  ``<head>``  tags.

[source,html]
----

<html>
  <head>
    <title></title>
    <meta charset=UTF-8">
    <meta name="viewport" content="width=device-width">
    *<script type="text/javascript" src="bower_components/jquery/dist/jquery.js"></script>
    <script type="text/javascript" src="bower_components/jquery-ui/jquery-ui.js"></script>*
  </head>
  <body>
    TODO write content
  </body>
</html>
----

You can use the code completion in the editor to help you.

image::images/html5-editor1.png[title="Code completion in the editor"]

[start=5]
5. Remove the default '`TODO write content`' comment and type the following code between the  ``body``  tags.

[source,html]
----

    <body>
        <div>

            <h3><a href="#">Mary Adams</a></h3>
            <div>
                <img src="pix/maryadams.jpg" alt="Mary Adams">
                <ul>
                    <li><h4>Vice President</h4></li>
                    <li><b>phone:</b> x8234</li>
                    <li><b>office:</b> 102 Bldg 1</li>
                    <li><b>email:</b> m.adams@company.com</li>
                </ul>
                <br clear="all">
            </div>

            <h3><a href="#">John Matthews</a></h3>
            <div>
                <img src="pix/johnmatthews.jpg" alt="John Matthews">
                <ul>
                    <li><h4>Middle Manager</h4></li>
                    <li><b>phone:</b> x3082</li>
                    <li><b>office:</b> 307 Bldg 1</li>
                    <li><b>email:</b> j.matthews@company.com</li>
                </ul>
                <br clear="all">
            </div>

            <h3><a href="#">Sam Jackson</a></h3>
            <div>
                <img src="pix/samjackson.jpg" alt="Sam Jackson">
                <ul>
                    <li><h4>Deputy Assistant</h4></li>
                    <li><b>phone:</b> x3494</li>
                    <li><b>office:</b> 457 Bldg 2</li>
                    <li><b>email:</b> s.jackson@company.com</li>
                </ul>
                <br clear="all">
            </div>

            <h3><a href="#">Jennifer Brooks</a></h3>
            <div>
                <img src="pix/jeniferapplethwaite.jpg" alt="Jenifer Applethwaite">
                <ul>
                    <li><h4>Senior Technician</h4></li>
                    <li><b>phone:</b> x9430</li>
                    <li><b>office:</b> 327 Bldg 2</li>
                    <li><b>email:</b> j.brooks@company.com</li>
                </ul>
                <br clear="all">
            </div>
        </div>
    </body>
----

[start=6]
6. Save your changes.

When you save your changes the page automatically reloads in the browser and the page should look similar to the following image.

image::images/html5-runproject3.png[title="Reloaded page in in the Chrome browser tab"]

[start=7]
7. Type the following inline CSS rules between the  ``<head>``  tags in the file.

[source,html]
----

<style type="text/css">
    ul {list-style-type: none}
    img {
        margin-right: 20px; 
        float:left; 
        border: 1px solid;
    }
</style>
----

Press Ctrl-Space to use the code completion in the editor when you add the CSS rules.

image::images/html5-editor2.png[title="Code completion of CSS rules in the editor"]

If you open the Browser DOM window you can see the current structure of the page.

image::images/dom-browser.png[title="Browser DOM window showing DOM tree"]

[start=8]
8. Add the following link to the style sheet (in *bold*) between the `<head>` tags.

[source,html]
----

<head>
...
    <script type="text/javascript" src="bower_components/jquery-ui/jquery-ui.js"></script>
    *<link type="text/css" rel="stylesheet" href="css/basecss.css">*
...
</head>
----

The  ``basecss.css``  style sheet is based on some of the CSS rules that are defined in the custom CSS style sheet in the jQuery "UI lightness" theme.

You can open the  ``basecss.css``  style sheet in the editor and modify the style sheet to add the CSS rules that you added in the previous step or create a new style sheet for the CSS rules.

[start=9]
9. Add the following code between the  ``<head>``  tags to run a jQuery script when the elements in the page are loaded.

[source,html]
----

    *<script type="text/javascript">
        $(document).ready(function() {

        });
    </script>*
</head>
----

jQuery works by connecting dynamically-applied JavaScript attributes and behaviors to elements of the DOM (Document Object Model). The jQuery instructions that are used in this example must be executed only after all of the elements of the DOM have been loaded by the browser. This is important because jQuery behaviors connect to elements of the DOM, and these elements must be available to jQuery in order to get the results we expect. jQuery takes care of this for us through its built-in `(document).ready` function, which follows the jQuery object, represented by `$`.

You can also use the following abbreviated version of this function.


[source,javascript]
----

$(function(){

});
----

The instructions for jQuery take the form of a JavaScript method, with an optional object literal representing an array of parameters, and must be placed between the curly braces `{}` inside the `(document).ready` function in order to execute only at the proper time, which is after the DOM has completely loaded.

[start=10]
10. Add the following code (in bold) inside the `(document).ready` function, between the braces `{}`.

[source,html]
----

    <script type="text/javascript">
        $(document).ready(function() {
            *$("#infolist").accordion({
                autoHeight: false
            });*
        });
    </script>
</head>
----

This code will invoke the link:http://jqueryui.com/demos/accordion/[+jQuery accordion widget+] script that is included in the link:http://jqueryui.com/[+jQuery UI library+]. The accordion script will modify the elements within the DOM object that is identified as  ``infolist`` . In this code, `#infolist` is a CSS selector connected to a unique DOM element that has an `id` attribute with the value `infolist`. It is connected using typical JavaScript dot notation ('`.`') to the jQuery instruction that uses the `accordion()` method to display this element.

In the next step you will identify an element in the page as  ``infolist`` .

NOTE: You also specified '`autoHeight: false`' in the above snippet. This prevents the accordion widget from setting the height of each panel based on the highest content part contained within the markup. For more information, consult the link:http://docs.jquery.com/UI/Accordion[+accordion API documentation+].

The  ``<head>``  section of the `index.html` file should look as follows.


[source,html]
----

<html>
    <head>
        <title></title>
        <meta charset="UTF-8">        
        <meta name="viewport" content="width=device-width">
        <script type="text/javascript" src="bower_components/jquery/dist/jquery.js"></script>
        <script type="text/javascript" src="bower_components/jquery-ui/jquery-ui.js"></script>
        <link type="text/css" rel="stylesheet" href="css/basecss.css">

        <style type="text/css">
            ul {list-style-type: none}
            img {
                margin-right: 20px; 
                float:left; 
                border: 1px solid;
            }
        </style>
        <script type="text/javascript">
            $(document).ready(function() {
                $("#infolist").accordion({
                    autoHeight: false
                });
            });
        </script>
    </head>
----

You can tidy up your code by right-clicking in the editor and choosing Format.

[start=11]
11. Modify the  ``<div>``  element that encloses the page contents by adding the following `id` selector and value (in bold).

[source,html]
----

<body>
    <div *id="infolist"*>
            
----

This `<div>` element encloses the contents of the page (the four sets of `<h3>` tags and `<div>` tags that you added earlier in the tutorial).

You can add the selector to the element in the Edit CSS Rules dialog box. To open the Edit CSS Rules dialog box, right-click in the  ``<div>``  tag in the editor and choose Edit CSS Rules in the popup menu. Alternatively, if the insert cursor is in the  ``<div>``  tag in the editor you can click the Edit CSS Rules button (image::images/newcssrule.png[title="Code completion in the editor"]) in the CSS Styles window (Window > Web > CSS Styles).

image::images/html5-cssstyles.png[title="CSS Styles window"]

In the CSS Rules dialog box, select  ``id``  as the Selector Type and type *infolist* as the Selector. Confirm that Apply Changes to the Element is selected.

image::images/html5-cssrules.png[title="Edit CSS Rules dialog box"]

When you click OK in the dialog box a CSS rule for the  ``infolist``  selector is automatically added to the  ``basecss.css``  style sheet.

[start=12]
12. Save your changes to  ``index.html``  (Ctrl-S; ⌘-S on Mac).

When you save your changes the page in the web browser reloads automatically. You can see that the layout of the page has changed and that the page now uses the CSS style rules that are defined in the  ``basecss.css``  style sheet. One of the lists below the  ``<h3>``  is open but the others are now collapsed. You can click an  ``<h3>``  element to expand the list.

image::images/html5-runproject5.png[title="The final project loaded in the browser"]

The jQuery accordion function now modifies all the page elements that are contained in the  ``infolist``  DOM object. In the Navigator window you can see the structure of the HTML file and that the  ``div``  element that is identified by  ``id=infolist`` .

image::images/navigator3.png[title="Browser DOM window"]

You can right-click on an element in the Navigator window and choose Go To Source to quickly navigate to the location of that element in the source file.

In the Browser DOM window you can see the DOM elements in the page that is rendered in the browser and the JQuery styles that are applied to the elements.

image::images/dom-browser3.png[title="Browser DOM window"]

When Inspect in NetBeans Mode is enabled in the browser, when you select an element in the browser window the element is highlighted in the Browser DOM window.


[[template]]
=== Saving the Project as a Site Template

You can save your project as a site template that you can use as a template to create other HTML5 sites that are based on the project. The site template can include JavaScript libraries, CSS files, images and templates for HTML files. The IDE provides a wizard to help you select the files that you want to include in the site template.

1. Right-click the project in the Projects window and choose Save as Template in the popup menu.
2. Type *HTML5DemoSiteTemplate* in the Name field and specify the location where you want to save the template.
3. Confirm that all the files are selected. Click Finish.

If you expand the nodes in the tree in the dialog box you can see the files that will be included in the site template.

image::images/html5-sitetemplate.png[title="Create Site Template dialog box"]

You can see that the site template will include the  ``index.html``  file, the CSS style sheet, the images used in the project, though not the JavaScript libraries since Bower can be used by anyone using the template to manage the libraries. The site template can also include any configuration files and tests.

When you click Finish the IDE will generate the site template as a  ``.zip``  archive.

When you want to create a project that is based on the site template you specify the location of the  ``.zip``  archive in the Site Template panel of the New Project wizard.


[[summary]]
== Summary

In this tutorial you have learned how to create an empty HTML5 project that uses a couple jQuery JavaScript libraries. You also learned how to install the NetBeans Connector extension for the Chrome browser and run the HTML5 project in the browser. When you edited the  ``index.html``  file you saw that the IDE provides some tools that can help you to edit HTML and CSS files.

