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

<apichanges>
    <apidefs>
        <apidef name="api">Core IDE API</apidef>
    </apidefs>

    <changes>
        <change id="ServicesTabProcessor">
            <api name="api"/>
            <summary>Annotation to register Nodes into Services tab</summary>
            <version major="1" minor="15"/>
            <date day="1" month="4" year="2009"/>
            <author login="jtulach"/>
            <compatibility addition="yes"/>
            <description>
                <p>
                    Use <a href="@TOP@/org/netbeans/api/core/ide/ServicesTabNodeRegistration.html">
                    ServicesTabNodeRegistration</a> to register your nodes
                    into <em>Services</em> in the IDE.
                </p>
            </description>
            <issue number="161286"/>
        </change>
    </changes>

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

    <htmlcontents>
        <!-- Generated from apichanges.xml -->
        <head>
            <title>Change History for the Core IDE API</title>
            <link rel="stylesheet" href="prose.css" type="text/css"/>
        </head>
        <body>

            <p class="overviewlink"><a href="@org-netbeans-core-ide@/overview-summary.html">Overview</a></p>

            <h1>Introduction</h1>
            <p>This document lists changes made to the <a href="@org-netbeans-core-ide@/overview-summary.html">Core IDE API</a>.</p>

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

        </body>
    </htmlcontents>

</apichanges>
