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

-->
<?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, this will be done periodically; just
change the XML. If you can, validate the XML against the DTD, if not
do not worry about it. 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>
    <!-- org.netbeans.modules.options.colors.spi -->
    <apidef name="spi">Fonts Colors Options SPI</apidef>
  </apidefs>

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

  <changes>
    <change id="CustomCustomizer">
      <summary>Adding CustomCustomizer</summary>
      <version major="1" minor="50"/>
      <date day="23" month="1" year="2014"/>
      <author login="theofanis"/>
      <compatibility source="compatible" binary="compatible" deletion="no" addition="yes" modification="no"/>
      <description>
        <p>
            Added CustomCustomizer class in PreferencesCustomizer in order for the options infrastructure to be able to 
            access saved values of options in order to enable/disable the Apply button in options window.
        </p>
      </description>
      <class package="org.netbeans.modules.options.editor.spi" name="PreferencesCustomizer"/>
      <issue number="240879"/>
  </change>
    <change id="OptionsFilter.create">
      <summary>Adding OptionsFilter.create</summary>
      <version major="1" minor="42"/>
      <date day="23" month="4" year="2013"/>
      <author login="jlahoda"/>
      <compatibility source="compatible" binary="compatible" deletion="no" addition="yes" modification="no"/>
      <description>
        <p>
            Added OptionsFilter.create
        </p>
      </description>
      <class package="org.netbeans.modules.options.editor.spi" name="OptionsFilter"/>
  </change>
    <change id="AddedHiglightingPanelController">
      <summary>Separating HighlightingPanel and its controller</summary>
      <version major="1" minor="39"/>
      <date day="19" month="2" year="2012"/>
      <author login="mkristofic"/>
      <compatibility source="incompatible" binary="compatible" deletion="yes" addition="yes" modification="yes"/>
      <description>
        <p>
        [sigtest] Missing Superclasses or Superinterfaces
        [sigtest] ---------------------------------------
        [sigtest]
        [sigtest] org.netbeans.modules.options.colors.HighlightingPanel:      interface @ org.netbeans.modules.options.colors.spi.FontsColorsController
        [sigtest]
        [sigtest] Missing Methods
        [sigtest] ---------------
        [sigtest]
        [sigtest] org.netbeans.modules.options.colors.HighlightingPanel:      method public javax.swing.JComponent org.netbeans.modules.options.colors.HighlightingPanel.getComponent()
        [sigtest]
        [sigtest] Added Classes
        [sigtest] -------------
        [sigtest]
        [sigtest] org.netbeans.modules.options.colors.HighlightingPanelController
        </p>
      </description>
      <class package="org.netbeans.modules.options.colors" name="HighlightingPanelController"/>
      <issue number="199592"/>
  </change>
  <change id="FormattingCustomizerPanel.moved">
      <api name="spi"/>
      <summary>Moving FormattingCustomizerPanel to editor.indent.project module</summary>
      <version major="1" minor="20"/>
      <date day="17" month="2" year="2010"/>
      <author login="vstejskal"/>
      <compatibility source="incompatible" binary="compatible" deletion="yes" addition="no" modification="no"/>
      <description>
        <p>
            Moving <code>FormattingCustomizerPanel</code> class to <code>editor.indent.project</code> module.
        </p>
      </description>
      <class package="org.netbeans.modules.options.indentation" name="FormattingCustomizerPanel"/>
      <issue number="178311"/>
  </change>

  <change id="tree.model.filter">
      <api name="spi"/>
      <summary>Adding OptionsFilter to allow filtering inside the options dialog</summary>
      <version major="1" minor="19"/>
      <date day="17" month="2" year="2010"/>
      <author login="jlahoda"/>
      <compatibility source="compatible" deletion="no" addition="yes" modification="no"/>
      <description>
        <p>
            Adding <code>OptionsFilter</code> to allow filtering/search inside the options dialog.
        </p>
      </description>
      <class package="org.netbeans.modules.options.editor.spi" name="OptionsFilter" />
  </change>
  <change id="project.formatting.category.provider">
      <api name="spi"/>
      <summary>Adding 'allowedMimeTypes' filter to the project formatting settings customizer</summary>
      <version major="1" minor="10"/>
      <date day="25" month="9" year="2008"/>
      <author login="vstejskal"/>
      <compatibility source="compatible" deletion="no" addition="yes" modification="no"/>
      <description>
        <p>
            Adding <code>FormattingCustomizerPanel.createCategoryProvider</code> method
            for modules that add 'Formatting' node to their project properties dialog.
            The method recognizes 'allowedMimeTypes' XML layer attribute, which should
            contain the comma separated list of mime types, which formatting settings
            customizers should be made available for the project. If the attribute is
            not specified all registered customizers are shown. If the attribute specifies
            an empty list only the 'All Languages' customizer is shown.
        </p>
      </description>
  </change>

  <change id="FontsColorsController.added">
      <api name="spi"/>
      <summary>Creating friends SPI and adding FontsColorsController</summary>
      <version major="1" minor="4"/>
      <date day="5" month="6" year="2007"/>
      <author login="vstejskal"/>
      <compatibility source="compatible" deletion="no" addition="yes" modification="no"/>
      <description>
        <p>
            Making the <code>org.netbeans.modules.options.colors.spi</code> package
            accessible to friends. Also adding <code>FontsColorsController</code>
            to it. The module now reads panels for the <i>Editor</i> and <i>Fonts &amp; Colors</i>
            categories from the SystemFileSystem folders
            <code>org-netbeans-modules-options-editor/OptionsDialogCategories/Editor</code> and
            <code>org-netbeans-modules-options-editor/OptionsDialogCategories/FontsColors</code>.
        </p>
      </description>
  </change>

  </changes>

  <htmlcontents>
<!--

                            NO NO NO NO NO!

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

          AUTOMATICALLY GENERATED FROM APICHANGES.XML, DO NOT EDIT

                SEE lexer/api/doc/changes/apichanges.xml

-->
    <head>
      <title>Lexer API Changes by Date</title>
      <link rel="stylesheet" href="prose.css" type="text/css"/>
      <meta name="CATEGORY" content="OtherDevelopmentDoc"/>
      <meta name="DESCRIPTION" content="A cross-indexed list of all changes made to the Lexer API."/>
    </head>
    <body>

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

<!-- The actual lists of changes, as summaries and details: -->

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

    </body>
  </htmlcontents>

</apichanges>
