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

-->
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">

<apichanges>
<apidefs>
<apidef name="uihandlerLib">UI Handler Library</apidef>
</apidefs>
<changes>
    <change id="MovedToPlatform">
      <api name="uihandlerLib"/>
      <summary>UI Handler Library module is moved to NetBeans platform cluster</summary>
      <version major="1" minor="37"/>
      <date day="10" month="5" year="2013"/>
      <author login="mentlicher"/>
      <compatibility addition="yes" modification="yes" binary="incompatible" source="incompatible" semantic="incompatible" deprecation="no" deletion="yes"/>
      <description>
          The module is moved to platform cluster and friend API is changed to
          public API. However, not all classes, that were exposed via friend
          API are exposed via public API.
          Following classes are made public:
          <ul>
              <li><code>BugTrackingAccessor</code> (renamed from NBBugzillaAccessor)</li>
              <li><code>Decorable</code></li>
              <li><code>InputGesture</code></li>
              <li><code>LogRecords</code></li>
              <li><code>PasswdEncryption</code></li>
          </ul>
          Following classes, that were a part of friend API are not public:
          <ul>
              <li><code>Decorations</code></li>
              <li><code>MultiPartHandler</code></li>
              <li><code>NBBugzillaAccessor)</code></li>
              <li><code>ProjectOp</code></li>
          </ul>
      </description>
      <class package="org.netbeans.lib.uihandler" name="BugTrackingAccessor"/>
      <class package="org.netbeans.lib.uihandler" name="Decorable"/>
      <class package="org.netbeans.lib.uihandler" name="InputGesture"/>
      <class package="org.netbeans.lib.uihandler" name="LogRecords"/>
      <class package="org.netbeans.lib.uihandler" name="PasswdEncryption"/>
      <issue number="229019"/>
    </change>
    <change id="ProjectOp.isStartup">
      <api name="uihandlerLib"/>
      <summary>ProjectOp now recognizes info about startup as well</summary>
      <version major="1" minor="16"/>
      <date day="17" month="6" year="2008"/>
      <author login="jtulach"/>
      <compatibility addition="yes" modification="no" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no"/>
      <description>
          Recognizes info about loaded projects on startup and adds new method
          that can query for that.
      </description>
      <!--class package="org.netbeans.lib.uihandler" name="ProjectOp"/ ProjectOp is not public now. -->
    </change>    
    <change id="LogRecords.decorate">
      <api name="uihandlerLib"/>
      <summary>LogRecords.decorate extracts UI info about LogRecords</summary>
      <version major="1" minor="13"/>
      <date day="30" month="7" year="2007"/>
      <author login="jtulach"/>
      <compatibility addition="yes" modification="no" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no"/>
      <description>
          LogRecords.decorate inspects the content of the log record and
          finds its icon, display name, etc.
      </description>
      <class package="org.netbeans.lib.uihandler" name="Decorable"/>
    </change>    
    <change id="LogRecords.scan.gzip">
      <api name="uihandlerLib"/>
      <summary>LogRecords.scan is able to recognize and read GZIP</summary>
      <version major="1" minor="10"/>
      <date day="17" month="4" year="2007"/>
      <author login="jtulach"/>
      <compatibility addition="yes" modification="no" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no"/>
      <description>
          LogRecords.scan is now able to consume also gzipped streams.
      </description>
      <class package="org.netbeans.lib.uihandler" name="LogRecords"/>
    </change>    
    <change id="LogRecords.read">
      <api name="uihandlerLib"/>
      <summary>LogRecords.read removed</summary>
      <version major="1" minor="9"/>
      <date day="10" month="3" year="2007"/>
      <author login="jsedek"/>
      <compatibility addition="no" modification="no" binary="incompatible" source="incompatible" semantic="compatible" deprecation="no" deletion="yes"/>
      <description>
          LogRecords.read has been removed, use LogRecords.scan instead.
      </description>
      <class package="org.netbeans.lib.uihandler" name="LogRecords"/>
    </change>    
</changes>
<htmlcontents>
<head>
<title>Change History for the UI Handler Library</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>
<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>release41</code> branch was made on Apr 03 '05 for use in the NetBeans 4.1 release.
Specification versions: 6.0 begins after this point.</li>
<li>The <code>release40</code> branch was made on Nov 01 '04 for use in the NetBeans 4.0 release.
Specification versions: 5.0 begins after this point.</li>
</ul>
<hr/>
<standard-changelists module-code-name="org.netbeans.lib.uihandler"/>
<hr/>
<p>@FOOTER@</p>
</body>
</htmlcontents>
</apichanges>
