<?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" type="text/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>
    <!-- Probably should not be used much: -->
    <apidef name="general">Cross-API</apidef>
    <!-- org.netbeans.spi -->
    <apidef name="services">Services API</apidef>
    <!-- org.netbeans.api.diff -->
    <apidef name="diff">Diff API</apidef>
    <!-- org.netbeans.api.merge -->
    <apidef name="merge">Merge API</apidef>
  </apidefs>

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

  <changes>
  
    <change id="netbeans_diff_default_compact">
        <api name="diff"/>
        <summary>Show compact diff with netbeans.diff.default.compact system property</summary>
        <version major="1" minor="52"/>
        <date day="2" month="5" year="2018"/>
        <author login="emi"/>
        <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
        <description>
            Added the system property netbeans.diff.default.compact which instructs the default DiffControllerProvider to
            show only the graphical diff (instead of the tabbed pane with the graphical and textual diffs).
        </description>
    </change>
    <change id="diff-api">
      <api name="diff"/>
      <summary>The Diff APIs created</summary>
      <version major="1" minor="3"/>            
      <date day="18" month="2" year="2002"/>
      <author login="mentlicher"/>
      <compatibility addition="yes"/>
      <description>
        The base classes adedd.
      </description>
    </change>

    <change id="StreamSource">
      <api name="diff"/>
      <summary>StreamSource class added</summary>
      <version major="1" minor="4"/>
      <date day="24" month="4" year="2002"/>
      <author login="mentlicher"/>
      <compatibility addition="yes"/>
      <description>
        Class, that is used as a source of named streams for diff and merge stuff.
      </description>
    </change>

    <change id="MergeVisualizer">
      <api name="merge"/>
      <summary>MergeVisualizer class added</summary>
      <version major="1" minor="5"/>
      <date day="24" month="4" year="2002"/>
      <author login="mentlicher"/>
      <compatibility addition="yes"/>
      <description>
        Service, that is used to resolve merge collisions.
      </description>
    </change>

    <change id="DiffView">
      <api name="diff"/>
      <summary>DiffView interface added</summary>
      <version major="1" minor="13"/>
      <date day="23" month="5" year="2005"/>
      <author login="mentlicher"/>
      <compatibility addition="yes"/>
      <description>
        A controler interface, that allows to programmatically control the
        diff component.
      </description>
    </change>

    <change id="StreamSource-extended">
        <api name="diff"/>
        <summary>StreamSource extended</summary>
        <version major="1" minor="17"/>
        <date day="21" month="2" year="2007"/>
        <author login="msandor"/>
        <compatibility addition="yes"/>
        <description>
            StreamSource provides more ways of defining the source (a FileObject) and can declare its editability.  
        </description>
    </change>

    <change>
        <api name="diff"/>
        <summary>New DiffController API</summary>
        <version major="1" minor="18"/>
        <date day="17" month="4" year="2007"/>
        <author login="msandor"/>
        <compatibility addition="yes"/>
        <description>
            DiffController class is a successor to DiffView interface that provides more features.
        </description>
    </change>

    <change>
        <api name="diff"/>
        <summary>New DiffController API</summary>
        <version major="1" minor="19"/>
        <date day="7" month="7" year="2009"/>
        <author login="tstupka"/>
        <compatibility addition="yes"/>
        <description>
            Adding PatchUtils.java to the API. Contains two new methods - isPatch(patchFile) and applyPatch(patchFile, contextFile)
        </description>
    </change>

    <change>
        <api name="diff"/>
        <summary>Enhanced UI in diff views</summary>
        <version major="1" minor="27"/>
        <date day="4" month="3" year="2010"/>
        <author login="ovrabec"/>
        <compatibility addition="yes"/>
        <description>
            Adding new methods to the API/SPI which create a Diff Controller capable of providing a diff view with enhanced UI.
        </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 openide/api/doc/changes/apichanges.xml

-->
    <head>
      <title>Diff API Changes by Date</title>
    </head>
    <body>

<h1>Introduction</h1>

<p>This document lists changes made to the <b>Diff
API</b>s. Please ask on the <code>nbdev@netbeans.org</code> mailing list
if you have any questions about the details of a
change, or are wondering how to convert existing code to be compatible.</p>

<p>In general the NetBeans core API team has several responsibilities:</p>

<ol>

<li>Avoid incompatible changes to the APIs whenever possible. This
refers to both literal incompatibilities to the signatures of
accessible API classes (including both source compatibility and binary
compatibility, which sometimes differ); and semantic
incompatibilities, for example changes in threading behavior of a
method call.</li>

<li>Document all API changes, incompatible or compatible, in this
document, with proper explanation of the change and timestamp, and
document the changes at the same time the actual change is made.</li>

<li>Maintain API documentation so that it is up-to-date with respect
to the actual APIs, both in prose documentation and Javadoc. When an
API feature is ambiguously described, clarify the documentation to
state precisely what it is expected to do; it is acceptable to specify
that some aspect of its behavior is undefined, provided this is
explicitly documented. If a feature is publicly accessible only for
unavoidable technical reasons, document that this is so, and who is
permitted to actually make use of it.</li>

<li>Annotate new APIs with their time of addition: in Javadoc using
the <code>@since</code> tag, or as appropriate in prose. The
annotation should include both the date, and the current OpenIDE
specification version, to make it easy for module authors to depend on
the new API.</li>

<li>Announce API changes on the mailing list; incompatible changes
must be announced <em>in advance</em> to give any users of the old API
a chance to veto the change.</li>

<li>Be prepared to publicly explain the meaning and intended use of
an API feature, and defend changes to it if requested.</li>

<li>Assist anyone posting to the mailing list in fixing their code to
be compatible with a change, if this is necessary and desired.</li>

<li>Provide a workaround to restore compatibility for a previously
incompatible API change, if this is requested on the mailing list and
deemed feasible.</li>

<li>Minimize the size of the APIs by rejecting compatible changes
which substantially increase complexity and are not strictly needed.</li>

<li>Attempt to maintain an API design which permits interesting
and useful changes to be compatible.</li>

<li>Attempt to cluster incompatible changes into infrequent batches
of changes, specified and discussed well in advance, to be applied
when making a new major release of the IDE. This should be done to
remove previously deprecated features with a longstanding better
alternative, and otherwise to enhance the clarity, consistency, and
flexibility of the APIs.</li>

<li>Make changes only on the trunk, not stabilization branches. When
an API change is required in a stabilization branch to support an
important bug fix, explicitly mention that in this document. (Bug fixes
to API-related code not affecting its signature or documented
semantics may be made at any time.)</li>

<li>Increase the OpenIDE specification version listed in the core
whenever a compatible API change is made, if some module is also being
changed to take advantage of a newer API. The module should then list
a dependency on the newer specification version in its manifest, to
ensure that the newer version of the module is not accidentally run on
an API-older core. Confirm that the specification version is also
bumped up both before and after a branch is made which affects the
APIs, to ensure that API changes can be cleanly ordered relative to
branch points.</li>

</ol>

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

<ul>

<li>The <code>release33</code> branch was made on Nov 23 '01 for use in
the NetBeans 3.3.1 release, and later for development of Forte for Java (codename Orion).</li>

<li>The <code>release330</code> branch was made on Nov 23 '01 for use in
the NetBeans 3.3 release.</li>

<li>The <code>release32</code> branch was made on Mar 10 '01 for use in
the NetBeans 3.2 release, and later for NetBeans 3.2.1 and Forte for Java
3.0.</li>

<li>The <code>release31</code> branch was made on Nov 7 '00 for use in
the NetBeans 3.1 release.</li>

<li>The <code>boston</code> branch was made on Jun 29 '00 and
used for betas and the FCS of Forte for Java 2.0.
A number of API changes made after this date
have in fact been incorporated into the branch.</li>

<li>All changes listed here were made after the <code>postfcs</code>
branch, which produced the Forte for Java 8xx series builds (1.0.x FCS
and betas) and also the NetBeans 3.0 release. So they do not
apply to these builds; this version of the change list was started
immediately after this branch was made (early Feb '00).</li>

</ul>

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

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

<hr/>

    </body>
  </htmlcontents>

</apichanges>
