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

-->
<!-- Search for CHANGEME in this document when copying and using it: -->
<?xml-stylesheet type="text/xml" href="../../nbbuild/javadoctools/apichanges.xsl"?>
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">

<!--

INFO FOR PEOPLE ADDING CHANGES:

Check the DTD (apichanges.dtd) for details on the syntax. You do not
need to regenerate the HTML, as this is part of Javadoc generation; just
change the XML. Rough syntax of a change (several parts optional):

<change>
    <api name="compiler"/>
    <summary>Some brief description here, can use <b>XHTML</b></summary>
    <version major="1" minor="99"/>
    <date day="13" month="6" year="2001"/>
    <author login="jrhacker"/>
    <compatibility addition="yes"/>
    <description>
        The main description of the change here.
        Again can use full <b>XHTML</b> as needed.
    </description>
    <class package="org.openide.compiler" name="DoWhatIWantCompiler"/>
    <issue number="14309"/>
</change>

Also permitted elements: <package>, <branch>. <version> is API spec
version, recommended for all new changes. <compatibility> should say
if things were added/modified/deprecated/etc. and give all information
related to upgrading old code. List affected top-level classes and
link to issue numbers if applicable. See the DTD for more details.

Changes need not be in any particular order, they are sorted in various
ways by the stylesheet anyway.

Dates are assumed to mean "on the trunk". If you *also* make the same
change on a stabilization branch, use the <branch> tag to indicate this
and explain why the change was made on a branch in the <description>.

Please only change this file on the trunk! Rather: you can change it
on branches if you want, but these changes will be ignored; only the
trunk version of this file is important.

Deprecations do not count as incompatible, assuming that code using the
deprecated calls continues to see their documented behavior. But do
specify deprecation="yes" in <compatibility>.

This file is not a replacement for Javadoc: it is intended to list changes,
not describe the complete current behavior, for which ordinary documentation
is the proper place.

-->

<apichanges>

    <!-- First, a list of API names you may use: -->
    <apidefs>
        <apidef name="codetemplates">Editor Code Templates API</apidef>
        <!-- etc. -->
    </apidefs>

    <!-- ACTUAL CHANGES BEGIN HERE: -->

    <changes>
        <change id="CodeTemplateFilter.Factory.createForDoc">
             <api name="codetemplates"/>
             <summary>Default method <code>createFilter(Document, int, int)</code> added to <code>CodeTemplateFilter.Factory</code>.</summary>
             <version major="1" minor="57"/>
             <date day="9" month="9" year="2021"/>
             <author login="dbalek"/>
             <compatibility addition="yes" binary="compatible" deletion="no" deprecation="no" modification="no" semantic="compatible" source="compatible"/>
             <description>
                 Added method allows creating code template filters for the given document and range.
             </description>
             <class package="org.netbeans.lib.editor.codetemplates.spi" name="CodeTemplateFilter"/>
        </change>
        <change id="orderingAttribute.added">
             <api name="codetemplates"/>
             <summary>Added <code>ordering</code> for code template parameters.</summary>
             <version major="1" minor="43"/>
             <date day="15" month="8" year="2016"/>
             <author login="markiewb"/>
             <compatibility addition="yes" binary="compatible" deletion="no" deprecation="no" modification="no" semantic="compatible" source="compatible"/>
             <description>
                 The ordering attribute defines the sequence in which placeholders arecompleted. Use 0 for the first element, 1 for the second... Placeholders
                 without ordering information will be placed after the last placeholder with ordering information.
                 <br/>
                 Example of ordering of parameters :
                 <pre>
                     // paramC comes first, then paramB, then paramA
                     ${paramA} ${paramB ordering=2} ${paramC ordering=1}
                 </pre>
             </description>
             <class package="org.netbeans.lib.editor.codetemplates.spi" name="CodeTemplateParameter"/>
             <issue number="181703"/>
        </change>
        <change id="ContextBasedFactory">
             <api name="codetemplates"/>
             <summary>Added <code>CodeTemplateFilter.ContextBasedFactory</code>.</summary>
             <version major="1" minor="34"/>
             <date day="3" month="5" year="2013"/>
             <author login="dbalek"/>
             <compatibility addition="yes" binary="compatible" deletion="no" deprecation="no" modification="no" semantic="compatible" source="compatible"/>
             <description>
                 Added interface <code>CodeTemplateFilter.ContextBasedFactory</code>
                 with the <code>getSupportedContexts()</code> method as an extension
                 to the exisitng <code>CodeTemplateFilter.Factory</code>
                 that allows for specifying all the possible context values
                 valid for the given language (supported by the particular
                 CodeTemplateFilters that the factory creates).
             </description>
             <class package="org.netbeans.lib.editor.codetemplates.spi" name="CodeTemplateFilter"/>
             <issue number="160771"/>
        </change>

        <change>
            <api name="codetemplates"/>
            <summary>Editor Code Templates API created</summary>
            <version major="1" minor="0"/>
            <date day="27" month="7" year="2005"/>
            <author login="mmetelka"/>
            <compatibility addition="no"/>
            <description>
            <p>
                Editor Code Templates API was created.
            </p>
            </description>
            <issue number="35573"/>
        </change>
    </changes>

    <!-- Now the surrounding HTML text and document structure: -->

    <htmlcontents>
    <head>
      <title>Change History for the Editor Code Templates API</title>
      <link rel="stylesheet" href="prose.css" type="text/css"/>
    </head>
    <body>

<p class="overviewlink"><a href="overview-summary.html">Overview</a></p>

<h1>Introduction</h1>
<h2>What do the Dates Mean?</h2>

<p>
The supplied dates indicate when the API change was made, on the CVS
trunk. From this you can generally tell whether the change should be
present in a given build or not; for trunk builds, simply whether it
was made before or after the change; for builds on a stabilization
branch, whether the branch was made before or after the given date. In
some cases corresponding API changes have been made both in the trunk
and in an in-progress stabilization branch, if they were needed for a
bug fix; this ought to be marked in this list.
</p>

      <hr/>
      <standard-changelists module-code-name="org.netbeans.modules.editor.codetemplates/1"/>

      <hr/><p>@FOOTER@</p>

    </body>
  </htmlcontents>

</apichanges>
