blob: 5ba480be3a605f6807f6aa660d2f6325b8dc21a6 [file] [log] [blame]
<?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>
<!-- Probably should not be used much: -->
<apidef name="loaders">Loaders API</apidef>
<apidef name="editor">Loaders Editor Extensions</apidef>
<apidef name="awt">Loaders AWT Extensions</apidef>
</apidefs>
<!-- ACTUAL CHANGES BEGIN HERE: -->
<changes>
<change id="folder.templating">
<api name="loaders"/>
<summary>DataFolder createFromTemplate improvements</summary>
<version major="7" minor="82"/>
<date day="15" month="6" year="2021"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" source="compatible"
semantic="incompatible" deletion="no"
modification="yes"/>
<description>
<code>DataFolder.createFromTemplate</code> honors passed in
parameters for all its children, unless special
<code>CreateFromTemplateHandler</code> takes over the
instantiation process.
</description>
<class package="org.openide.loaders" name="DataFolder"/>
</change>
<change id="ask.on.save.close.defaults">
<api name="editor"/>
<summary>Rebrand defaults for Save/Close Editor Dialogs</summary>
<version major="7" minor="80"/>
<date day="20" month="1" year="2021"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" source="compatible"
semantic="incompatible" deletion="no"
modification="no"/>
<description>
A branding API to disable showing on close and on save editor dialogs
- <a href="architecture-summary.html#group-branding">ASK_OnSaving &amp; ASK_OnClosing</a>.
</description>
<class package="org.openide.text" name="DataEditorSupport"/>
</change>
<change id="org.openide.loaders.TemplateWizard.setTargetFolderLazy">
<api name="loaders"/>
<summary>Support lazy creation of TargetFolder.</summary>
<version major="7" minor="76"/>
<date day="1" month="3" year="2020"/>
<author login="errael"/>
<compatibility addition="yes" binary="compatible" source="compatible"
semantic="compatible" deprecation="no" deletion="no"
modification="no"/>
<description>
<p>
Creation of TargetFolder can be deferred by using
<a href="@org-openide-loaders@/org/openide/loaders/TemplateWizard.html#setTargetFolderLazy-java.util.function.Supplier-">
TemplateWizard.setTargetFolderLazy(Supplier&lt;DataFolder&gt;)
</a>.
</p>
</description>
<class package="org.openide.loaders" name="TemplateWizard"/>
<issue number="NETBEANS-3918"/>
</change>
<change id="org.openide.awt.Toolbar.toggle">
<api name="awt"/>
<summary>Separate template handling</summary>
<version major="7" minor="70"/>
<date day="27" month="9" year="2018"/>
<author login="mentlicher"/>
<compatibility addition="yes" deletion="no" binary="compatible"
source="compatible" deprecation="no"/>
<description>
Now it's possible to register actions with
<a href="@org-openide-awt@/org/openide/awt/Actions.html#ACTION_VALUE_TOGGLE">
toggle property</a> into Toolbar to get a toggle button.
</description>
<class package="org.openide.awt" name="Toolbar"/>
<issue number=""/>
</change>
<change id="org.openide.loaders.DataFolder.SortMode.NATURAL">
<api name="loaders"/>
<summary>Introduces SortMode for natural sorting.</summary>
<version major="7" minor="65"/>
<date day="21" month="10" year="2015"/>
<author login="jhavlin"/>
<compatibility addition="yes" binary="compatible" source="compatible"
semantic="compatible" deprecation="no" deletion="no"
modification="no"/>
<description>
<p>
Added support for natural sorting of DataObjects. This means
that the sort is case insensitive and number sequences are
sorted by value rather than lexicographically.
</p>
</description>
<class package="org.openide.loaders" name="DataFolder"/>
<issue number="242226"/>
</change>
<change id="templates.separation">
<api name="loaders"/>
<summary>Separate template handling</summary>
<version major="7" minor="59"/>
<date day="14" month="10" year="2014"/>
<author login="sdedic"/>
<compatibility addition="no" deletion="no" binary="compatible"
source="incompatible" deprecation="yes"/>
<description>
Template handling need not depend on Data System APIs, should be available
for clients that only know FileSystems. Relevant interfaces moved to
<code>openide.filesystems.templates</code> module; see javadoc for
<a href="@org-netbeans-api-templates@/org/netbeans/api/templates/FileBuilder.html">
FileBuilder</a> for details.
</description>
<class package="org.openide.loaders" name="CreateFromTemplateAttributesProvider"/>
<class package="org.openide.loaders" name="CreateFromTemplateHandler"/>
<issue number=""/>
</change>
<change id="org.netbeans.api.templates.TemplateRegistration.targetName">
<api name="loaders"/>
<summary>Introduce targetName for templates.</summary>
<version major="7" minor="56"/>
<date day="29" month="1" year="2014"/>
<author login="jhavlin"/>
<compatibility addition="yes" binary="compatible" source="compatible"
semantic="compatible" deprecation="no" deletion="no"
modification="no"/>
<description>
<p>
By default, files created from templates have name
preinitialized to "new" + template name.
TemplateRegistration.targetName can be used to customize how
the file name will be preinitialized.
</p>
</description>
<class package="org.netbeans.api.templates" name="TemplateRegistration" link="no"/>
<issue number="239028"/>
</change>
<change id="org.openide.loaders.DataFolder.SortMode.EXTENSIONS">
<api name="loaders"/>
<summary>Introduces SortMode for sorting by file extension.</summary>
<version major="7" minor="54"/>
<date day="10" month="10" year="2013"/>
<author login="jhavlin"/>
<compatibility addition="yes" binary="compatible" source="compatible"
semantic="compatible" deprecation="no" deletion="no"
modification="no"/>
<description>
<p>It's possible to sort files using sort mode "By Type", which
means using SortMode.CLASS. It may be confusing, as users
expect that the files will be sorted by file type, i.e. by
extension. "By Type" was renamed to "By Class" and new
sort mode "By Extension" (SortMode.EXTENSIONS) was added.
</p>
</description>
<class package="org.openide.loaders" name="DataFolder"/>
<issue number="230821"/>
</change>
<change id="org.openide.text.big.file.size">
<api name="editor"/>
<summary>Introduces system property to change file size threshold.</summary>
<version major="7" minor="51"/>
<date day="23" month="8" year="2013"/>
<author login="igor_nikiforov"/>
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
<description>
<p>We need a way to replace hardcoded "1024 * 1024" constant for file size, as
in native space 1Mb file is rather common situation. So org.openide.text.big.file.size
system property is introduced, which allows to set this threshhold in megabytes.
The default threshold is 1Mb.
</p>
</description>
<class package="org.openide.text" name="DataEditorSupport"/>
<issue number="213882"/>
</change>
<change id="TemplateRegistration.requireProject">
<api name="loaders"/>
<summary>Allow registration of templates which do not require a Project instance</summary>
<version major="7" minor="46"/>
<date day="25" month="1" year="2013"/>
<author login="280Z28"/>
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
<description>
<p>Templates may be registered with <code>requireProject = false</code>
in the annotation to indicate the template does not require a Project
instance to be created. These templates show in the New File dialog
even when no project is open in the IDE.
</p>
</description>
<class package="org.netbeans.api.templates" name="TemplateRegistration" link="no"/>
<issue number="186943"/>
</change>
<change id="lazymenu.properties">
<api name="awt"/>
<summary>Control what client properties pulldown menus have</summary>
<version major="7" minor="44"/>
<date day="21" month="12" year="2012"/>
<author login="jtulach"/>
<compatibility addition="yes"/>
<description>
<p>Layer declaration of a menu can influence what client properties
the actual <a href="@JDK@/javax/swing/JMenu.html">JMenu</a>
instances will have. More
<a href="architecture-summary.html#layer-Menu">details</a>.
</p>
</description>
<class package="org.openide.awt" name="MenuBar"/>
<issue number="222138"/>
</change>
<change id="DataShadow.findOriginal">
<api name="loaders"/>
<summary>
Introduced <code>DataShadow.findOriginal</code> which extracts the original file from
a FileObject representing a shadow/link.
</summary>
<version major="7" minor="42"/>
<date day="23" month="11" year="2012"/>
<author login="sdedic"/>
<compatibility addition="yes"/>
<description>
Target FileObject can be obtained, instead of DataObject. The target may be invalid,
or otherwise unsuitable for DataObject creation. Use this method to just dereference
the shadow file.
</description>
<class package="org.openide.loaders" name="DataShadow"/>
</change>
<change id="DataObjec.Registration">
<api name="loaders"/>
<summary>Introduced <code>DataObject.Registration</code> and <code>DataObject.Registrations</code></summary>
<version major="7" minor="36"/>
<date day="23" month="1" year="2012"/>
<author login="skygo"/>
<compatibility addition="yes"/>
<description>
<p>
Introduced a new annotation for registering DataObject.
</p>
</description>
<class package="org.openide.loaders" name="DataObject"/>
<issue number="207219"/>
<issue number="208670"/>
</change>
<change id="ToolbarPool.isFinished">
<api name="awt"/>
<summary><code>ToolbarPool.isFinished</code></summary>
<version major="7" minor="30"/>
<date day="3" month="9" year="2011"/>
<author login="jtulach"/>
<compatibility addition="yes"/>
<description>
<p>
One can find out if <code>ToolbarPool</code> is initialized.
</p>
</description>
<class package="org.openide.awt" name="ToolbarPool"/>
<issue number="192207"/>
</change>
<change id="Template">
<api name="loaders"/>
<summary>Introduced <code>Template</code></summary>
<version major="7" minor="29"/>
<date day="25" month="7" year="2011"/>
<author login="jglick"/>
<compatibility addition="yes"/>
<description>
<p>
Introduced a new annotation for registering (file or project) templates.
</p>
</description>
<class package="org.netbeans.api.templates" name="TemplateRegistration" link="no"/>
<class package="org.netbeans.api.templates" name="TemplateRegistrations" link="no"/>
<issue number="200175"/>
</change>
<change id="DataEditorSupport.constr3">
<api name="editor"/>
<summary>DataEditorSupport constructor with Lookup parameter</summary>
<version major="7" minor="28"/>
<date day="11" month="7" year="2011"/>
<author login="jtulach"/>
<compatibility semantic="compatible" binary="compatible" deletion="no"
addition="yes" modification="no" source="compatible"/>
<description>
<p>
One can control what
<a href="@org-openide-util-lookup@/org/openide/util/Lookup.html">
Lookup</a> will be associated with
<a href="@TOP@/org/openide/text/DataEditorSupport.html">
DataEditorSupport</a>.
</p>
</description>
<class package="org.openide.text" name="DataEditorSupport"/>
<issue number="199416"/>
</change>
<change id="MultiDataObject.associateLookup">
<api name="loaders"/>
<summary>Simpler way to subclass MultiDataObject</summary>
<version major="7" minor="27"/>
<date day="21" month="6" year="2011"/>
<author login="jtulach"/>
<compatibility semantic="compatible" binary="compatible" deletion="no"
addition="yes" modification="yes" source="incompatible">
Added <code>registerEditor</code> method which might clash
with some existing method in subclasses, although it is
hopefully not very likely.
</compatibility>
<description>
<p>
New way to subclass <code>MultiDataObject</code>: override
<a href="@TOP@/org/openide/loaders/MultiDataObject.html#associateLookup--">
int associateLookup()
</a> to return <code>1</code>. In constructor call
<a href="@TOP@/org/openide/loaders/MultiDataObject.html#registerEditor-java.lang.String-boolean-">
registerEditor("your/mimetype", ...)</a> to get default
editor support. No need to override any other methods to get
well performing <code>MultiDataObject</code>.
</p>
</description>
<class package="org.openide.loaders" name="MultiDataObject"/>
</change>
<change id="FileSystemAction.no.nodes">
<api name="awt"/>
<summary>lookup(DataObject.class) fallback</summary>
<version major="7" minor="26"/>
<date day="21" month="6" year="2011"/>
<author login="tstupka"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
<p>
In FileSystemAction.createMenu(boolean popUp, Lookup lookup)
fallback on .lookup(DataObject.class) in case the given lookup
contains no nodes.
</p>
</description>
<class package="org.openide.actions" name="FileSystemAction"/>
</change>
<change id="org.openide.loaders.FolderChildren.delayedCreation">
<api name="loaders"/>
<summary>Children for DataFolder are more effective</summary>
<version major="7" minor="25"/>
<date day="10" month="6" year="2011"/>
<author login="jtulach"/>
<compatibility semantic="incompatible" binary="compatible" deletion="no"
addition="yes" modification="yes" source="compatible">
Not fully compatible. In case your application desperately
needs the original mode, use the
<a href="@TOP@architecture-summary.html#systemproperty-org.openide.loaders.FolderChildren.delayedCreation">
org.openide.loaders.FolderChildren.delayedCreation
</a> property.
</compatibility>
<description>
<p>
The nodes view over a <code>DataFolder</code> now creates
real nodes in background which provides better performance
on slow, remote filesystems.
</p>
</description>
<class package="org.openide.loaders" name="DataFolder"/>
<issue number="199391"/>
</change>
<change id="DataEditorSupport.create-callable">
<api name="editor"/>
<summary>DataEditorSupport.create(...., Callable&lt;Pane&gt;)</summary>
<version major="7" minor="23"/>
<date day="1" month="6" year="2011"/>
<author login="jtulach"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
<p>
New <code>create</code> factory method to allow creation
of different <code>CloneableEditorSupport.Pane</code> implementations
than the default <code>CloneableEditor</code>.
</p>
</description>
<class package="org.openide.text" name="DataEditorSupport"/>
</change>
<change id="removing.org.openide.loaders.DataFolder.lazy">
<api name="loaders"/>
<summary>Removed <code>org.openide.loaders.DataFolder.lazy</code></summary>
<version major="7" minor="19"/>
<date day="7" month="10" year="2010"/>
<author login="jtulach"/>
<compatibility semantic="incompatible"/>
<description>
<p>
The private API to honor
<code>org.openide.loaders.DataFolder.lazy</code> property
has been removed, as being obsolete.
</p>
</description>
<class package="org.openide.loaders" name="DataFolder"/>
</change>
<change id="CreateFromTemplateHandler.FREE_FILE_EXTENSION">
<api name="loaders"/>
<summary>Added <code>CreateFromTemplateHandler.FREE_FILE_EXTENSION</code></summary>
<version major="7" minor="16"/>
<date day="13" month="4" year="2010"/>
<author login="jglick"/>
<compatibility addition="yes">
<p>
Existing <code>CreateFromTemplateHandler</code> implementations
are encouraged to honor the parameter.
</p>
</compatibility>
<description>
<p>
Introduced a parameter that may be specified on templates
to permit the user to pick a file extension.
</p>
</description>
<class package="org.openide.loaders" name="CreateFromTemplateHandler"/>
<issue number="141886"/>
</change>
<change id="FileEncodingQuery-from-mime-lookup">
<api name="awt"/>
<summary>FileEncodingQuery registered per MIME type takes preceedence</summary>
<version major="7" minor="14"/>
<date day="7" month="4" year="2010"/>
<author login="jtulach"/>
<compatibility modification="yes" semantic="incompatible"/>
<description>
<p>
FileEncodingQuery implementations registered in
<code>Editors/text/mime/</code> folders are queried
even before the actual DataObject has been created
from template. This allows data loaders with static
encoding to register such FileEncodingQuery implementation
there and be active while the object is being constructed.
</p>
</description>
<issue number="102629"/>
</change>
<change id="AcceleratorBinding">
<api name="awt"/>
<summary>Added <code>AcceleratorBinding</code></summary>
<version major="7" minor="13"/>
<date day="20" month="2" year="2010"/>
<author login="jglick"/>
<compatibility addition="yes"/>
<description>
<p>
Added a new class to help with action accelerators.
Should not be used by typical modules.
</p>
<p>
(Moved into the org.openide.awt module as of 7.34.)
</p>
</description>
<class package="org.openide.awt" name="AcceleratorBinding" link="no"/>
<issue number="180543"/>
</change>
<change id="XMLDataObject.subclass">
<api name="loaders"/>
<summary>New constructor of XMLDataObject</summary>
<version major="7" minor="10"/>
<date day="9" month="11" year="2009"/>
<author login="jtulach"/>
<compatibility binary="compatible" source="compatible" addition="yes"
deletion="no" deprecation="no" modification="no" semantic="compatible"/>
<description>
<p>
New constructor for subclasses of <code>XMLDataObject</code>.
</p>
</description>
<class package="org.openide.loaders" name="XMLDataObject"/>
<issue number="175750"/>
</change>
<change id="DataEditorSupport.annotateName">
<api name="editor"/>
<summary>Added <code>annotateName</code> and <code>toolTip</code> to <code>DataEditorSupport</code></summary>
<version major="7" minor="7"/>
<date day="3" month="9" year="2009"/>
<author login="jglick"/>
<compatibility>
<p>
Overrides of <code>messageHtmlName</code> should be reconsidered.
Calls to <code>messageName</code> should be paired with calls to
<code>messageHtmlName</code> and <code>messageToolTip</code>.
</p>
</compatibility>
<description>
<p>
Added two convenience methods permitting modules with nonstandard
editor-like windows to use the regular modified and read-only status
annotations.
</p>
</description>
<class package="org.openide.text" name="DataEditorSupport"/>
<issue number="171428"/>
</change>
<change id="Toolbars.DnD">
<api name="awt"/>
<summary>Deprecation of Toolbar drag and drop API</summary>
<version major="7" minor="5"/>
<date day="28" month="11" year="2008"/>
<author login="saubrecht"/>
<compatibility binary="compatible" deprecation="yes"/>
<description>
<p>
Deprecated methods related to Toolbar drag and drop.
</p>
</description>
<class package="org.openide.awt" name="Toolbar"/>
<class package="org.openide.awt" name="ToolbarPool"/>
<issue number="59242"/>
</change>
<change id="DataFilter.FileBased">
<api name="loaders"/>
<summary>Faster Filtering based on FileObjects</summary>
<version major="7" minor="4"/>
<date day="30" month="10" year="2008"/>
<author login="jtulach"/>
<compatibility binary="compatible" semantic="compatible" addition="yes"/>
<description>
<p>
<a href="@TOP@/org/openide/loaders/DataFilter.html">DataFilter</a>
interface used to support filtering based on
<a href="@TOP@/org/openide/loaders/DataObject.html">DataObject</a>s.
With the introduction of more
<a href="@org-openide-nodes@/apichanges.html#Children.Keys.lazy">effective nodes</a>,
this is slowing down the visualization of folders significantly.
That is why we introduce new
<a href="@TOP@/org/openide/loaders/DataFilter.FileBased.html">pre-filter</a>
which can operate
on <a href="@org-openide-filesystems@/org/openide/filesystems/FileObject.html">FileObject</a>s,
whithout the need to instantiate
<a href="@TOP@/org/openide/loaders/DataObject.html">DataObject</a>s.
</p>
</description>
<class package="org.openide.loaders" name="DataFilter"/>
<issue number="150747"/>
</change>
<change id="FolderLookup.dispatch">
<api name="loaders"/>
<summary>Changes in <code>FolderLookup</code> are delivered in dedicated thread</summary>
<version major="7" minor="2"/>
<date day="27" month="6" year="2008"/>
<author login="jtulach"/>
<compatibility binary="compatible" semantic="incompatible"/>
<description>
<p>
Changes found in <code>FolderLookup</code> are delivered in their own
thread. This is a change to previous behaviour which used the
<q>Folder recognizer</q> thread for event delivery. That could
cause deadlocks, if malicious code decided to do something wild
in the <code>resultChanged</code> method.
</p>
</description>
<class package="org.openide.loaders" name="FolderLookup" />
<issue number="134297"/>
</change>
<change id="factory">
<api name="loaders"/>
<summary>DataObjects without DataLoaders</summary>
<version major="7" minor="1"/>
<date day="11" month="6" year="2008"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" />
<description>
<p>
There is new method to register new DataObject types without
the need to write own DataLoader. Use
<a href="@TOP@/org/openide/loaders/DataLoaderPool.html#factory-java.lang.Class-java.lang.String-java.awt.Image-">
DataLoaderPool.factory</a> method.
</p>
</description>
<class package="org.openide.loaders" name="DataLoaderPool" />
<issue number="91665"/>
</change>
<change id="layer.registration">
<api name="loaders"/>
<summary>Loaders are registered in layer files</summary>
<version major="7" minor="0"/>
<date day="26" month="5" year="2008"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" />
<description>
<p>
There is new
<a href="@TOP@/org/openide/loaders/doc-files/api.html#register">registration
scheme</a> for <code>DataLoader</code>s.
</p>
</description>
<class package="org.openide.loaders" name="DataObject" />
<class package="org.openide.loaders" name="DataLoader" />
<issue number="91665"/>
</change>
<change id="xml.mimetypes">
<api name="loaders"/>
<summary>XMLDataObject no longer enforces text/xml as document mimetype</summary>
<version major="6" minor="9"/>
<date day="20" month="2" year="2008"/>
<author login="mkleint"/>
<compatibility addition="yes" binary="compatible" />
<description>
<p>
Whenever possible the editor support and editor components will
use the underlying FileObject's mimetype (as resolved by the mimetype resolvers).
</p>
</description>
<class package="org.openide.loaders" name="XMLDataObject" />
</change>
<change id="scripting.wizard.prefix">
<api name="loaders"/>
<summary>Prefixing attributes from TemplateWizard with <code>wizard.</code></summary>
<version major="6" minor="7"/>
<date day="14" month="8" year="2007"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" semantic="compatible" />
<description>
<p>
When <a href="@TOP@/org/openide/loaders/TemplateWizard.html">TemplateWizard</a> invokes
<a href="@TOP@/org/openide/loaders/DataObject.html">DataObject</a>.createFromTemplate,
it passes as argument all its <a href="@org-openide-dialogs@/org/openide/WizardDescriptor.html#getProperties--">properties</a>
to it with <code>wizard.</code> as a prefix. That way they are available to
underlying <a href="@TOP@/architecture-summary.html#script">scripting and templating
engines</a>.
</p>
</description>
<class package="org.openide.loaders" name="TemplateWizard" />
<issue number="109569"/>
</change>
<change id="templates.encoding">
<api name="loaders"/>
<summary>Templates may use ${encoding} and ${nameAndExt} properties</summary>
<version major="6" minor="6"/>
<date day="1" month="8" year="2007"/>
<author login="mfukala"/>
<compatibility semantic="compatible"/>
<description>
<p>
Templates may use ${encoding} and ${nameAndExt} properties in their
bodies to be substituted
to the real encoding of the template instance file as well
as the actual name (with extension) of the file, being created.
</p>
</description>
<issue number="110910"/>
</change>
<change id="DataFolder.position">
<api name="loaders"/>
<summary>Folders may be ordered by numeric position</summary>
<version major="6" minor="5"/>
<date day="16" month="6" year="2007"/>
<author login="jglick"/>
<compatibility modification="yes" semantic="compatible" deprecation="yes"/>
<description>
<p>
Folders may now be ordered by setting the <code>position</code> attribute
on files within the folder, which should have a numeric value.
The original relative ordering constraints are now deprecated but still work.
</p>
</description>
<issue number="103187"/>
</change>
<change id="SaveAsCapable">
<api name="loaders"/>
<summary>SaveAsCapable interface defines the ability to save DataObject under a different file name and/or extension</summary>
<version major="6" minor="3"/>
<date day="30" month="3" year="2007"/>
<author login="saubrecht"/>
<compatibility semantic="compatible" />
<description>
<p>
The DataEditorSupport adds default implementation of SaveAsCapable interface to the CookieSet
of DataObjects created by UniFileLoaders. The default implementation calls copyRename method
on the DataObject.
</p>
</description>
<class package="org.openide.loaders" name="SaveAsCapable"/>
<class package="org.openide.loaders" name="DataObject"/>
<class package="org.openide.text" name="DataEditorSupport"/>
<issue number="20147"/>
</change>
<change id="FileEncodingQuery.loaders">
<api name="loaders"/>
<summary>DataEditorSupport uses FileEncodingQuery to read or write document in correct encoding</summary>
<version major="6" minor="2"/>
<date day="14" month="3" year="2007"/>
<author login="tzezula"/>
<compatibility semantic="compatible" />
<description>
<p>
The DataEditorSupport overides the loadFromStreamToKit and saveFromKitToStream methods.
In these methods it uses FileEncodingQuery to find out the encoding of the file, creates
the Reader or Writer with obtained encoding and calls EditorKit.read or EditorKit.write.
</p>
</description>
<class package="org.openide.text" name="DataEditorSupport"/>
<issue number="42638"/>
</change>
<change id="scripting">
<api name="loaders"/>
<summary>Integration with scripting and templating</summary>
<version major="6" minor="3"/>
<date day="8" month="2" year="2007"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" semantic="compatible" />
<description>
<p>
Two new interfaces - <code>CreateFromTemplateHandler</code> and
<code>CreateFromTemplateAttributesProvider</code> to enhance the abilities
of data object to be created with parametrized values. Also new method
<code>createFromTemplate</code> taking extra map of named arguments
has been added, so users can pass the data object additional info
that can be processed during instantiation of the template.
</p>
<p>
This is particallary useful when using <a href="@TOP@/architecture-summary.html#script">scripting and templating
languages</a> during create from template operation.
</p>
</description>
<class package="org.openide.loaders" name="DataObject" />
<class package="org.openide.loaders" name="CreateFromTemplateHandler" />
<class package="org.openide.loaders" name="CreateFromTemplateAttributesProvider" />
<issue number="13250"/>
</change>
<change id="fileobject-in-lookup">
<api name="loaders"/>
<summary>DataNode.getLookup contains FileObject, DataObject has getLookup()</summary>
<version major="6" minor="0"/>
<date day="2" month="11" year="2006"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" semantic="compatible" />
<description>
<p>
Since now, each DataNode constructed without using own lookup,
shall have <code>FileObject</code>(s) associated with its
<a href="@TOP@/org/openide/loaders/DataObject.html#files--">DataObject</a>
available in its own lookup.
Also a
<a href="@TOP@/org/openide/loaders/DataObject.html">DataObject</a>
has been retrofitted to implement a
<a href="@org-openide-util-lookup@/org/openide/util/Lookup.Provider.html">Lookup.Provider</a>
interface and thus have its
<a href="@TOP@/org/openide/loaders/DataObject.html#getLookup--">getLookup</a>
method that can be used instead of the old <code>getCookie</code> one.
</p>
</description>
<class package="org.openide.loaders" name="DataNode" />
<class package="org.openide.loaders" name="DataObject" />
<issue number="62707"/>
</change>
<change id="ExternalDragAndDrop.loaders">
<api name="loaders"/>
<summary>Folders in IDE can accept files dragged from outside,
files and folders in IDE can be dragged and dropped to external applications.</summary>
<version major="5" minor="11"/>
<date day="30" month="5" year="2006"/>
<author login="saubrecht"/>
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
<description>
<p>
Class <code>DataNode</code> add additional <code>DataFlavor</code>s
to its <code>Transferable</code> which means that any file or folder
can be dragged from the IDE and dropped to any external application
that supports file drag and drop operations. The same functionality
applies to Copy/Cut and Paste operations.
</p>
<p>
Class <code>DataFolder.FolderNode</code> now supports file-type
<code>DataFlavor</code>s so when a file(s) is dropped to a folder node
in the IDE then the file is copied into that folder. If the file is
a Java source file then the appropriate refactoring will fire up as well.
</p>
</description>
<class package="org.openide.loaders" name="DataNode" />
<class package="org.openide.loaders" name="DataFolder" />
<issue number="35228"/>
</change>
<change id="more-actionContexts">
<api name="loaders"/>
<summary>All standard loaders reads their data from the layer</summary>
<version major="5" minor="8"/>
<date day="26" month="10" year="2005"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" semantic="compatible" />
<description>
<p>
Default loaders, default XML loader and instances loader read their
actions from <code>Loaders/content/unknown/Actions</code>,
<code>Loaders/text/xml/Actions</code> and <code>Loaders/application/x-nbsettings/Actions</code>.
</p>
</description>
<class package="org.openide.loaders" name="DataLoaderPool" />
<issue number="64200"/>
</change>
<change>
<api name="awt"/>
<summary>Enhanced the <code>org.openide.awt.MenuBar</code>
to understand <code>Component</code>s.</summary>
<version major="3" minor="2"/>
<date day="15" month="7" year="2002"/>
<author login="pnejedly"/>
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
<description>
This is not the Java API change but rather a change in treating
of the content of the folder from which the <code>MenuBar</code>
is built. Prevoiusly only folders were recognized and turned into
top-level menus. Now also <code>Component</code> instances found
in the folder are directly added to the resulting <code>MenuBar</code>
and <code>Presenter.Toolbar</code> instances are asked for
the presentation component and added to the <code>MenuBar</code>.
</description>
<class package="org.openide.awt" name="MenuBar"/>
</change>
<change id="DataEditorSupport.create">
<api name="editor"/>
<summary>A factory method to simplify creation of <code>DataEditorSupport</code></summary>
<version major="5" minor="2"/>
<date day="9" month="3" year="2005"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" semantic="compatible" />
<description>
<p>
Many people subclass <code>DataEditorSupport</code> to provide editing ability for data
objects. The great majority of them wish to provide an editor cookie
and with standard semantics for open, modify, save, undo,
close, reload, etc. By using the
<code>DataEditorSupport.create</code> factory
method this task is simplified to two lines of code.
</p>
</description>
<class package="org.openide.text" name="DataEditorSupport" />
<issue number="17081"/>
</change>
<change id="DataLoaderPool.getDefault">
<api name="loaders"/>
<summary>Added <code>DataLoaderPool.getDefault()</code></summary>
<version major="5" minor="1"/>
<date day="7" month="2" year="2005"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" semantic="compatible" />
<description>
<p>
<code>DataLoaderPool</code> now has a new method <code>getDefault()</code>
to allow simple access to the default system loader pool.
</p>
</description>
<class package="org.openide.loaders" name="DataLoaderPool" />
<issue number="41650"/>
</change>
<change id="DataLoader.actionsContext">
<api name="loaders"/>
<summary>Actions for <code>DataLoader</code> can be specified in a layer</summary>
<version major="5" minor="0"/>
<date day="23" month="11" year="2004"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" semantic="compatible" />
<description>
<p>
<code>DataLoader</code> now has a new method <code>protected String actionsContext()</code>
which by default returns <code>null</code> but can be overriden to identify name
of a place on default file system where layers can store instances of <code>javax.swing.Action</code>
that will then be used as a return value of <code>DataNode.getActions(boolean)</code>.
This allows smooth extensibility of one data object's node with actions
from other modules.
</p>
<p>
The change is compatible, as if one does not override this method,
the behaviour remains the same as it used to be. If the method is overridden
and returns non-null value,
the <code>DataLoader.setActions</code> uses the given context to
store the actions into it.
</p>
<p>
The standard loader for folder use <code>Loaders/folder/any/Actions</code>
as its context, so any module who wishes to add anything to its
popup menu, may register actions layer file like
<a href="@org-openide-actions@/org/openide/actions/doc-files/api.html#adv-install">
any regular actions</a> just into the folder <code>Loaders/folder/any/Actions</code>.
</p>
</description>
<class package="org.openide.loaders" name="DataLoader"/>
<issue number="45137"/>
</change>
<change id="ChangeableDataFilter">
<api name="loaders"/>
<summary>Added <code>ChangeableDataFilter</code> interface</summary>
<version major="4" minor="16"/>
<date day="11" month="6" year="2004"/>
<author login="phrebejk"/>
<compatibility addition="yes"/>
<description>
<p>
The class <code>FolderChildren</code> was able to filter the children
using <code>DataFilter</code>. But the data filter was constant for the
entire life of the <code>FolderChildren</code> instance. <code>ChangeableDataFilter</code>
class adds the ability to change the filtering strategy, where
the change is reflected immediatley in the folder children.
</p>
</description>
<class package="org.openide.loaders" name="ChangeableDataFilter" />
<issue number="44368"/>
</change>
<change>
<api name="loaders"/>
<summary>Support for 24x24 icons</summary>
<version major="4" minor="15"/>
<date day="18" month="5" year="2004"/>
<author login="mslama"/>
<compatibility addition="yes" deprecation="yes"/>
<description>
<code>Toolbar.getBasicHeight()</code> was added to replace <code>Toolbar.BASIC_HEIGHT</code>.
<code>ToolbarPool.getPreferredIconSize()</code> and <code>ToolbarPool.setPreferredIconSize(int)</code>
were added.
</description>
<class package="org.openide.awt" name="Toolbar" />
<class package="org.openide.awt" name="ToolbarPool" />
<issue number="34574"/>
</change>
<change>
<api name="loaders"/>
<summary><code>DataShadow</code> uses URL for storage</summary>
<version major="4" minor="14"/>
<date day="12" month="5" year="2004"/>
<author login="dkonecny"/>
<compatibility addition="yes" semantic="compatible"/>
<description>
Two changes in DataShadow. The implementation was changed to
store link as URL instead of FileSystem + Path pair. DataShadow
declaration was extended and "originalFile" attribute can be
defined not only as stringvalue but also as urlvalue.
</description>
<issue number="42091"/>
</change>
<change>
<api name="loaders"/>
<summary><code>DataNode.getHtmlDisplayName</code> was implemented</summary>
<version major="4" minor="13"/>
<date day="3" month="5" year="2004"/>
<author login="tboudreau"/>
<compatibility addition="yes"/>
<description>
<code>DataNode</code> now implements <code>getHtmlDisplayName()</code> as follows: If the
underlying filesystem implements the new <code>FileSystem.HtmlStatus</code>, it will
call <code>FileSystem.HtmlStatus.annotateNameHtml()</code> and return the result.
This enables, for example, CVS annotations to be shown with a different
font color.
</description>
<class package="org.openide.loaders" name="DataNode"/>
<issue number="29466"/>
</change>
<change id="SortMode.LAST_MODIFIED-SIZE">
<api name="loaders"/>
<summary>Two new folder sort modes</summary>
<version major="4" minor="10"/>
<date day="9" month="9" year="2003"/>
<author login="jglick"/>
<compatibility addition="yes"/>
<description>
Two new folder sort modes, <code>LAST_MODIFIED</code> and
<code>SIZE</code>, were added.
</description>
<class package="org.openide.loaders" name="DataFolder"/>
<issue number="26667"/>
</change>
<change >
<api name="loaders"/>
<summary>Tighter synchronization during copy/move/rename</summary>
<version major="4" minor="9"/>
<date day="28" month="5" year="2003"/>
<author login="jtulach"/>
<compatibility semantic="incompatible" />
<description>
In previous version of Loaders a thread can access
unfinished files copied/moved/createFromTemplated
by another Thread. This change prevent such accidental
access and provides more robust behaviour to writers
of own <code>DataObjects</code> and <code>DataLoaders</code>.
<p/>
This change has been introduced to make the behaviour
safer and more predicatable. Its goal is not to introduce
new deadlocks, but everybody writing its own loaders has
to keep in mind that it is dangerous to perform a long
running operation in the handleCopy, handleMove,
handleRename, handleCreateFromTemplate methods.
</description>
<class package="org.openide.loaders" name="DataObject" />
<issue number="33750"/>
</change>
<change >
<api name="loaders"/>
<summary>Calls to DataObject constructor restricted</summary>
<version major="4" minor="7"/>
<date day="16" month="5" year="2003"/>
<author login="jtulach"/>
<compatibility semantic="incompatible" />
<description>
In order to fix timing issues in <code>org.openide.loaders</code> package
the possibility to invoke <code>DataObject</code>'s constructor has been
restricted.
<p/>
There is an <code>OperationListener</code> class in the org.openide.loaders
package that shall be notified about every created DataObject. It is easy
to be notified when the DataObject is being created, but the notification
shall be done when its constructor finishes otherwise magic race
conditions can happen, see for example
<a href="http://www.netbeans.org/issues/show_bug.cgi?id=20022">issue 20022</a>.
The previous solution was to wait 500ms after the start of DataObject's
constructor and notifying the creation than, but of course it means
that if the constructor takes longer time, we were in the same problem again.
<p/>
Because DataObjects shall be created only by DataLoaders in method
<code>DataLoader.handleFindDataObject</code>, we can notify each data
object when the execution is returning from DataLoader.handleFindDataObject,
but in order for the system to work correctly we shall prevent creation
of DataObjects outside of this place.
<p/>
DataObject constructor will throw an exception if invoked outside of
<code>DataLoader.handleFindDataObject</code> or <code>MultiFileLoader.createDataObject</code>
methods. This is incompatible change, but nobody should really be affected,
as creating data objects outside of DataLoader has no real
meaning.
</description>
<class package="org.openide.loaders" name="DataObject" />
<issue number="33469"/>
</change>
<change >
<api name="loaders"/>
<summary>Separated out from the openide</summary>
<version major="4" minor="5"/>
<date day="18" month="4" year="2003"/>
<author login="jtulach"/>
<compatibility binary="compatible" source="compatible" />
<description>
Classes of <code>org.openide.loaders</code> package were separated
out from the whole openide.jar into their own openide-loaders.jar.
</description>
<issue number="32937"/>
</change>
<change id="FolderRenameHandler" >
<api name="loaders"/>
<summary>Introduction of a new interface FolderRenameHandler which allows plugging into <code>DataFolder.FolderNode.setName()</code></summary>
<version major="5" minor="4"/>
<date day="11" month="5" year="2005"/>
<author login="jbecicka"/>
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
<description>
Refactoring needs to handle rename of DataFolder's Node. It is allowed through FolderRenameHandler.
Any client can put it's FolderRenameHandler into Lookup (only one instance is allowed).
Implementation of FolderNode.setName() will use this instance to handle rename request.
</description>
<class package="org.openide.loaders" name="FolderRenameHandler"/>
<issue number="53295"/>
</change>
<change id="DataNodeLookupContructor" >
<api name="loaders"/>
<summary>New <a href="@TOP@/org/openide/loaders/DataNode.html">DataNode</a> constructor that takes Lookup</summary>
<version major="5" minor="6"/>
<date day="19" month="9" year="2005"/>
<author login="jtulach"/>
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
<description>
It was not possible to use <a href="@TOP@/org/openide/loaders/DataNode.html">DataNode</a> with own Lookup as the
constructor that takes it was available only on <a href="@org-openide-nodes@/org/openide/nodes/Node.html">Node</a>
and there was no way to pass it thru <a href="@TOP@/org/openide/loaders/DataNode.html">DataNode</a>.
</description>
<class package="org.openide.loaders" name="DataNode"/>
<issue number="61824"/>
</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/loaders/api/apichanges.xml
-->
<head>
<title>Change History for the Loaders 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 <a href="@TOP@">Loaders
API</a>. Please ask on the <code>dev@openide.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>
<!-- The actual lists of changes, as summaries and details: -->
<hr/><standard-changelists module-code-name="org.openide.loaders"/>
<hr/><p>@FOOTER@</p>
</body>
</htmlcontents>
</apichanges>