<?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="dialogs">Dialogs API</apidef>
</apidefs>
<changes>
    <change>
         <summary>Support for CompletableFutures in Dialog API</summary>
         <version major="7" minor="61"/>
         <date day="14" month="2" year="2022"/>
         <author login="sdedic"/>
         <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
         <description>
             <p>
                 <a href="@TOP@/org/openide/DialogDisplayer.html#notifyFuture-T-">DialogDisplayer.notifyFuture</a> now allows to chain processing after user closes the 
                 dialog without blocking a thread as with <a href="@TOP@/org/openide/DialogDisplayer.html#notify-org.openide.NotifyDescriptor-">DialogDisplayer.notify</a>.
             </p>
         </description>
         <class package="org.openide" name="DialogDisplayer"/>
    </change>
    <change>
         <api name="dialogs"/>
         <summary>NotifyDescriptor.QuickPick added</summary>
         <version major="7" minor="60"/>
         <date day="15" month="2" year="2022"/>
         <author login="dbalek"/>
         <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
         <description>
             <p>
                 Added <code>QuickPick</code> providing a selection list allowing multiple selections.
             </p>
         </description>
         <class package="org.openide" name="NotifyDescriptor"/>
    </change>
    <change>
         <api name="dialogs"/>
         <summary>Allow vetoable Next/Finish validation in wizard</summary>
         <version major="7" minor="59"/>
         <date day="31" month="1" year="2022"/>
         <author login="jhorvath"/>
         <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
         <description>
             <p>
                 Added <code>PasswordLine</code>, which is implementation of <code>InputLine</code> 
                 intended for password entry.
             </p>
         </description>
         <class package="org.openide" name="NotifyDescriptor"/>
    </change>
    <change id="DialogParent">
        <api name="dialogs"/>
        <summary>Allow to specify dialog parent window when using DialogDisplayer.</summary>
        <version major="7" minor="38"/>
        <date day="18" month="4" year="2014"/>
        <author login="saubrecht"/>
        <compatibility addition="yes"/>
        <description>
            <p>
            When a document window is floated (decoupled from the main IDE window)
            and has focus then a new dialog window will use it as a parent window by default.
            That means such non-modal dialogs will close when that document window is closed.
            To avoid such situation pass <code>WindowManager.getDefault().getMainWindow()</code> as
            dialog parent window when creating the dialog instance.
            </p>
        </description>
        <class package="org.openide" name="DialogDisplayer"/>
        <issue number="242854"/>
    </change>

    <change id="NoDefaultClose">
        <api name="dialogs"/>
        <summary>Added an option to disable the closing of a dialog with ESC key
            and title bar close button.</summary>
        <version major="7" minor="35"/>
        <date day="17" month="9" year="2013"/>
        <author login="saubrecht"/>
        <compatibility addition="yes"/>
        <description>
            <p>
                Added method <code>setNoDefaultClose(boolean)</code> to
                <code>NotifyDescriptor</code> class which disables ESC key closing
                of dialog window and also disables close button in dialogs title
                bar. When the method is invoked with true parameter then the dialog
                window can be closed only by pressing one of its Ok/Yes/No/Cancel buttons
                (depending on the specified closing options).
            </p>
        </description>
        <class package="org.openide" name="NotifyDescriptor"/>
        <issue number="196200"/>
    </change>

    <change id="ExtendedAsynchronousValidatingPanel">
        <api name="dialogs"/>
        <summary>Added <code>ExtendedAsynchronousValidatingPanel</code></summary>
        <version major="7" minor="31"/>
        <date day="10" month="4" year="2013"/>
        <author login="saubrecht"/>
        <compatibility addition="yes"/>
        <description>
            <p>
                Added a new wizard panel type which introduces <code>finishValidation()</code>
                method. It is complementary to <code>prepareValidation()</code>
                method in <code>AsynchronousValidatingPanel</code> and should be
                used to unlock user interface when the validation is finished.
            </p>
        </description>
        <class package="org.openide" name="WizardDescriptor"/>
        <issue number="228411"/>
    </change>

    <change id="BackgroundInstantiatingIterator">
        <api name="dialogs"/>
        <summary>Added <code>BackgroundInstantiatingIterator</code></summary>
        <version major="7" minor="22"/>
        <date day="7" month="9" year="2011"/>
        <author login="jglick"/>
        <compatibility addition="yes">
            <p>
                Any code <em>initiating</em> an instantiating iterator using
                <code>org.openide.loaders.TemplateWizard.instantiate</code> should
                not do so from the event dispatch thread if a background iterator
                might have been selected. Normally such initiating code is part
                of infrastructure, such as the project system UI.
            </p>
        </compatibility>
        <description>
            <p>
                Added a new form of instantiating wizard iterator which can do
                its work after the wizard has been closed.
            </p>
        </description>
        <class package="org.openide" name="WizardDescriptor"/>
        <issue number="191951"/>
    </change>

    <change id="WizardMove_Next_Previous">
        <api name="dialogs"/>
        <summary>Public API to move wizard to its next/previous step</summary>
        <version major="7" minor="19"/>
        <date day="13" month="4" year="2011"/>
        <author login="saubrecht"/>
        <compatibility addition="yes"/>
        <description>
            This change makes four existing methods in
            <a href="@TOP@/org/openide/WizardDescriptor.html">WizardDescriptor</a>
            public: doNextClick(), doPreviousClick(), doFinishClick() and doCancelClick().
            In previous version the methods were declared final and package
            private.<br/>
            Using these methods it will be possible to move to wizard's next step
            without clicking the Next button for example when user double-clicks
            some selected item in wizard's panel .
        </description>
        <class package="org.openide" name="WizardDescriptor"/>
        <issue number="197697"/>
    </change>

    <change id="Dialogs_NotificationLineSupport">
        <api name="dialogs"/>
        <summary>Simplify handling error/warning/info messages in dialogs</summary>
        <version major="7" minor="10"/>
        <date day="28" month="11" year="2008"/>
        <author login="jrechtacek"/>
        <compatibility addition="yes"/>
        <description>
            Two new methods in <a href="@TOP@/org/openide/NotifyDescriptor.html">NotifyDescriptor</a> were added to allow API client to
            create <a href="@TOP@/org/openide/NotificationLineSupport.html">NotificationLineSupport</a> which allow handling
            error/warning/info messages in dialogs. If a dialog descriptor creates
            this support, <a href="@TOP@/org/openide/DialogDisplayer.html">DialogDisplayer</a>
            allocates necessary space at the bottom of dialog where API clients
            can set info/warning/error messages with appropriate icons.
        </description>
        <class package="org.openide" name="NotifyDescriptor"/>
        <class package="org.openide" name="NotificationLineSupport"/>
        <issue number="148730"/>
    </change>

    <change id="WizardDescriptor_new_constants">
        <api name="dialogs"/>
        <summary>New WizardDescriptor constants introduced for info and warning messages</summary>
        <version major="7" minor="8"/>
        <date day="3" month="7" year="2008"/>
        <author login="mkubec"/>
        <compatibility addition="yes"/>
        <description>
            Two new constants for warning and info messages were introduced. Info message is annotated by blue info icon
            and warning message is annotated by orange warning icon with exclamation mark. Message foreground color is set to
            Label foreground standard color.
        </description>
        <class package="org.openide" name="WizardDescriptor"/>
        <issue number="137737"/>
    </change>

    <change id="WizardDescriptor_constants">
        <api name="dialogs"/>
        <summary>Wizard Descriptor properties changed to constants, two new constants introduced</summary>
        <version major="7" minor="8"/>
        <date day="3" month="7" year="2008"/>
        <author login="mkubec"/>
        <compatibility addition="yes"/>
        <description>
            Freeform property strings are replaced by public constants.
        </description>
        <class package="org.openide" name="WizardDescriptor"/>
        <issue number="138128"/>
    </change>
    
    <change id="WizardDescriptor.ArrayIterator-generic-constructor">
        <api name="dialogs"/>
        <summary>Generics-friendly constructor added for <code>WizardDescriptor.ArrayIterator</code></summary>
        <version major="7" minor="5"/>
        <date day="15" month="6" year="2007"/>
        <author login="jglick"/>
        <compatibility addition="yes"/>
        <description>
            A constructor accepting <code>List&lt;Panel&lt;Data>></code> was added
            to <code>ArrayIterator</code> to avoid the need for generic array construction
            by client code.
        </description>
        <class package="org.openide" name="WizardDescriptor"/>
        <issue number="106208"/>
    </change>
    <change id="default-constructor-for-wizarddescriptor">
           <api name="dialogs"/>
           <summary>New <code>WizardDescriptor</code> constructor.</summary>
           <version major="7" minor="4"/>
           <date day="30" month="4" year="2007"/>
           <author login="jtulach"/>
           <compatibility addition="yes" binary="compatible" semantic="compatible" source="compatible" deprecation="no" deletion="no" modification="no"/>
           <description>
            New <code>WizardDescriptor</code> constructor for subclasses. 
            It allows to eliminate unchecked warnings.
           </description>
           <class package="org.openide" name="WizardDescriptor"/>
           <issue number="102261"/>
    </change>
    <change id="notifyLater_improved">
           <api name="dialogs"/>
           <summary>Method notifyLater improved to work before main window is opened</summary>
           <version major="7" minor="3"/>
           <date day="6" month="2" year="2007"/>
           <author login="dsimonek"/>
           <compatibility addition="no" binary="compatible" semantic="compatible" source="incompatible" deprecation="no" deletion="no" modification="no"/>
           <description>
             Implementation of method notifyLater improved to work before 
             main window is opened. For example: When method is called from 
             ModuleInstall.restored, then modal dialog is opened and blocks main
             window until dialog is closed. Typical use case is login dialog.
           </description>
           <class package="org.openide" name="DialogDisplayer"/>
           <issue number="92570"/>
    </change>
    <change id="WizardDescriptor.getProperties">
           <api name="dialogs"/>
           <summary>New method <code>getProperties</code> added to <code>WizardDescriptor</code></summary>
           <version major="7" minor="3"/>
           <date day="8" month="2" year="2007"/>
           <author login="jtulach"/>
           <compatibility addition="yes" binary="compatible" semantic="compatible" source="compatible" deprecation="no" deletion="no" modification="no"/>
           <description>
               New method to get list of all properties of the <code>WizardDescriptor</code>
               added to the class.
           </description>
           <class package="org.openide" name="WizardDescriptor"/>
    </change>
    <change id="generified.wizarddescriptor.panel">
           <api name="dialogs"/>
           <summary>Generified <code>WizardDescriptor.Panel</code></summary>
           <version major="7" minor="2"/>
           <date day="2" month="2" year="2007"/>
           <author login="jtulach"/>
           <compatibility addition="yes" binary="compatible" semantic="compatible" source="compatible" deprecation="no" deletion="no" modification="no"/>
           <description>
               <code>WizardDescriptor.Panel</code> and <code>WizardDescriptor.Iterator</code>
               has been generified to take generic type for data passed
               into <code>readSettings</code> and <code>storeSettings</code>
               objects.
           </description>
           <class package="org.openide" name="WizardDescriptor"/>
           <issue number="92762"/>
    </change>
    <change id="WizardDescriptor.ProgressInstantiatingIterator">
           <api name="dialogs"/>
           <summary>Interface <code>ProgressInstantiatingIterator</code> added</summary>
           <version major="7" minor="1"/>
           <date day="8" month="4" year="2006"/>
           <author login="jrechtacek"/>
           <compatibility addition="yes" binary="compatible" semantic="compatible" source="compatible" deprecation="no" deletion="no" modification="no"/>
           <description>
             The <code>ProgressInstantiatingIterator</code> notifies users while instantiate
             is running by a progress bar, this progress bar is integrated into wizard panel.
             Instantiating of newly created objects is invoked asynchronously.
           </description>
           <class package="org.openide" name="WizardDescriptor"/>
           <issue number="58889"/>
    </change>
    <change id="notifyLater">
           <api name="dialogs"/>
           <summary>New method to asynchronously show messages</summary>
           <version major="7" minor="0"/>
           <date day="20" month="6" year="2006"/>
           <author login="jtulach"/>
           <compatibility addition="yes" binary="compatible" semantic="compatible" source="compatible" deprecation="no" deletion="no" modification="no"/>
           <description>
             Now it is simple to display a message box described by
             <a href="@TOP@/org/openide/NotifyDescriptor.html">NotifyDescriptor</a>
             asynchronously using
             <a href="@TOP@/org/openide/DialogDisplayer.html#notifyLater-org.openide.NotifyDescriptor-">
                 DialogDisplayer.notifyLater
             </a>.
           </description>
           <class package="org.openide" name="DialogDisplayer"/>
           <issue number="35067"/>
    </change>
    <change id="WizardDescriptor.AsynchronousInstantiatingIterator">
           <api name="dialogs"/>
           <summary>Interface <code>AsynchronousInstantiatingIterator</code> added</summary>
           <version major="6" minor="5"/>
           <date day="6" month="12" year="2005"/>
           <author login="jrechtacek"/>
           <compatibility addition="yes" binary="compatible" semantic="compatible" source="compatible" deprecation="no" deletion="no" modification="no"/>
           <description>
             The <code>AsynchronousInstantiatingIterator</code> allows to implement
             asynchronous instantating of newly created objects. Wizard's framework
             esures that the method <code>AsynchronousInstantiatingIterator.instantiate()</code>
             will be called ouside of an event queue.
           </description>
           <class package="org.openide" name="WizardDescriptor"/>
           <issue number="62161"/>
    </change>

    <change id="AsynchronousValidatingPanel">
           <api name="dialogs"/>
           <summary>Interface <code>AsynchronousValidationgPanel</code> added</summary>
           <version major="6" minor="2"/>
           <date day="16" month="5" year="2005"/>
           <author login="pkuzel"/>
           <compatibility addition="yes" binary="compatible" semantic="compatible" source="compatible" deprecation="no" deletion="no" modification="no"/>
           <description>
             The <code>AsynchronousValidatingPanel</code> allows to implement
             background validation that does not block UI thread. I.e. UI
             thread can be used to render validation progress.
           </description>
           <class package="org.openide" name="WizardDescriptor"/>
           <issue number="58530"/>
    </change>

    <change id="NotifyDescriptor.getDefaultValue">
       <api name="dialogs"/>
       <summary>Add method <code>NotifyDescriptor.getDefaultValue()</code> </summary>
       <version major="5" minor="9"/>
       <date day="28" month="3" year="2005"/>
       <author login="jrechtacek"/>
       <compatibility addition="yes" binary="compatible" semantic="compatible" source="compatible" deprecation="no" deletion="no" modification="no"/>
       <description>
         The <code>NotifyDescriptor.getDefaultValue()</code> returns object which represents the default value.
         This default value is introduced in the constructor of <code>NotifyDescriptor</code>.
       </description>
       <class package="org.openide" name="NotifyDescriptor"/>
       <issue number="56878"/>
    </change>
<change id="add-leaf-attribute-to-DialogDescriptor">
      <api name="dialogs"/>
      <summary>Added paramater <code>leaf</code> to <code>DialogDescriptor</code>
</summary>
      <version major="5" minor="5"/>
      <date day="8" month="1" year="2005"/>
      <author login="jrechtacek"/>
      <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
      <description>
        <p>Added the parameter <code>leaf</code> in constructor of the <code>DialogDescriptor</code>.
        The parameter is not mandatory and can be set manually.
        If this parameter is <code>false</code> (as default), all works as before.
        If the parameter <code>leaf</code> is <code>true</code>, then a dialog which is created by this
        descriptor cannot own any other windows.
        </p>
      </description>
      <class package="org.openide" name="DialogDescriptor"/>
    </change>
<change>
     <api name="dialogs"/>
     <summary>Added WizardDescriptor.getInstantiatedObjects</summary>
     <version major="4" minor="41"/>
     <date day="2" month="7" year="2004"/>
     <author login="jrechtacek"/>
     <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
     <description>
        Added the new method <code>Set getInstantiatedObjects</code>. This method
        returns set of newly instantiated objects if the wizard has been correctly finished.
        The empty set is returned as default, if the wizard uses the <code>InstantiatingIterator</code>
        then returns a set of <code>Object</code> as same as <code>InstantiatingIterator.instantiate()</code> does.
        The method throws the exception <code>IllegalStateException</code> if this method
        is called on the unfinished wizard.
     </description>
     <class package="org.openide" name="WizardDescriptor"/>
     <issue number="44513"/>
     </change>
<change>
     <api name="dialogs"/>
     <summary>Made instantiating iterator</summary>
     <version major="4" minor="33"/>
     <date day="4" month="5" year="2004"/>
     <author login="jrechtacek"/>
     <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
     <description>
     Added a special interface for a wizard that needs to controll instantiating new objects.
     This interface can replace TemplateWizard.Iterator in template's declaration.
     New <code>WizardDescriptor.InstantiatingIterator</code> extends <code>WizardDescriptor.Iterator</code>
     and contains the methods for <code>initialize/uninitialize</code> the iterator and the central method
     <code>instantiate</code> which returns a set on instantiated objects.
     </description>
     <class package="org.openide" name="WizardDescriptor"/>
     <issue number="42192"/>
    </change>
<change>
     <api name="dialogs"/>
     <summary>Allow dynamically enable/disable Finish button</summary>
     <version major="4" minor="28"/>
     <date day="29" month="3" year="2004"/>
     <author login="jrechtacek"/>
     <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
     <description>
     Added a special interface for a panel that needs to dynamically enabled
     <code>Finish</code> button. This interface <code>WizardDescriptor.FinishablePanel</code> 
     extends <code>WizardDescriptor.Panel</code> and adds a method <code>isFinishPanel()</code>
     which returns if <code>Finish</code> button could be enabled. <code>WizardDescriptor.FinishPanel</code>
     is now deprecated, the preferred way is using <code>FinishablePanel</code> instead.
     </description>
     <class package="org.openide" name="WizardDescriptor"/>
     <issue number="7706"/>
    </change>
<change>
     <api name="dialogs"/>
     <summary>Allow vetoable Next/Finish validation in wizard</summary>
     <version major="4" minor="28"/>
     <date day="29" month="3" year="2004"/>
     <author login="jrechtacek"/>
     <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
     <description>
     Added a special interface for panels that need to do additional
     validation when <code>Next</code> or <code>Finish</code> button is clicked.
     This interface <code>WizardDescriptor.ValidatingPanel</code> extends <code>WizardDescriptor.Panel</code>
     and adds a method <code>validate()</code> which is called when un user clicked <code>Next</code>
     or <code>Finish</code> button. If validation fails  the wizard doesn't move to next panel nor finish, 
     the <code>WizardValidationException</code> is thrown and it returns which component
     fails (in a wizard's panel) and provides a error message to notify the user about.
     </description>
     <class package="org.openide" name="WizardDescriptor"/>
     <class package="org.openide" name="WizardValidationException"/>
     <issue number="23116"/>
    </change>
</changes>
<htmlcontents>
<head>
<title>Change History for the Dialogs 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>
<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.openide.dialogs"/>
<hr/>
<p>@FOOTER@</p>
</body>
</htmlcontents>
</apichanges>
