<?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="CHANGE../../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="navigator_api">Navigator API</apidef>
        <!-- etc. -->
    </apidefs>

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

  <changes>
    <change id="NavigatorPanelDynamicRegistration">
        <api name="navigator_api"/>
        <summary>Added SPI interface <code>NavigatorPanel.DynamicRegistration</code></summary>
        <version major="1" minor="41"/>
        <date year="2018" month="8" day="14"/>
        <author login="jlahoda"/>
        <compatibility binary="compatible" source="compatible" deprecation="no" deletion="no" addition="yes"/>
        <description>
            <p>
                Added SPI interface <code>NavigatorPanel.DynamicRegistration</code> to
                allow dynamic registration of NavigatorPanels.
            </p>
        </description>
        <class package="org.netbeans.spi.navigator" name="NavigatorPanel"/>
    </change>
    <change id="NavigatorPanelWithToolbar">
        <api name="navigator_api"/>
        <summary>Added SPI interface <code>NavigatorPanelWithToolbar</code></summary>
        <version major="1" minor="25"/>
        <date year="2012" month="8" day="20"/>
        <author login="jpeska"/>
        <compatibility binary="compatible" source="compatible" deprecation="no" deletion="no" addition="yes"/>
        <description>
            <p>
                Added SPI interface <code>NavigatorPanelWithToolbar</code>. Clients will implement this interface when they need a toolbar for their Navigator view/panel.
            </p>
        </description>
        <class package="org.netbeans.spi.navigator" name="NavigatorPanelWithToolbar"/>
        <issue number="217091"/>
    </change>
    <change id="NavigatorPanel.Registration">
        <api name="navigator_api"/>
        <summary>Added <code>@NavigatorPanel.Registration</code></summary>
        <version major="1" minor="22"/>
        <date year="2012" month="1" day="12"/>
        <author login="glick"/>
        <compatibility binary="compatible" source="compatible" deprecation="no" deletion="no" addition="yes">
            <p>
                Upgrade manual layer registrations.
            </p>
        </compatibility>
        <description>
            <p>
                Added <code>@NavigatorPanel.Registration</code> for ease of use and lazy loading.
            </p>
        </description>
        <class package="org.netbeans.spi.navigator" name="NavigatorPanel"/>
        <issue number="206954"/>
    </change>
    <change id="NavigatorDisplayer">
        <api name="navigator_api"/>
        <summary>Added SPI interface NavigatorDisplayer</summary>
        <version major="1" minor="19"/>
        <date day="31" month="8" year="2011"/>
        <author login="tpavek"/>
        <compatibility binary="compatible" source="compatible" deprecation="no" deletion="no" addition="yes"/>
        <description>
            Added <code>NavigatorDisplayer</code>
            which can be implemented to provide a different visualization of the navigator panels
            than in the default Navigator window. Can be useful in a different app than NetBeans IDE.
            Added <code>NavigatorHandler.activateNavigator</code>.
        </description>
        <class package="org.netbeans.spi.navigator" name="NavigatorDisplayer"/>
        <class package="org.netbeans.spi.navigator" name="NavigatorHandler"/>
        <issue number="201246"/>
    </change>
    <change id="panelsPolicy">
        <api name="navigator_api"/>
        <summary>Added SPI interface NavigatorLookupPanelsPolicy.</summary>
        <version major="1" minor="6"/>
        <date day="16" month="4" year="2007"/>
        <author login="dsimonek"/>
        <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
        <description>
            <a href="@TOP@/org/netbeans/spi/navigator/NavigatorLookupPanelsPolicy.html">NavigatorLookupPanelsPolicy</a>
            is new SPI interface for SPI clients
            who want to affect searching mechanism for available NavigatorPanel
            implementations. Method NavigatorLookupPanelsPolicy.getPanelsPolicy()
            allows for example to remove active Node/DataObject related NavigatorPanel
            implementations from Navigator window.<p></p>
        </description>
        <class package="org.netbeans.spi.navigator" name="NavigatorLookupPanelsPolicy"/>
        <issue number="100457"/>
    </change>      

    <change id="undoRedo">
        <api name="navigator_api"/>
        <summary>Added SPI interface NavigatorPanelWithUndo.</summary>
        <version major="1" minor="5"/>
        <date day="10" month="4" year="2007"/>
        <author login="dsimonek"/>
        <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
        <description>
            <a href="@TOP@/org/netbeans/spi/navigator/NavigatorPanelWithUndo.html">NavigatorPanelWithUndo</a>
            is new SPI interface which extands NavigatorPanel
            by support for undoing and redoing changes in navigation views.
            Method NavigatorPanelWithUndo.getUndoRedo() allows clients
            to specify UndoRedo support that will be propagated to the 
            Navigator TopComponent when this panel is active in navigation area.
        </description>
        <class package="org.netbeans.spi.navigator" name="NavigatorPanelWithUndo"/>
        <issue number="98125"/>
    </change>      

    <change id="navigatorHandler">
        <api name="navigator_api"/>
        <summary>Added API class NavigatorHandler and API method NavigatorHandler.activatePanel.</summary>
        <version major="1" minor="4"/>
        <date day="19" month="9" year="2006"/>
        <author login="dsimonek"/>
        <compatibility addition="yes"/>
        <description>
            NavigatorHandler is new API class for driving navigator behaviour. 
            Method NavigatorHandler.activatePanel(NavigatorPanel) allows clients
            to programmatically activate the panel - panel becomes active and
            visible in navigator area.
        </description>
        <class package="org.netbeans.spi.navigator" name="NavigatorHandler"/>
    </change>      
      
    <change>
        <api name="navigator_api"/>
        <summary>Initial version released</summary>
        <version major="1" minor="0"/>
        <date day="8" month="8" year="2005"/>
        <author login="dsimonek"/>
        <compatibility addition="yes"/>
        <description>first initial release of the Navigator API.
        </description>
    </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 Progress 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 Progress API/SPI.</p>

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

      <hr/><standard-changelists module-code-name="org.netbeans.api.progress"/>

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

    </body>
  </htmlcontents>

</apichanges>
