<?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="tabcontrol">Tab Control APIs</apidef>
   <apidef name="popupswitcher">Popup Switcher APIs</apidef>
   <!-- etc. -->
</apidefs>

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

<changes>

    <change>
        <api name="tabcontrol"/>
        <summary>Allow tab control renderers to override text position calculation</summary>
        <version major="1" minor="74"/>
        <date day="8" month="7" year="2022"/>
        <author login="ebakke"/>
        <compatibility addition="yes"/>
        <description>
            A new method <code>AbstractTabCellRenderer.getCaptionYPosition</code>
            may now be overridden by subclasses, to customize the calculation of
            the tab label's Y position. This allows specific implementations to
            improve the calculation code without affecting other LAFs (which
            may contain adjustments hard-coded to work with the old calculation.)
        </description>
        <class package="org.netbeans.swing.tabcontrol.plaf" name="AbstractTabCellRenderer"/>
    </change>

    <change id="autoscroll">
      <api name="tabcontrol"/>
      <summary>Added ability to scroll document tabs when dragging a TopComponent
          over the editor area.</summary>
      <version major="1" minor="48"/>
      <date day="11" month="9" year="2013"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" deprecation="no"/>
      <description>
        TabDisplayer no implements java.awt.dnd.Autoscroll interface. The new
          methods just delegate to TabDisplayerUI.
          The actual implementation is in BasicScrollingTabDisplayerUI class
          which scrolls the tabs to the left or to the right when a TopComponent
          is being dragged over its left or right edge.
      </description>
      <class package="org.netbeans.swing.tabcontrol" name="TabDisplayer"/>
      <class package="org.netbeans.swing.tabcontrol" name="TabDisplayerUI"/>
    </change>

    <change id="componentconverter">
      <api name="tabcontrol"/>
      <summary>Added getter and setter for ComponentConverter to TabDisplayer class.</summary>
      <version major="1" minor="44"/>
      <date day="12" month="6" year="2013"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" deprecation="no"/>
      <description>
        TabDisplayer class has getter and setter for ComponentConverter so that its
          UI delegate can calculate proper minimum size when ComponentConverter is being used.
      </description>
      <class package="org.netbeans.swing.tabcontrol" name="TabDisplayer"/>
      <issue number="171385"/>
    </change>

    <change id="windows8laf">
      <api name="tabcontrol"/>
      <summary>New UI delegates for Windows 8 look and feel.</summary>
      <version major="1" minor="41"/>
      <date day="27" month="11" year="2012"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" deprecation="no"/>
      <description>
        New UI delegates for editor and non-editor tabs for Windows 8 look and feel.
      </description>
      <class package="org.netbeans.swing.tabcontrol.plaf" name="Windows8ViewTabDisplayerUI"/>
      <class package="org.netbeans.swing.tabcontrol.plaf" name="Windows8EditorTabDisplayerUI"/>
    </change>

    <change id="attentionhighlight">
      <api name="tabcontrol"/>
      <summary>Allow a tab to be permanently highlighted until user activates it.</summary>
      <version major="1" minor="38"/>
      <date day="31" month="8" year="2012"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" deprecation="no"/>
      <description>
        There's a new method <code>void setSwitcherItems(SwitcherTableItems[],int)</code> in
        <code>SwitcherTable</code> class which allows to change the content of document switcher
        popup.
      </description>
      <class package="org.netbeans.swing.tabcontrol" name="TabbedContainer"/>
      <class package="org.netbeans.swing.tabcontrol" name="TabbedContainerUI"/>
      <class package="org.netbeans.swing.tabcontrol" name="TabDisplayerUI"/>
      <class package="org.netbeans.swing.tabcontrol" name="TabDisplayer"/>
      <class package="org.netbeans.swing.tabcontrol.customtabs" name="Tabbed"/>
      <class package="org.netbeans.swing.tabcontrol.plaf" name="TabState"/>
      <issue number="217509"/>
    </change>

    <change id="documentswitcher">
      <api name="popupswitcher"/>
      <summary>Allow changes in SwitcherTable content.</summary>
      <version major="1" minor="35"/>
      <date day="22" month="2" year="2012"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" deprecation="no"/>
      <description>
        There's a new method <code>void setSwitcherItems(SwitcherTableItems[],int)</code> in
        <code>SwitcherTable</code> class which allows to change the content of document switcher
        popup.
      </description>
      <class package="org.netbeans.swing.popupswitcher" name="SwitcherTable"/>
    </change>

    <change id="busy_tabs">
      <api name="tabcontrol"/>
      <summary>Display notification that a tab is 'busy'.</summary>
      <version major="1" minor="34"/>
      <date day="14" month="2" year="2012"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" deprecation="no"/>
      <description>
        The look and feel for tabbed containers has been extended to support
        notifications that a tab is 'busy', i.e. some lengthy process is being
        run in it.<br/>
        All supported look and feel implementations use an animated icon to indicate
        the busy state.
      </description>
      <class package="org.netbeans.swing.tabcontrol.plaf" name="BusyTabsSupport"/>
      <class package="org.netbeans.swing.tabcontrol" name="WinsysInfoForTabbedContainer"/>
      <class package="org.netbeans.swing.tabcontrol" name="TabDisplayerUI"/>
      <class package="org.netbeans.swing.tabcontrol.customtabs" name="Tabbed"/>
      <issue number="208026"/>
    </change>

    <change id="tabcontrol_factory">
      <api name="tabcontrol"/>
      <summary>Allow custom implementation of tab control.</summary>
      <version major="1" minor="33"/>
      <date day="25" month="1" year="2012"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" deprecation="no"/>
      <description>
        <p>There is a new <code>TabbedComponentFactory</code> class that allows
        custom implementations of tab control to be used in the window system.
        See <code>TabbedComponentFactory</code> Javadoc for more details.</p>

      </description>
      <class package="org.netbeans.swing.tabcontrol.customtabs" name="TabbedComponentFactory"/>
      <class package="org.netbeans.swing.tabcontrol.customtabs" name="Tabbed"/>
      <class package="org.netbeans.swing.tabcontrol.customtabs" name="TabbedType"/>
    </change>

    <change id="restore_group_button_ui">
      <api name="tabcontrol"/>
      <summary>Allow custom UI for 'restore window group' button.</summary>
      <version major="1" minor="28"/>
      <date day="14" month="7" year="2011"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" deprecation="no"/>
      <description>
        <p>Button to restore the whole window group from minimized bar now supports
        custom UI implementations. Simply provide own <code>ButtonUI</code> for 
        <code>restoreGroupButtonUI</code> key in UIManager.</p>
      </description>
      <class package="org.netbeans.swing.tabcontrol.plaf" name="TabControlButtonFactory"/>
    </change>

    <change id="new_window_group_operations">
      <api name="tabcontrol"/>
      <summary>New methods to support operations with window groups.</summary>
      <version major="1" minor="27"/>
      <date day="24" month="6" year="2011"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" deprecation="no"/>
      <description>
        <p>Added new methods to support operations with window groups, e.g. close
        window group or minimize window group.
        </p>
        <p>Also the implementation of look and feels for all supported
        platform switches to non-stretching tab layout.</p>
      </description>
      <class package="org.netbeans.swing.tabcontrol" name="WinsysInfoForTabbedContainer"/>
      <class package="org.netbeans.swing.tabcontrol" name="SlideBarDataModel"/>
      <class package="org.netbeans.swing.tabcontrol" name="TabbedContainer"/>
      <class package="org.netbeans.swing.tabcontrol" name="TabDisplayer"/>
      <class package="org.netbeans.swing.tabcontrol" name="TabDisplayerUI"/>
      <class package="org.netbeans.swing.tabcontrol.event" name="TabActionEvent"/>
      <class package="org.netbeans.swing.tabcontrol.plaf" name="AbstractViewTabDisplayerUI"/>
      <class package="org.netbeans.swing.tabcontrol.plaf" name="TabControlButton"/>
      <class package="org.netbeans.swing.tabcontrol.plaf" name="TabControlButtonFactory"/>
      <issue number="199677"/>
    </change>

    <change id="topcomponent_level_winsys_customizations">
      <api name="tabcontrol"/>
      <summary>Added new methods to WinsysInfoForTabbedContainer class which can
      adjust the behavior of TopComponents in tabbed container.</summary>
      <version major="1" minor="15"/>
      <date day="13" month="1" year="2009"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" deprecation="no"/>
      <description>
        <p>Added new methods to class WinsysInfoForTabbedContainer to find out the
        status (enabled/disabled) of some window system features for given TopComponent,
        e.g. is the TopComponent allowed to slide-out etc.
        </p>
      </description>
      <class package="org.netbeans.swing.tabcontrol" name="WinsysInfoForTabbedContainer"/>
      <issue number="156693"/>
    </change>

    <change id="winsysinfo_for_tabbed_container">
      <api name="tabcontrol"/>
      <summary>Added new abstract class WinsysInfoForTabbedContainer which can 
      adjust some tabbed container properties and behavior.</summary>
      <version major="1" minor="13"/>
      <date day="6" month="6" year="2008"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" deprecation="yes"/>
      <description>
        <p>The new abstract class WinsysInfoForTabbedContainer is a replacement
        for interface WinsysInfoForTabbed. The new class implements the old interface
        and also contains method informing the tabbed containers about the state
        of some of window system switches that may disable some of its functionality.
        (For example disable window sliding).
        </p>
      </description>
      <class package="org.netbeans.swing.tabcontrol" name="WinsysInfoForTabbedContainer"/>
      <issue number="136636"/>
    </change>

    <change id="slide_transparency">
      <api name="tabcontrol"/>
      <summary>Added support for transparency of slided-in windows</summary>
      <version major="1" minor="11"/>
      <date day="28" month="11" year="2007"/>
      <author login="saubrecht"/>
      <compatibility addition="yes" binary="compatible" />
      <description>
        <p>Containers with slided-in windows can be painted with different alpha channel
        to achieve window transparency.
        </p>
      </description>
    </change>
    
    <change id="devel_api_status">
      <api name="tabcontrol"/>
      <summary>API switched to 'public - under development'</summary>
      <version major="1" minor="9"/>
      <date day="24" month="7" year="2007"/>
      <author login="saubrecht"/>
      <compatibility modification="yes" />
      <description>
        <p>Since there are some third party modules that provide non-standard look and feel for
        the TabControl, the API is switched back to 'public - under development status'.
        </p>
      </description>
    </change>
    
    <change id="making_a_friend_with_core_window">
        <api name="tabcontrol"/>
        <summary>Module core/windows now has Friend API dependency on core/swing/tabcontrol</summary>
        <date day="5" month="10" year="2006"/>
        <author login="saubrecht"/>
        <compatibility deletion="yes" binary="incompatible" source="incompatible"/>
        <description>
            <p>
            The Tab Control module was unnecessarily exposing all of its packages as public API.
            Since it's no longer possible to use the Tab Control as a standalone module (because
            of its dependencies on Windows API) the module now has only a single friend module -
            Core/Windows.
            </p>
            <p>
            There were also other changes in Tab Control UI classes for various L&amp;Fs (i.e. 
            classes that were previously in public API packages), some methods have been removed, 
            some were added. Also some classes in org.netbeans.swing.tabcontrol package have changed.
            </p>
        </description>
    </change>

    <change id="TabbedContainerUI.jdk14bug4924516Hack">
        <api name="tabcontrol"/>
        <summary><code>TabbedContainerUI.jdk14bug4924516Hack</code> deleted</summary>
        <date day="5" month="4" year="2006"/>
        <author login="jglick"/>
        <compatibility deletion="yes" binary="incompatible" source="incompatible"/>
        <description>
            A method which was present only as a workaround for a bug in JDK 1.4 was
            deleted, since only JDK 5+ is now supported. The method should not have
            been called by anyone outside of this module anyway.
        </description>
        <class package="org.netbeans.swing.tabcontrol" name="TabbedContainerUI"/>
    </change>

    <change id="flashing-tabs">
      <api name="tabcontrol"/>
      <summary>Flashing tabs added</summary>
      <version major="1" minor="3"/>
      <date day="18" month="11" year="2004"/>
      <author login="mkleint"/>
      <compatibility addition="yes" binary="compatible" semantic="compatible" />
      <description>
        <p>Added support for flashing tabs, to be used to get user's attention.
        The API allows to start the flashing and stop it explicitly. Also stops when user selects the given
        tab.
        </p>
      </description>
      <class package="org.netbeans.swing.tabcontrol" name="TabDisplayer"/>
      <class package="org.netbeans.swing.tabcontrol" name="TabbedContainer"/>
      <issue number="48811" />
    </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 core/swing/tabcontrol/api/doc/changes/changes.xml

-->
    <head>
      <title>Change History for the TabControl 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 TabControl API.</p>

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

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

    </body>
  </htmlcontents>

</apichanges>
