<?xml version="1.0" encoding="UTF-8"?>
<!-- Search for CHANGEME in this document when copying and using it: -->
<!--

    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.

-->
<?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="completion">Editor Code Completion API</apidef>
        <!-- etc. -->
    </apidefs>

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

    <changes>
        <change id="CompositeCompletionItem">
            <api name="completion"/>
            <summary>Addition of CompositeCompletionItem</summary>
            <version major="1" minor="38"/>
            <date day="24" month="9" year="2013"/>
            <author login="dbalek"/>
            <compatibility addition="yes"/>
            <description>
            <p>
                <code>CompositeCompletionItem</code> interface was added to allow for
                completion items containing possible sub-items.
            </p>
            </description>
            <issue number="236313"/>
        </change>

        <change id="CompletionResultSet.setHasAdditionalItemsText">
            <api name="completion"/>
            <summary>Addition of CompletionResultSet.setHasAdditionalItemsText()</summary>
            <version major="1" minor="11"/>
            <date day="7" month="2" year="2008"/>
            <author login="dbalek"/>
            <compatibility addition="yes"/>
            <description>
            <p>
                <code>void CompletionResultSet.setHasAdditionalItemsText(String text)</code> was added
                to allow for customization of the text displayed in a completion popup whenever
                a CompletionProvider indicates that additional items could be added to the result set.
            </p>
            </description>
            <issue number="124351"/>
        </change>

        <change id="CompletionResultSet.setHasAdditionalItems">
            <api name="completion"/>
            <summary>Addition of CompletionResultSet.setHasAdditionalItems()</summary>
            <version major="1" minor="9"/>
            <date day="27" month="6" year="2007"/>
            <author login="dbalek"/>
            <compatibility addition="yes"/>
            <description>
            <p>
                <code>void CompletionResultSet.setHasAdditionalItems(boolean value)</code> was added
                to indicate that some items could exist that will likely need a long time to be computed
		and added to the result set. It is preferred to add them on the special 'all' code
		completion invocation only.
            </p>
            </description>
            <issue number="104409"/>
        </change>

        <change id="ui.gestures.collector">
            <api name="completion"/>
            <summary>Support for UI Gestures Collector</summary>
            <version major="1" minor="8"/>
            <date day="17" month="4" year="2007"/>
            <author login="dbalek"/>
            <compatibility addition="yes"/>
            <description>
            <p>
            Adds few <a href="@org-openide-util@/org/openide/util/doc-files/logging.html">structured logging</a> 
            <a href="@TOP@/architecture-summary.html#logger-org.netbeans.ui.editor.completion">triggers</a> 
            to cooperate with the <!-- XXX @org-netbeans-modules-uihandler@/overview-summary.html link forbidden from stable -> dev module --> UI Gestures Collector.
            </p>
            </description>
        </change>

        <change id="CompletionResultSet.setWaitText">
            <api name="completion"/>
            <summary>Addition of CompletionResultSet.setWaitText()</summary>
            <version major="1" minor="5"/>
            <date day="8" month="11" year="2005"/>
            <author login="mmetelka"/>
            <compatibility addition="yes"/>
            <description>
            <p>
                <code>void CompletionResultSet.setWaitText(String waitText)</code> was added
                to allow customization of the text in the label displayed
                if the completion query results are not computed in certain timeout.
            </p>
            </description>
            <issue number="68235"/>
        </change>

        <change id="CompletionItem.getInsertPrefix">
            <api name="completion"/>
            <summary>Adddition of CompletionItem.getInsertPrefix()</summary>
            <version major="1" minor="4"/>
            <date day="8" month="11" year="2005"/>
            <author login="mmetelka"/>
            <compatibility addition="no"/>
            <description>
            <p>
                <code>CharSequence CompletionItem.getInsertPrefix()</code> was added.
            </p>
            </description>
            <issue number="68235"/>
        </change>

        <change id="CompletionTask.refresh">
            <api name="completion"/>
            <summary>Semantic change of CompletionTask.refresh()</summary>
            <version major="1" minor="3"/>
            <date day="8" month="11" year="2005"/>
            <author login="mmetelka"/>
            <compatibility addition="no"/>
            <description>
            <p>
                CompletionTask.refresh(CompletionResultSet resultSet) now allows
                <code>null</code> parameter.
                <br/>
                <code>void AsyncCompletionQuery.preQueryUpdate(JTextComponent component)</code>
                was added to reflect that in AsyncCompletionTask.
            </p>
            </description>
            <issue number="68235"/>
        </change>

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

    </changes>

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

    <htmlcontents>
<!--

                            NO NO NO NO NO!

         ==============>    DO NOT EDIT ME!  <==============

          AUTOMATICALLY GENERATED FROM APICHANGES.XML, DO NOT EDIT

                SEE CHANGEME/apichanges.xml

-->
    <head>
      <title>Change History for the Editor Code Completion 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>

<p>This document lists changes made to the <a href="@org-netbeans-modules-editor-completion@/architecture-summary.html">Editor Code Completion API</a>.</p>

<!-- The actual lists of changes, as summaries and details: -->
      <hr/>
      <standard-changelists module-code-name="org.netbeans.modules.editor.completion/1"/>

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

    </body>
  </htmlcontents>

</apichanges>
