<?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, 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="BaseProjectUIAPI">Project UI API</apidef>
        <!-- etc. -->
    </apidefs>

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

    <changes>
        <change id="LogicalAndPhysicalView">
            <api name="BaseProjectUIAPI"/>
            <summary>API to obtain basic project views added</summary>
            <version major="1" minor="101"/>
            <date day="24" month="11" year="2021"/>
            <author login="sdedic"/>
            <compatibility addition="yes"/>
            <description>
                <p>
                    An API for viewers to get project logical and physical project views has been introduced.
                </p>
            </description>
            <class package="org.netbeans.api.project.ui" name="OpenProjects"/>
        </change>
        <change id="ProjectConvertors-delegatingLookup">
            <api name="BaseProjectUIAPI"/>
            <summary>Added a support method into <code>ProjectConvertors</code> creating a <code>Lookup</code> delegating to the owner project.</summary>
            <version major="1" minor="85"/>
            <date day="24" month="5" year="2016"/>
            <author login="tzezula"/>
            <compatibility addition="yes"/>
            <description>
                <p>
                    Added a support method into <code>ProjectConvertors</code> creating a <code>Lookup</code> delegating to the owner project.
                </p>
            </description>
            <class package="org.netbeans.spi.project.ui.support" name="ProjectConvertors"/>
            <issue number="256585"/>
        </change>
        <change id="ProjectConvertors-lookup">
            <api name="BaseProjectUIAPI"/>
            <summary>Added support methods into <code>ProjectConvertors</code> for easier convertor project implementation.</summary>
            <version major="1" minor="82"/>
            <date day="21" month="7" year="2015"/>
            <author login="tzezula"/>
            <compatibility addition="yes"/>
            <description>
                <p>
                    Added support methods into the <code>ProjectConvertors</code> for easier <code>ProjectConvertor</code> lookup
                    and queries implementation.
                </p>
            </description>
            <class package="org.netbeans.spi.project.ui.support" name="ProjectConvertors"/>
            <issue number="253338"/>
        </change>
        <change id="ProjectConvertors-unregister">
            <api name="BaseProjectUIAPI"/>
            <summary>Added <code>unregisterConvertorProject</code>into <code>ProjectConvertors</code>.</summary>
            <version major="1" minor="81"/>
            <date day="16" month="7" year="2015"/>
            <author login="tzezula"/>
            <compatibility addition="yes"/>
            <description>
                <p>
                    Added <code>unregisterConvertorProject</code>into <code>ProjectConvertors</code> to allow
                    project generators to unload the artifical convertor project before creating a new one.
                </p>
            </description>
            <class package="org.netbeans.spi.project.ui.support" name="ProjectConvertors"/>
            <issue number="250268"/>
        </change>
        <change id="ProjectConvertors">
            <api name="BaseProjectUIAPI"/>
            <summary>Added <code>ProjectConvertors</code> the support for <code>ProjectConvertor</code>s.</summary>
            <version major="1" minor="80"/>
            <date day="15" month="7" year="2015"/>
            <author login="tzezula"/>
            <compatibility addition="yes"/>
            <description>
                <p>
                    Added <code>ProjectConvertors</code> providing a support for <code>ProjectConvertor</code>s.
                </p>
            </description>
            <class package="org.netbeans.spi.project.ui.support" name="ProjectConvertors"/>
            <issue number="250232"/>
        </change>
         <change id="ProjectConvertor">
            <api name="BaseProjectUIAPI"/>
            <summary>Added <code>ProjectConvertor</code> adding an ability to convert a folder into a project.</summary>
            <version major="1" minor="79"/>
            <date day="31" month="10" year="2014"/>
            <author login="tzezula"/>
            <compatibility addition="yes"/>
            <description>
                <p>
                    Added an ability to convert a folder into a project.
                    For a folder accepted by the <code>ProjectConvertor</code> an artifical in memory
                    project is created causing the folder looks like a regular <code>Project</code> in the UI.
                    The folder is converted into a regular <code>Project</code> when the artificial <code>Project</code>
                    is opened.
                </p>
            </description>
            <class package="org.netbeans.spi.project.ui" name="ProjectConvertor"/>
            <issue number="246846"/>
        </change>
         <change id="server.is.free">
            <api name="BaseProjectUIAPI"/>
            <summary>Split the api into a desktop (swing, awt) and NetBeans dependent and independent part.</summary>
            <version major="1" minor="78"/>
            <date day="26" month="5" year="2014"/>
            <author login="tstupka"/>
            <compatibility addition="yes">
                <p>
                    Runtime compatibility remains, compile time compatibility is
                    mostly preserved too. It is however recommended to upgrade
                    dependencies of client modules. Try running
                    <code>ant fix-dependencies</code> in your Ant module.
                </p>     
            </compatibility>               
            <description>
                <p>
                    The following classes were moved from the
                    <a href="@org-netbeans-modules-projectuiapi@/overview-summary.html">org.netbeans.modules.projectuiapi</a> module:
                </p>
                <ul>
                    <li><a href="@org-netbeans-modules-projectuiapi-base@/org/netbeans/api/project/ui/OpenProjects.html">OpenProjects</a></li>
                    <li><a href="@org-netbeans-modules-projectuiapi-base@/org/netbeans/api/project/ui/ProjectGroup.html">ProjectGroup</a></li>
                    <li><a href="@org-netbeans-modules-projectuiapi-base@/org/netbeans/api/project/ui/ProjectGroupChangeEvent.html">ProjectGroupChangeEvent</a></li>
                    <li><a href="@org-netbeans-modules-projectuiapi-base@/org/netbeans/api/project/ui/ProjectGroupChangeListener.html">ProjectGroupChangeListener</a></li>
                    <li><a href="@org-netbeans-modules-projectuiapi-base@/org/netbeans/spi/project/ui/PrivilegedTemplates.html">PrivilegedTemplates</a></li>
                    <li><a href="@org-netbeans-modules-projectuiapi-base@/org/netbeans/spi/project/ui/ProjectOpenedHook.html">ProjectOpenedHook</a></li>
                    <li><a href="@org-netbeans-modules-projectuiapi-base@/org/netbeans/spi/project/ui/ProjectProblemResolver.html">ProjectProblemResolver</a></li>
                    <li><a href="@org-netbeans-modules-projectuiapi-base@/org/netbeans/spi/project/ui/ProjectProblemsProvider.html">ProjectProblemsProvider</a></li>
                    <li><a href="@org-netbeans-modules-projectuiapi-base@/org/netbeans/spi/project/ui/RecommendedTemplates.html">RecommendedTemplates</a></li>
                    <li><a href="@org-netbeans-modules-projectuiapi-base@/org/netbeans/spi/project/ui/support/ProjectProblemsProviderSupport.html">ProjectProblemsProviderSupport</a></li>
                    <li><a href="@org-netbeans-modules-projectuiapi-base@/org/netbeans/spi/project/ui/support/UILookupMergerSupport.html">UILookupMergerSupport</a></li>
                </ul>
            </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 projects/projectuiapi/apichanges.xml

-->
    <head>
      <title>Change History for the Project UI 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-projectuiapi-base@/index.html">Project UI API</a>.</p>

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

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

    </body>
  </htmlcontents>

</apichanges>
