<?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="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>
