<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.

-->
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">
<apichanges>
<apidefs>
    <apidef name="htmlui">HTML UI API</apidef>
</apidefs>
<changes>
    <change id="HTMLViewerSpi">
        <api name="htmlui"/>
        <summary>OnSubmit &amp; Service Provider Interface</summary>
        <version major="1" minor="23"/>
        <date year="2021" month="12" day="10"/>
        <author login="jtulach"/>
        <compatibility semantic="compatible" binary="compatible" source="compatible"/>
        <description>
            <p>
                Validate your dialogs with
                <a href="@TOP@org/netbeans/api/htmlui/HTMLDialog.OnSubmit.html">OnSubmit</a>
                interface. Write own
                <a href="@TOP@org/netbeans/spi/htmlui/HTMLViewerSpi.html">HTMLViewerSpi</a>
                to provide own "chrome" for displaying HTML UI components.
            </p>
        </description>
        <class package="org.netbeans.api.htmlui" name="HTMLDialog"/>
        <class package="org.netbeans.spi.htmlui" name="HTMLViewerSpi"/>
    </change>
    <change id="NoFreeGeoIp">
        <api name="htmlui"/>
        <summary>FreeGeoIp service no longer works</summary>
        <version major="1" minor="12"/>
        <date year="2019" month="5" day="9"/>
        <author login="jtulach"/>
        <compatibility deletion="yes" semantic="incompatible" binary="compatible" source="compatible"/>
        <description>
            <p>
                FreeGeoIp service no longer works. Removing the default GeoIp
                location provider.
            </p>
        </description>
    </change>
    <change id="defaultcss">
        <api name="htmlui"/>
        <summary>CSS for Look and Feel</summary>
        <version major="1" minor="7"/>
        <date year="2017" month="11" day="28"/>
        <author login="jtulach"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            <p>
                Each <code>WebView</code> created by one of the
                annotations (
                <a href="@TOP@org/netbeans/api/htmlui/HTMLComponent.html">@HTMLComponent</a>,
                <a href="@TOP@org/netbeans/api/htmlui/HTMLDialog.html">@HTMLDialog</a>,
                <a href="@TOP@org/netbeans/api/htmlui/OpenHTMLRegistration.html">@OpenHTMLRegistration</a>
                ) is by default skinned with a CSS that makes it
                look like the the other Swing components.
                Read <a href="@TOP@architecture-summary.html#property-data-netbeans-css">more</a>...
            </p>
        </description>
        <class package="org.netbeans.api.htmlui" name="HTMLComponent"/>
        <class package="org.netbeans.api.htmlui" name="HTMLDialog"/>
        <class package="org.netbeans.api.htmlui" name="OpenHTMLRegistration"/>
    </change>
    <change id="techids">
        <api name="htmlui"/>
        <summary>Support for Technology Ids</summary>
        <version major="1" minor="3"/>
        <date year="2015" month="3" day="27"/>
        <author login="jtulach"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            <p>
                The <a onclick="target='_blank'" href="http://bits.netbeans.org/html+java/">
                    HTML UI API for Java
                    </a> 
                revision 1.1 supports technolgy identifiers. Now they can
                be used via NetBeans annotations as well.
            </p>
        </description>
        <class package="org.netbeans.api.htmlui" name="HTMLComponent"/>
        <class package="org.netbeans.api.htmlui" name="HTMLDialog"/>
        <class package="org.netbeans.api.htmlui" name="OpenHTMLRegistration"/>
        <issue number="246133"/>
    </change>
    <change id="start">
        <api name="htmlui"/>
        <summary>Version 1.0 included in NetBeans Platform</summary>
        <version major="1" minor="0"/>
        <date year="2014" month="9" day="5"/>
        <author login="jtulach"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            <p>
                The <a onclick="target='_blank'" href="http://bits.netbeans.org/html+java/">
                    HTML UI API for Java
                    </a> 
                and NetBeans has been included
                in the NetBeans platform.
            </p>
        </description>
        <issue number="246133"/>
    </change>
</changes>
<htmlcontents>
<head>
<title>Change History for the HTML for Java and NetBeans API</title>
<link rel="stylesheet" href="prose.css" type="text/css"/>
</head>
<body>
<p class="overviewlink">
<a href="overview-summary.html">Overview</a>
</p>
<standard-changelists module-code-name="$codebase"/>
<hr/>
<p>@FOOTER@</p>
</body>
</htmlcontents>
</apichanges>
