blob: 5aa8c238ce4a0630438f09687b85f482e4b0e9c9 [file] [log] [blame]
<html>
<!--
NO NO NO NO NO!
==============> DO NOT EDIT ME! <======================
AUTOMATICALLY GENERATED FROM APICHANGES.XML, DO NOT EDIT
SEE openide/loaders/api/apichanges.xml
-->
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<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" shape="rect">Overview</a>
</p>
<h1>Introduction</h1>
<p>This document lists changes made to the <a href="" shape="rect">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>
<h1>
<a name="list-all-apis">Index of APIs</a>
</h1>
<ul>
<li>
<a href="#awt">Loaders AWT Extensions</a>
</li>
<li>
<a href="#editor">Loaders Editor Extensions</a>
</li>
<li>
<a href="#loaders">Loaders API</a>
</li>
</ul>
<h1>
<a name="incompat-by-date">Incompatible changes by date</a>
</h1>
<p>Fuller descriptions of all changes can be found below (follow links).</p>
<p>Not all deprecations are listed here, assuming that the deprecated
APIs continue to essentially work. For a full deprecation list, please
consult the
<a href="deprecated-list.html">Javadoc</a>.</p>
<ul>
<li>(Oct 14 '14) <a href="#templates.separation">Separate template handling</a>
</li>
<li>(Jun 21 '11) <a href="#MultiDataObject.associateLookup">Simpler way to subclass MultiDataObject</a>
</li>
<li>(Jun 10 '11) <a href="#org.openide.loaders.FolderChildren.delayedCreation">Children for DataFolder are more effective</a>
</li>
<li>(Oct 7 '10) <a href="#removing.org.openide.loaders.DataFolder.lazy">Removed <code>org.openide.loaders.DataFolder.lazy</code></a>
</li>
<li>(Apr 7 '10) <a href="#FileEncodingQuery-from-mime-lookup">FileEncodingQuery registered per MIME type takes preceedence</a>
</li>
<li>(Jun 27 '08) <a href="#FolderLookup.dispatch">Changes in <code>FolderLookup</code> are delivered in dedicated thread</a>
</li>
<li>(May 28 '03) <a href="#issue-33750">Tighter synchronization during copy/move/rename</a>
</li>
<li>(May 16 '03) <a href="#issue-33469">Calls to DataObject constructor restricted</a>
</li>
</ul>
<h1>
<a name="all-by-date">All changes by date</a>
</h1>
<ul>
<li>(Oct 21 '15) <a href="#org.openide.loaders.DataFolder.SortMode.NATURAL">Introduces SortMode for natural sorting.</a>
</li>
<li>(Oct 14 '14) <a href="#templates.separation">Separate template handling</a>
</li>
<li>(Jan 29 '14) <a href="#org.netbeans.api.templates.TemplateRegistration.targetName">Introduce targetName for templates.</a>
</li>
<li>(Oct 10 '13) <a href="#org.openide.loaders.DataFolder.SortMode.EXTENSIONS">Introduces SortMode for sorting by file extension.</a>
</li>
<li>(Aug 23 '13) <a href="#org.openide.text.big.file.size">Introduces system property to change file size threshold.</a>
</li>
<li>(Jan 25 '13) <a href="#TemplateRegistration.requireProject">Allow registration of templates which do not require a Project instance</a>
</li>
<li>(Dec 21 '12) <a href="#lazymenu.properties">Control what client properties pulldown menus have</a>
</li>
<li>(Nov 23 '12) <a href="#DataShadow.findOriginal">
Introduced <code>DataShadow.findOriginal</code> which extracts the original file from
a FileObject representing a shadow/link.
</a>
</li>
<li>(Jan 23 '12) <a href="#DataObjec.Registration">Introduced <code>DataObject.Registration</code> and <code>DataObject.Registrations</code></a>
</li>
<li>(Sep 3 '11) <a href="#ToolbarPool.isFinished"><code>ToolbarPool.isFinished</code></a>
</li>
<li>(Jul 25 '11) <a href="#Template">Introduced <code>Template</code></a>
</li>
<li>(Jul 11 '11) <a href="#DataEditorSupport.constr3">DataEditorSupport constructor with Lookup parameter</a>
</li>
<li>(Jun 21 '11) <a href="#MultiDataObject.associateLookup">Simpler way to subclass MultiDataObject</a>
</li>
<li>(Jun 21 '11) <a href="#FileSystemAction.no.nodes">lookup(DataObject.class) fallback</a>
</li>
<li>(Jun 10 '11) <a href="#org.openide.loaders.FolderChildren.delayedCreation">Children for DataFolder are more effective</a>
</li>
<li>(Jun 1 '11) <a href="#DataEditorSupport.create-callable">DataEditorSupport.create(...., Callable&lt;Pane&gt;)</a>
</li>
<li>(Oct 7 '10) <a href="#removing.org.openide.loaders.DataFolder.lazy">Removed <code>org.openide.loaders.DataFolder.lazy</code></a>
</li>
<li>(Apr 13 '10) <a href="#CreateFromTemplateHandler.FREE_FILE_EXTENSION">Added <code>CreateFromTemplateHandler.FREE_FILE_EXTENSION</code></a>
</li>
<li>(Apr 7 '10) <a href="#FileEncodingQuery-from-mime-lookup">FileEncodingQuery registered per MIME type takes preceedence</a>
</li>
<li>(Feb 20 '10) <a href="#AcceleratorBinding">Added <code>AcceleratorBinding</code></a>
</li>
<li>(Nov 9 '09) <a href="#XMLDataObject.subclass">New constructor of XMLDataObject</a>
</li>
<li>(Sep 3 '09) <a href="#DataEditorSupport.annotateName">Added <code>annotateName</code> and <code>toolTip</code> to <code>DataEditorSupport</code></a>
</li>
<li>(Nov 28 '08) <a href="#Toolbars.DnD">Deprecation of Toolbar drag and drop API</a>
</li>
<li>(Oct 30 '08) <a href="#DataFilter.FileBased">Faster Filtering based on FileObjects</a>
</li>
<li>(Jun 27 '08) <a href="#FolderLookup.dispatch">Changes in <code>FolderLookup</code> are delivered in dedicated thread</a>
</li>
<li>(Jun 11 '08) <a href="#factory">DataObjects without DataLoaders</a>
</li>
<li>(May 26 '08) <a href="#layer.registration">Loaders are registered in layer files</a>
</li>
<li>(Feb 20 '08) <a href="#xml.mimetypes">XMLDataObject no longer enforces text/xml as document mimetype</a>
</li>
<li>(Aug 14 '07) <a href="#scripting.wizard.prefix">Prefixing attributes from TemplateWizard with <code>wizard.</code></a>
</li>
<li>(Aug 1 '07) <a href="#templates.encoding">Templates may use ${encoding} and ${nameAndExt} properties</a>
</li>
<li>(Jun 16 '07) <a href="#DataFolder.position">Folders may be ordered by numeric position</a>
</li>
<li>(Mar 30 '07) <a href="#SaveAsCapable">SaveAsCapable interface defines the ability to save DataObject under a different file name and/or extension</a>
</li>
<li>(Mar 14 '07) <a href="#FileEncodingQuery.loaders">DataEditorSupport uses FileEncodingQuery to read or write document in correct encoding</a>
</li>
<li>(Feb 8 '07) <a href="#scripting">Integration with scripting and templating</a>
</li>
<li>(Nov 2 '06) <a href="#fileobject-in-lookup">DataNode.getLookup contains FileObject, DataObject has getLookup()</a>
</li>
<li>(May 30 '06) <a href="#ExternalDragAndDrop.loaders">Folders in IDE can accept files dragged from outside,
files and folders in IDE can be dragged and dropped to external applications.</a>
</li>
<li>(Oct 26 '05) <a href="#more-actionContexts">All standard loaders reads their data from the layer</a>
</li>
<li>(Sep 19 '05) <a href="#DataNodeLookupContructor">New <a href="org/openide/loaders/DataNode.html" shape="rect">DataNode</a> constructor that takes Lookup</a>
</li>
<li>(May 11 '05) <a href="#FolderRenameHandler">Introduction of a new interface FolderRenameHandler which allows plugging into <code>DataFolder.FolderNode.setName()</code></a>
</li>
<li>(Mar 9 '05) <a href="#DataEditorSupport.create">A factory method to simplify creation of <code>DataEditorSupport</code></a>
</li>
<li>(Feb 7 '05) <a href="#DataLoaderPool.getDefault">Added <code>DataLoaderPool.getDefault()</code></a>
</li>
<li>(Nov 23 '04) <a href="#DataLoader.actionsContext">Actions for <code>DataLoader</code> can be specified in a layer</a>
</li>
<li>(Jun 11 '04) <a href="#ChangeableDataFilter">Added <code>ChangeableDataFilter</code> interface</a>
</li>
<li>(May 18 '04) <a href="#issue-34574">Support for 24x24 icons</a>
</li>
<li>(May 12 '04) <a href="#issue-42091"><code>DataShadow</code> uses URL for storage</a>
</li>
<li>(May 3 '04) <a href="#issue-29466"><code>DataNode.getHtmlDisplayName</code> was implemented</a>
</li>
<li>(Sep 9 '03) <a href="#SortMode.LAST_MODIFIED-SIZE">Two new folder sort modes</a>
</li>
<li>(May 28 '03) <a href="#issue-33750">Tighter synchronization during copy/move/rename</a>
</li>
<li>(May 16 '03) <a href="#issue-33469">Calls to DataObject constructor restricted</a>
</li>
<li>(Apr 18 '03) <a href="#issue-32937">Separated out from the openide</a>
</li>
<li>(Jul 15 '02) <a href="#version-3.2">Enhanced the <code>org.openide.awt.MenuBar</code>
to understand <code>Component</code>s.</a>
</li>
</ul>
<h1>
<a name="all-by-version">Changes by version</a>
</h1>
<p>
These API specification versions may be used to indicate that a module
requires a certain API feature in order to function. For example, if you
see here a feature you need which is labelled <samp>1.20</samp>, your
manifest should contain in its main attributes the line:
</p>
<pre>OpenIDE-Module-Module-Dependencies: org.openide.loaders &gt; 1.20</pre>
<ul>
<li>
(7.65) <a href="#org.openide.loaders.DataFolder.SortMode.NATURAL">Introduces SortMode for natural sorting.</a>
</li>
<li>
(7.59) <a href="#templates.separation">Separate template handling</a>
</li>
<li>
(7.56) <a href="#org.netbeans.api.templates.TemplateRegistration.targetName">Introduce targetName for templates.</a>
</li>
<li>
(7.54) <a href="#org.openide.loaders.DataFolder.SortMode.EXTENSIONS">Introduces SortMode for sorting by file extension.</a>
</li>
<li>
(7.51) <a href="#org.openide.text.big.file.size">Introduces system property to change file size threshold.</a>
</li>
<li>
(7.46) <a href="#TemplateRegistration.requireProject">Allow registration of templates which do not require a Project instance</a>
</li>
<li>
(7.44) <a href="#lazymenu.properties">Control what client properties pulldown menus have</a>
</li>
<li>
(7.42) <a href="#DataShadow.findOriginal">
Introduced <code>DataShadow.findOriginal</code> which extracts the original file from
a FileObject representing a shadow/link.
</a>
</li>
<li>
(7.36) <a href="#DataObjec.Registration">Introduced <code>DataObject.Registration</code> and <code>DataObject.Registrations</code></a>
</li>
<li>
(7.30) <a href="#ToolbarPool.isFinished"><code>ToolbarPool.isFinished</code></a>
</li>
<li>
(7.29) <a href="#Template">Introduced <code>Template</code></a>
</li>
<li>
(7.28) <a href="#DataEditorSupport.constr3">DataEditorSupport constructor with Lookup parameter</a>
</li>
<li>
(7.27) <a href="#MultiDataObject.associateLookup">Simpler way to subclass MultiDataObject</a>
</li>
<li>
(7.26) <a href="#FileSystemAction.no.nodes">lookup(DataObject.class) fallback</a>
</li>
<li>
(7.25) <a href="#org.openide.loaders.FolderChildren.delayedCreation">Children for DataFolder are more effective</a>
</li>
<li>
(7.23) <a href="#DataEditorSupport.create-callable">DataEditorSupport.create(...., Callable&lt;Pane&gt;)</a>
</li>
<li>
(7.19) <a href="#removing.org.openide.loaders.DataFolder.lazy">Removed <code>org.openide.loaders.DataFolder.lazy</code></a>
</li>
<li>
(7.16) <a href="#CreateFromTemplateHandler.FREE_FILE_EXTENSION">Added <code>CreateFromTemplateHandler.FREE_FILE_EXTENSION</code></a>
</li>
<li>
(7.14) <a href="#FileEncodingQuery-from-mime-lookup">FileEncodingQuery registered per MIME type takes preceedence</a>
</li>
<li>
(7.13) <a href="#AcceleratorBinding">Added <code>AcceleratorBinding</code></a>
</li>
<li>
(7.10) <a href="#XMLDataObject.subclass">New constructor of XMLDataObject</a>
</li>
<li>
(7.7) <a href="#DataEditorSupport.annotateName">Added <code>annotateName</code> and <code>toolTip</code> to <code>DataEditorSupport</code></a>
</li>
<li>
(7.5) <a href="#Toolbars.DnD">Deprecation of Toolbar drag and drop API</a>
</li>
<li>
(7.4) <a href="#DataFilter.FileBased">Faster Filtering based on FileObjects</a>
</li>
<li>
(7.2) <a href="#FolderLookup.dispatch">Changes in <code>FolderLookup</code> are delivered in dedicated thread</a>
</li>
<li>
(7.1) <a href="#factory">DataObjects without DataLoaders</a>
</li>
<li>
(7.0) <a href="#layer.registration">Loaders are registered in layer files</a>
</li>
<li>
(6.9) <a href="#xml.mimetypes">XMLDataObject no longer enforces text/xml as document mimetype</a>
</li>
<li>
(6.7) <a href="#scripting.wizard.prefix">Prefixing attributes from TemplateWizard with <code>wizard.</code></a>
</li>
<li>
(6.6) <a href="#templates.encoding">Templates may use ${encoding} and ${nameAndExt} properties</a>
</li>
<li>
(6.5) <a href="#DataFolder.position">Folders may be ordered by numeric position</a>
</li>
<li>
(6.3) <a href="#SaveAsCapable">SaveAsCapable interface defines the ability to save DataObject under a different file name and/or extension</a>
</li>
<li>
(6.3) <a href="#scripting">Integration with scripting and templating</a>
</li>
<li>
(6.2) <a href="#FileEncodingQuery.loaders">DataEditorSupport uses FileEncodingQuery to read or write document in correct encoding</a>
</li>
<li>
(6.0) <a href="#fileobject-in-lookup">DataNode.getLookup contains FileObject, DataObject has getLookup()</a>
</li>
<li>
(5.11) <a href="#ExternalDragAndDrop.loaders">Folders in IDE can accept files dragged from outside,
files and folders in IDE can be dragged and dropped to external applications.</a>
</li>
<li>
(5.8) <a href="#more-actionContexts">All standard loaders reads their data from the layer</a>
</li>
<li>
(5.6) <a href="#DataNodeLookupContructor">New <a href="org/openide/loaders/DataNode.html" shape="rect">DataNode</a> constructor that takes Lookup</a>
</li>
<li>
(5.4) <a href="#FolderRenameHandler">Introduction of a new interface FolderRenameHandler which allows plugging into <code>DataFolder.FolderNode.setName()</code></a>
</li>
<li>
(5.2) <a href="#DataEditorSupport.create">A factory method to simplify creation of <code>DataEditorSupport</code></a>
</li>
<li>
(5.1) <a href="#DataLoaderPool.getDefault">Added <code>DataLoaderPool.getDefault()</code></a>
</li>
<li>
(5.0) <a href="#DataLoader.actionsContext">Actions for <code>DataLoader</code> can be specified in a layer</a>
</li>
<li>
(4.16) <a href="#ChangeableDataFilter">Added <code>ChangeableDataFilter</code> interface</a>
</li>
<li>
(4.15) <a href="#issue-34574">Support for 24x24 icons</a>
</li>
<li>
(4.14) <a href="#issue-42091"><code>DataShadow</code> uses URL for storage</a>
</li>
<li>
(4.13) <a href="#issue-29466"><code>DataNode.getHtmlDisplayName</code> was implemented</a>
</li>
<li>
(4.10) <a href="#SortMode.LAST_MODIFIED-SIZE">Two new folder sort modes</a>
</li>
<li>
(4.9) <a href="#issue-33750">Tighter synchronization during copy/move/rename</a>
</li>
<li>
(4.7) <a href="#issue-33469">Calls to DataObject constructor restricted</a>
</li>
<li>
(4.5) <a href="#issue-32937">Separated out from the openide</a>
</li>
<li>
(3.2) <a href="#version-3.2">Enhanced the <code>org.openide.awt.MenuBar</code>
to understand <code>Component</code>s.</a>
</li>
</ul>
<h1>
<a name="all-by-class">Changes by affected class</a>
</h1>
<h2>
<a name="org.openide.awt.AcceleratorBinding"><code><span style="color:gray">org.openide.awt.</span>AcceleratorBinding</code></a>
</h2><ul><li>(Feb 20 '10) <a href="#AcceleratorBinding">Added <code>AcceleratorBinding</code></a>
</li></ul><h2>
<a name="org.openide.loaders.ChangeableDataFilter"><code><span style="color:gray">org.openide.loaders.</span>ChangeableDataFilter</code></a>
</h2><ul><li>(Jun 11 '04) <a href="#ChangeableDataFilter">Added <code>ChangeableDataFilter</code> interface</a>
</li></ul><h2>
<a name="org.openide.loaders.CreateFromTemplateAttributesProvider"><code><span style="color:gray">org.openide.loaders.</span>CreateFromTemplateAttributesProvider</code></a>
</h2><ul><li>(Oct 14 '14) <a href="#templates.separation">Separate template handling</a>
</li>
<li>(Feb 8 '07) <a href="#scripting">Integration with scripting and templating</a>
</li></ul><h2>
<a name="org.openide.loaders.CreateFromTemplateHandler"><code><span style="color:gray">org.openide.loaders.</span>CreateFromTemplateHandler</code></a>
</h2><ul><li>(Oct 14 '14) <a href="#templates.separation">Separate template handling</a>
</li>
<li>(Apr 13 '10) <a href="#CreateFromTemplateHandler.FREE_FILE_EXTENSION">Added <code>CreateFromTemplateHandler.FREE_FILE_EXTENSION</code></a>
</li>
<li>(Feb 8 '07) <a href="#scripting">Integration with scripting and templating</a>
</li></ul><h2>
<a name="org.openide.text.DataEditorSupport"><code><span style="color:gray">org.openide.text.</span>DataEditorSupport</code></a>
</h2><ul><li>(Aug 23 '13) <a href="#org.openide.text.big.file.size">Introduces system property to change file size threshold.</a>
</li>
<li>(Jul 11 '11) <a href="#DataEditorSupport.constr3">DataEditorSupport constructor with Lookup parameter</a>
</li>
<li>(Jun 1 '11) <a href="#DataEditorSupport.create-callable">DataEditorSupport.create(...., Callable&lt;Pane&gt;)</a>
</li>
<li>(Sep 3 '09) <a href="#DataEditorSupport.annotateName">Added <code>annotateName</code> and <code>toolTip</code> to <code>DataEditorSupport</code></a>
</li>
<li>(Mar 30 '07) <a href="#SaveAsCapable">SaveAsCapable interface defines the ability to save DataObject under a different file name and/or extension</a>
</li>
<li>(Mar 14 '07) <a href="#FileEncodingQuery.loaders">DataEditorSupport uses FileEncodingQuery to read or write document in correct encoding</a>
</li>
<li>(Mar 9 '05) <a href="#DataEditorSupport.create">A factory method to simplify creation of <code>DataEditorSupport</code></a>
</li></ul><h2>
<a name="org.openide.loaders.DataFilter"><code><span style="color:gray">org.openide.loaders.</span>DataFilter</code></a>
</h2><ul><li>(Oct 30 '08) <a href="#DataFilter.FileBased">Faster Filtering based on FileObjects</a>
</li></ul><h2>
<a name="org.openide.loaders.DataFolder"><code><span style="color:gray">org.openide.loaders.</span>DataFolder</code></a>
</h2><ul><li>(Oct 21 '15) <a href="#org.openide.loaders.DataFolder.SortMode.NATURAL">Introduces SortMode for natural sorting.</a>
</li>
<li>(Oct 10 '13) <a href="#org.openide.loaders.DataFolder.SortMode.EXTENSIONS">Introduces SortMode for sorting by file extension.</a>
</li>
<li>(Jun 10 '11) <a href="#org.openide.loaders.FolderChildren.delayedCreation">Children for DataFolder are more effective</a>
</li>
<li>(Oct 7 '10) <a href="#removing.org.openide.loaders.DataFolder.lazy">Removed <code>org.openide.loaders.DataFolder.lazy</code></a>
</li>
<li>(May 30 '06) <a href="#ExternalDragAndDrop.loaders">Folders in IDE can accept files dragged from outside,
files and folders in IDE can be dragged and dropped to external applications.</a>
</li>
<li>(Sep 9 '03) <a href="#SortMode.LAST_MODIFIED-SIZE">Two new folder sort modes</a>
</li></ul><h2>
<a name="org.openide.loaders.DataLoader"><code><span style="color:gray">org.openide.loaders.</span>DataLoader</code></a>
</h2><ul><li>(May 26 '08) <a href="#layer.registration">Loaders are registered in layer files</a>
</li>
<li>(Nov 23 '04) <a href="#DataLoader.actionsContext">Actions for <code>DataLoader</code> can be specified in a layer</a>
</li></ul><h2>
<a name="org.openide.loaders.DataLoaderPool"><code><span style="color:gray">org.openide.loaders.</span>DataLoaderPool</code></a>
</h2><ul><li>(Jun 11 '08) <a href="#factory">DataObjects without DataLoaders</a>
</li>
<li>(Oct 26 '05) <a href="#more-actionContexts">All standard loaders reads their data from the layer</a>
</li>
<li>(Feb 7 '05) <a href="#DataLoaderPool.getDefault">Added <code>DataLoaderPool.getDefault()</code></a>
</li></ul><h2>
<a name="org.openide.loaders.DataNode"><code><span style="color:gray">org.openide.loaders.</span>DataNode</code></a>
</h2><ul><li>(Nov 2 '06) <a href="#fileobject-in-lookup">DataNode.getLookup contains FileObject, DataObject has getLookup()</a>
</li>
<li>(May 30 '06) <a href="#ExternalDragAndDrop.loaders">Folders in IDE can accept files dragged from outside,
files and folders in IDE can be dragged and dropped to external applications.</a>
</li>
<li>(Sep 19 '05) <a href="#DataNodeLookupContructor">New <a href="org/openide/loaders/DataNode.html" shape="rect">DataNode</a> constructor that takes Lookup</a>
</li>
<li>(May 3 '04) <a href="#issue-29466"><code>DataNode.getHtmlDisplayName</code> was implemented</a>
</li></ul><h2>
<a name="org.openide.loaders.DataObject"><code><span style="color:gray">org.openide.loaders.</span>DataObject</code></a>
</h2><ul><li>(Jan 23 '12) <a href="#DataObjec.Registration">Introduced <code>DataObject.Registration</code> and <code>DataObject.Registrations</code></a>
</li>
<li>(May 26 '08) <a href="#layer.registration">Loaders are registered in layer files</a>
</li>
<li>(Mar 30 '07) <a href="#SaveAsCapable">SaveAsCapable interface defines the ability to save DataObject under a different file name and/or extension</a>
</li>
<li>(Feb 8 '07) <a href="#scripting">Integration with scripting and templating</a>
</li>
<li>(Nov 2 '06) <a href="#fileobject-in-lookup">DataNode.getLookup contains FileObject, DataObject has getLookup()</a>
</li>
<li>(May 28 '03) <a href="#issue-33750">Tighter synchronization during copy/move/rename</a>
</li>
<li>(May 16 '03) <a href="#issue-33469">Calls to DataObject constructor restricted</a>
</li></ul><h2>
<a name="org.openide.loaders.DataShadow"><code><span style="color:gray">org.openide.loaders.</span>DataShadow</code></a>
</h2><ul><li>(Nov 23 '12) <a href="#DataShadow.findOriginal">
Introduced <code>DataShadow.findOriginal</code> which extracts the original file from
a FileObject representing a shadow/link.
</a>
</li></ul><h2>
<a name="org.openide.actions.FileSystemAction"><code><span style="color:gray">org.openide.actions.</span>FileSystemAction</code></a>
</h2><ul><li>(Jun 21 '11) <a href="#FileSystemAction.no.nodes">lookup(DataObject.class) fallback</a>
</li></ul><h2>
<a name="org.openide.loaders.FolderLookup"><code><span style="color:gray">org.openide.loaders.</span>FolderLookup</code></a>
</h2><ul><li>(Jun 27 '08) <a href="#FolderLookup.dispatch">Changes in <code>FolderLookup</code> are delivered in dedicated thread</a>
</li></ul><h2>
<a name="org.openide.loaders.FolderRenameHandler"><code><span style="color:gray">org.openide.loaders.</span>FolderRenameHandler</code></a>
</h2><ul><li>(May 11 '05) <a href="#FolderRenameHandler">Introduction of a new interface FolderRenameHandler which allows plugging into <code>DataFolder.FolderNode.setName()</code></a>
</li></ul><h2>
<a name="org.openide.awt.MenuBar"><code><span style="color:gray">org.openide.awt.</span>MenuBar</code></a>
</h2><ul><li>(Dec 21 '12) <a href="#lazymenu.properties">Control what client properties pulldown menus have</a>
</li>
<li>(Jul 15 '02) <a href="#version-3.2">Enhanced the <code>org.openide.awt.MenuBar</code>
to understand <code>Component</code>s.</a>
</li></ul><h2>
<a name="org.openide.loaders.MultiDataObject"><code><span style="color:gray">org.openide.loaders.</span>MultiDataObject</code></a>
</h2><ul><li>(Jun 21 '11) <a href="#MultiDataObject.associateLookup">Simpler way to subclass MultiDataObject</a>
</li></ul><h2>
<a name="org.openide.loaders.SaveAsCapable"><code><span style="color:gray">org.openide.loaders.</span>SaveAsCapable</code></a>
</h2><ul><li>(Mar 30 '07) <a href="#SaveAsCapable">SaveAsCapable interface defines the ability to save DataObject under a different file name and/or extension</a>
</li></ul><h2>
<a name="org.netbeans.api.templates.TemplateRegistration"><code><span style="color:gray">org.netbeans.api.templates.</span>TemplateRegistration</code></a>
</h2><ul><li>(Jan 29 '14) <a href="#org.netbeans.api.templates.TemplateRegistration.targetName">Introduce targetName for templates.</a>
</li>
<li>(Jan 25 '13) <a href="#TemplateRegistration.requireProject">Allow registration of templates which do not require a Project instance</a>
</li>
<li>(Jul 25 '11) <a href="#Template">Introduced <code>Template</code></a>
</li></ul><h2>
<a name="org.netbeans.api.templates.TemplateRegistrations"><code><span style="color:gray">org.netbeans.api.templates.</span>TemplateRegistrations</code></a>
</h2><ul><li>(Jul 25 '11) <a href="#Template">Introduced <code>Template</code></a>
</li></ul><h2>
<a name="org.openide.loaders.TemplateWizard"><code><span style="color:gray">org.openide.loaders.</span>TemplateWizard</code></a>
</h2><ul><li>(Aug 14 '07) <a href="#scripting.wizard.prefix">Prefixing attributes from TemplateWizard with <code>wizard.</code></a>
</li></ul><h2>
<a name="org.openide.awt.Toolbar"><code><span style="color:gray">org.openide.awt.</span>Toolbar</code></a>
</h2><ul><li>(Nov 28 '08) <a href="#Toolbars.DnD">Deprecation of Toolbar drag and drop API</a>
</li>
<li>(May 18 '04) <a href="#issue-34574">Support for 24x24 icons</a>
</li></ul><h2>
<a name="org.openide.awt.ToolbarPool"><code><span style="color:gray">org.openide.awt.</span>ToolbarPool</code></a>
</h2><ul><li>(Sep 3 '11) <a href="#ToolbarPool.isFinished"><code>ToolbarPool.isFinished</code></a>
</li>
<li>(Nov 28 '08) <a href="#Toolbars.DnD">Deprecation of Toolbar drag and drop API</a>
</li>
<li>(May 18 '04) <a href="#issue-34574">Support for 24x24 icons</a>
</li></ul><h2>
<a name="org.openide.loaders.XMLDataObject"><code><span style="color:gray">org.openide.loaders.</span>XMLDataObject</code></a>
</h2><ul><li>(Nov 9 '09) <a href="#XMLDataObject.subclass">New constructor of XMLDataObject</a>
</li>
<li>(Feb 20 '08) <a href="#xml.mimetypes">XMLDataObject no longer enforces text/xml as document mimetype</a>
</li></ul><hr>
<h1>
<a name="details-by-api">Details of all changes by API and date</a>
</h1>
<hr style="width:50%">
<h2>
<a name="awt">Loaders AWT Extensions</a>
</h2>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="lazymenu.properties">Control what client properties pulldown menus have</a>
</h3>
<em>Dec 21 '12; API spec. version: 7.44; affected top-level classes: <a href="./org/openide/awt/MenuBar.html"><code>MenuBar</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=222138">
#222138</a></em>
<br>
<p>Layer declaration of a menu can influence what client properties
the actual <a href="http://download.oracle.com/javase/8/docs/api/javax/swing/JMenu.html" shape="rect">JMenu</a>
instances will have. More
<a href="architecture-summary.html#layer-Menu" shape="rect">details</a>.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ToolbarPool.isFinished"><code>ToolbarPool.isFinished</code></a>
</h3>
<em>Sep 3 '11; API spec. version: 7.30; affected top-level classes: <a href="./org/openide/awt/ToolbarPool.html"><code>ToolbarPool</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=192207">
#192207</a></em>
<br>
<p>
One can find out if <code>ToolbarPool</code> is initialized.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="FileSystemAction.no.nodes">lookup(DataObject.class) fallback</a>
</h3>
<em>Jun 21 '11; API spec. version: 7.26; affected top-level classes: <a href="./org/openide/actions/FileSystemAction.html"><code>FileSystemAction</code></a>; made by: tstupka</em>
<br>
<p>
In FileSystemAction.createMenu(boolean popUp, Lookup lookup)
fallback on .lookup(DataObject.class) in case the given lookup
contains no nodes.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="FileEncodingQuery-from-mime-lookup">FileEncodingQuery registered per MIME type takes preceedence</a>
</h3>
<em>Apr 7 '10; API spec. version: 7.14; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=102629">
#102629</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="AcceleratorBinding">Added <code>AcceleratorBinding</code></a>
</h3>
<em>Feb 20 '10; API spec. version: 7.13; affected top-level classes: <code>org.openide.awt.AcceleratorBinding</code>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=180543">
#180543</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="Toolbars.DnD">Deprecation of Toolbar drag and drop API</a>
</h3>
<em>Nov 28 '08; API spec. version: 7.5; affected top-level classes: <a href="./org/openide/awt/Toolbar.html"><code>Toolbar</code></a> <a href="./org/openide/awt/ToolbarPool.html"><code>ToolbarPool</code></a>; made by: saubrecht; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=59242">
#59242</a></em>
<br>
<p>
Deprecated methods related to Toolbar drag and drop.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="version-3.2">Enhanced the <code>org.openide.awt.MenuBar</code>
to understand <code>Component</code>s.</a>
</h3>
<em>Jul 15 '02; API spec. version: 3.2; affected top-level classes: <a href="./org/openide/awt/MenuBar.html"><code>MenuBar</code></a>; made by: pnejedly</em>
<br>
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>.
<hr style="width:50%">
<h2>
<a name="editor">Loaders Editor Extensions</a>
</h2>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="org.openide.text.big.file.size">Introduces system property to change file size threshold.</a>
</h3>
<em>Aug 23 '13; API spec. version: 7.51; affected top-level classes: <a href="./org/openide/text/DataEditorSupport.html"><code>DataEditorSupport</code></a>; made by: igor_nikiforov; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=213882">
#213882</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="DataEditorSupport.constr3">DataEditorSupport constructor with Lookup parameter</a>
</h3>
<em>Jul 11 '11; API spec. version: 7.28; affected top-level classes: <a href="./org/openide/text/DataEditorSupport.html"><code>DataEditorSupport</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=199416">
#199416</a></em>
<br>
<p>
One can control what
<a href="../org-openide-util-lookup/org/openide/util/Lookup.html" shape="rect">
Lookup</a> will be associated with
<a href="org/openide/text/DataEditorSupport.html" shape="rect">
DataEditorSupport</a>.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="DataEditorSupport.create-callable">DataEditorSupport.create(...., Callable&lt;Pane&gt;)</a>
</h3>
<em>Jun 1 '11; API spec. version: 7.23; affected top-level classes: <a href="./org/openide/text/DataEditorSupport.html"><code>DataEditorSupport</code></a>; made by: jtulach</em>
<br>
<p>
New <code>create</code> factory method to allow creation
of different <code>CloneableEditorSupport.Pane</code> implementations
than the default <code>CloneableEditor</code>.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="DataEditorSupport.annotateName">Added <code>annotateName</code> and <code>toolTip</code> to <code>DataEditorSupport</code></a>
</h3>
<em>Sep 3 '09; API spec. version: 7.7; affected top-level classes: <a href="./org/openide/text/DataEditorSupport.html"><code>DataEditorSupport</code></a>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=171428">
#171428</a></em>
<br>
<p>
Added two convenience methods permitting modules with nonstandard
editor-like windows to use the regular modified and read-only status
annotations.
</p>
<br>
<strong>Compatibility: </strong>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="DataEditorSupport.create">A factory method to simplify creation of <code>DataEditorSupport</code></a>
</h3>
<em>Mar 9 '05; API spec. version: 5.2; affected top-level classes: <a href="./org/openide/text/DataEditorSupport.html"><code>DataEditorSupport</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=17081">
#17081</a></em>
<br>
<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>
<hr style="width:50%">
<h2>
<a name="loaders">Loaders API</a>
</h2>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="org.openide.loaders.DataFolder.SortMode.NATURAL">Introduces SortMode for natural sorting.</a>
</h3>
<em>Oct 21 '15; API spec. version: 7.65; affected top-level classes: <a href="./org/openide/loaders/DataFolder.html"><code>DataFolder</code></a>; made by: jhavlin; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=242226">
#242226</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="templates.separation">Separate template handling</a>
</h3>
<em>Oct 14 '14; API spec. version: 7.59; affected top-level classes: <a href="./org/openide/loaders/CreateFromTemplateAttributesProvider.html"><code>CreateFromTemplateAttributesProvider</code></a> <a href="./org/openide/loaders/CreateFromTemplateHandler.html"><code>CreateFromTemplateHandler</code></a>; made by: sdedic; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=">
#</a></em>
<br>
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" shape="rect">
FileBuilder</a> for details.
<br>
<em><a href="http://wiki.netbeans.org/VersioningPolicy#Compatible_change_on_the_trunk">Binary-compatible</a></em>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="org.netbeans.api.templates.TemplateRegistration.targetName">Introduce targetName for templates.</a>
</h3>
<em>Jan 29 '14; API spec. version: 7.56; affected top-level classes: <code>org.netbeans.api.templates.TemplateRegistration</code>; made by: jhavlin; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=239028">
#239028</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="org.openide.loaders.DataFolder.SortMode.EXTENSIONS">Introduces SortMode for sorting by file extension.</a>
</h3>
<em>Oct 10 '13; API spec. version: 7.54; affected top-level classes: <a href="./org/openide/loaders/DataFolder.html"><code>DataFolder</code></a>; made by: jhavlin; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=230821">
#230821</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="TemplateRegistration.requireProject">Allow registration of templates which do not require a Project instance</a>
</h3>
<em>Jan 25 '13; API spec. version: 7.46; affected top-level classes: <code>org.netbeans.api.templates.TemplateRegistration</code>; made by: 280Z28; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=186943">
#186943</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="DataShadow.findOriginal">
Introduced <code>DataShadow.findOriginal</code> which extracts the original file from
a FileObject representing a shadow/link.
</a>
</h3>
<em>Nov 23 '12; API spec. version: 7.42; affected top-level classes: <a href="./org/openide/loaders/DataShadow.html"><code>DataShadow</code></a>; made by: sdedic</em>
<br>
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.
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! --><h3>
<a name="DataObjec.Registration">Introduced <code>DataObject.Registration</code> and <code>DataObject.Registrations</code></a>
</h3>
<em>Jan 23 '12; API spec. version: 7.36; affected top-level classes: <a href="./org/openide/loaders/DataObject.html"><code>DataObject</code></a>; made by: skygo; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=207219">
#207219</a> <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=208670">
#208670</a></em>
<br>
<p>
Introduced a new annotation for registering DataObject.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="Template">Introduced <code>Template</code></a>
</h3>
<em>Jul 25 '11; API spec. version: 7.29; affected top-level classes: <code>org.netbeans.api.templates.TemplateRegistration</code> <code>org.netbeans.api.templates.TemplateRegistrations</code>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=200175">
#200175</a></em>
<br>
<p>
Introduced a new annotation for registering (file or project) templates.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="MultiDataObject.associateLookup">Simpler way to subclass MultiDataObject</a>
</h3>
<em>Jun 21 '11; API spec. version: 7.27; affected top-level classes: <a href="./org/openide/loaders/MultiDataObject.html"><code>MultiDataObject</code></a>; made by: jtulach</em>
<br>
<p>
New way to subclass <code>MultiDataObject</code>: override
<a href="org/openide/loaders/MultiDataObject.html#associateLookup--" shape="rect">
int associateLookup()
</a> to return <code>1</code>. In constructor call
<a href="org/openide/loaders/MultiDataObject.html#registerEditor-java.lang.String-boolean-" shape="rect">
registerEditor("your/mimetype", ...)</a> to get default
editor support. No need to override any other methods to get
well performing <code>MultiDataObject</code>.
</p>
<br>
<strong>Compatibility: </strong>
Added <code>registerEditor</code> method which might clash
with some existing method in subclasses, although it is
hopefully not very likely.
<br>
<em><a href="http://wiki.netbeans.org/VersioningPolicy#Compatible_change_on_the_trunk">Binary-compatible</a></em>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="org.openide.loaders.FolderChildren.delayedCreation">Children for DataFolder are more effective</a>
</h3>
<em>Jun 10 '11; API spec. version: 7.25; affected top-level classes: <a href="./org/openide/loaders/DataFolder.html"><code>DataFolder</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=199391">
#199391</a></em>
<br>
<p>
The nodes view over a <code>DataFolder</code> now creates
real nodes in background which provides better performance
on slow, remote filesystems.
</p>
<br>
<strong>Compatibility: </strong>
Not fully compatible. In case your application desperately
needs the original mode, use the
<a href="architecture-summary.html#systemproperty-org.openide.loaders.FolderChildren.delayedCreation" shape="rect">
org.openide.loaders.FolderChildren.delayedCreation
</a> property.
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! --><h3>
<a name="removing.org.openide.loaders.DataFolder.lazy">Removed <code>org.openide.loaders.DataFolder.lazy</code></a>
</h3>
<em>Oct 7 '10; API spec. version: 7.19; affected top-level classes: <a href="./org/openide/loaders/DataFolder.html"><code>DataFolder</code></a>; made by: jtulach</em>
<br>
<p>
The private API to honor
<code>org.openide.loaders.DataFolder.lazy</code> property
has been removed, as being obsolete.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="CreateFromTemplateHandler.FREE_FILE_EXTENSION">Added <code>CreateFromTemplateHandler.FREE_FILE_EXTENSION</code></a>
</h3>
<em>Apr 13 '10; API spec. version: 7.16; affected top-level classes: <a href="./org/openide/loaders/CreateFromTemplateHandler.html"><code>CreateFromTemplateHandler</code></a>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=141886">
#141886</a></em>
<br>
<p>
Introduced a parameter that may be specified on templates
to permit the user to pick a file extension.
</p>
<br>
<strong>Compatibility: </strong>
<p>
Existing <code>CreateFromTemplateHandler</code> implementations
are encouraged to honor the parameter.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="XMLDataObject.subclass">New constructor of XMLDataObject</a>
</h3>
<em>Nov 9 '09; API spec. version: 7.10; affected top-level classes: <a href="./org/openide/loaders/XMLDataObject.html"><code>XMLDataObject</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=175750">
#175750</a></em>
<br>
<p>
New constructor for subclasses of <code>XMLDataObject</code>.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="DataFilter.FileBased">Faster Filtering based on FileObjects</a>
</h3>
<em>Oct 30 '08; API spec. version: 7.4; affected top-level classes: <a href="./org/openide/loaders/DataFilter.html"><code>DataFilter</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=150747">
#150747</a></em>
<br>
<p>
<a href="org/openide/loaders/DataFilter.html" shape="rect">DataFilter</a>
interface used to support filtering based on
<a href="org/openide/loaders/DataObject.html" shape="rect">DataObject</a>s.
With the introduction of more
<a href="../org-openide-nodes/apichanges.html#Children.Keys.lazy" shape="rect">effective nodes</a>,
this is slowing down the visualization of folders significantly.
That is why we introduce new
<a href="org/openide/loaders/DataFilter.FileBased.html" shape="rect">pre-filter</a>
which can operate
on <a href="../org-openide-filesystems/org/openide/filesystems/FileObject.html" shape="rect">FileObject</a>s,
whithout the need to instantiate
<a href="org/openide/loaders/DataObject.html" shape="rect">DataObject</a>s.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="FolderLookup.dispatch">Changes in <code>FolderLookup</code> are delivered in dedicated thread</a>
</h3>
<em>Jun 27 '08; API spec. version: 7.2; affected top-level classes: <a href="./org/openide/loaders/FolderLookup.html"><code>FolderLookup</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=134297">
#134297</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="factory">DataObjects without DataLoaders</a>
</h3>
<em>Jun 11 '08; API spec. version: 7.1; affected top-level classes: <a href="./org/openide/loaders/DataLoaderPool.html"><code>DataLoaderPool</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=91665">
#91665</a></em>
<br>
<p>
There is new method to register new DataObject types without
the need to write own DataLoader. Use
<a href="org/openide/loaders/DataLoaderPool.html#factory-java.lang.Class-java.lang.String-java.awt.Image-" shape="rect">
DataLoaderPool.factory</a> method.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="layer.registration">Loaders are registered in layer files</a>
</h3>
<em>May 26 '08; API spec. version: 7.0; affected top-level classes: <a href="./org/openide/loaders/DataObject.html"><code>DataObject</code></a> <a href="./org/openide/loaders/DataLoader.html"><code>DataLoader</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=91665">
#91665</a></em>
<br>
<p>
There is new
<a href="org/openide/loaders/doc-files/api.html#register" shape="rect">registration
scheme</a> for <code>DataLoader</code>s.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="xml.mimetypes">XMLDataObject no longer enforces text/xml as document mimetype</a>
</h3>
<em>Feb 20 '08; API spec. version: 6.9; affected top-level classes: <a href="./org/openide/loaders/XMLDataObject.html"><code>XMLDataObject</code></a>; made by: mkleint</em>
<br>
<p>
Whenever possible the editor support and editor components will
use the underlying FileObject's mimetype (as resolved by the mimetype resolvers).
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="scripting.wizard.prefix">Prefixing attributes from TemplateWizard with <code>wizard.</code></a>
</h3>
<em>Aug 14 '07; API spec. version: 6.7; affected top-level classes: <a href="./org/openide/loaders/TemplateWizard.html"><code>TemplateWizard</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=109569">
#109569</a></em>
<br>
<p>
When <a href="org/openide/loaders/TemplateWizard.html" shape="rect">TemplateWizard</a> invokes
<a href="org/openide/loaders/DataObject.html" shape="rect">DataObject</a>.createFromTemplate,
it passes as argument all its <a href="../org-openide-dialogs/org/openide/WizardDescriptor.html#getProperties--" shape="rect">properties</a>
to it with <code>wizard.</code> as a prefix. That way they are available to
underlying <a href="architecture-summary.html#script" shape="rect">scripting and templating
engines</a>.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="templates.encoding">Templates may use ${encoding} and ${nameAndExt} properties</a>
</h3>
<em>Aug 1 '07; API spec. version: 6.6; made by: mfukala; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=110910">
#110910</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="DataFolder.position">Folders may be ordered by numeric position</a>
</h3>
<em>Jun 16 '07; API spec. version: 6.5; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=103187">
#103187</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="SaveAsCapable">SaveAsCapable interface defines the ability to save DataObject under a different file name and/or extension</a>
</h3>
<em>Mar 30 '07; API spec. version: 6.3; affected top-level classes: <a href="./org/openide/loaders/SaveAsCapable.html"><code>SaveAsCapable</code></a> <a href="./org/openide/loaders/DataObject.html"><code>DataObject</code></a> <a href="./org/openide/text/DataEditorSupport.html"><code>DataEditorSupport</code></a>; made by: saubrecht; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=20147">
#20147</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="FileEncodingQuery.loaders">DataEditorSupport uses FileEncodingQuery to read or write document in correct encoding</a>
</h3>
<em>Mar 14 '07; API spec. version: 6.2; affected top-level classes: <a href="./org/openide/text/DataEditorSupport.html"><code>DataEditorSupport</code></a>; made by: tzezula; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=42638">
#42638</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="scripting">Integration with scripting and templating</a>
</h3>
<em>Feb 8 '07; API spec. version: 6.3; affected top-level classes: <a href="./org/openide/loaders/DataObject.html"><code>DataObject</code></a> <a href="./org/openide/loaders/CreateFromTemplateHandler.html"><code>CreateFromTemplateHandler</code></a> <a href="./org/openide/loaders/CreateFromTemplateAttributesProvider.html"><code>CreateFromTemplateAttributesProvider</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=13250">
#13250</a></em>
<br>
<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="architecture-summary.html#script" shape="rect">scripting and templating
languages</a> during create from template operation.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="fileobject-in-lookup">DataNode.getLookup contains FileObject, DataObject has getLookup()</a>
</h3>
<em>Nov 2 '06; API spec. version: 6.0; affected top-level classes: <a href="./org/openide/loaders/DataNode.html"><code>DataNode</code></a> <a href="./org/openide/loaders/DataObject.html"><code>DataObject</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=62707">
#62707</a></em>
<br>
<p>
Since now, each DataNode constructed without using own lookup,
shall have <code>FileObject</code>(s) associated with its
<a href="org/openide/loaders/DataObject.html#files--" shape="rect">DataObject</a>
available in its own lookup.
Also a
<a href="org/openide/loaders/DataObject.html" shape="rect">DataObject</a>
has been retrofitted to implement a
<a href="../org-openide-util-lookup/org/openide/util/Lookup.Provider.html" shape="rect">Lookup.Provider</a>
interface and thus have its
<a href="org/openide/loaders/DataObject.html#getLookup--" shape="rect">getLookup</a>
method that can be used instead of the old <code>getCookie</code> one.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ExternalDragAndDrop.loaders">Folders in IDE can accept files dragged from outside,
files and folders in IDE can be dragged and dropped to external applications.</a>
</h3>
<em>May 30 '06; API spec. version: 5.11; affected top-level classes: <a href="./org/openide/loaders/DataNode.html"><code>DataNode</code></a> <a href="./org/openide/loaders/DataFolder.html"><code>DataFolder</code></a>; made by: saubrecht; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=35228">
#35228</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="more-actionContexts">All standard loaders reads their data from the layer</a>
</h3>
<em>Oct 26 '05; API spec. version: 5.8; affected top-level classes: <a href="./org/openide/loaders/DataLoaderPool.html"><code>DataLoaderPool</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=64200">
#64200</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="DataNodeLookupContructor">New <a href="org/openide/loaders/DataNode.html" shape="rect">DataNode</a> constructor that takes Lookup</a>
</h3>
<em>Sep 19 '05; API spec. version: 5.6; affected top-level classes: <a href="./org/openide/loaders/DataNode.html"><code>DataNode</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=61824">
#61824</a></em>
<br>
It was not possible to use <a href="org/openide/loaders/DataNode.html" shape="rect">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" shape="rect">Node</a>
and there was no way to pass it thru <a href="org/openide/loaders/DataNode.html" shape="rect">DataNode</a>.
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! --><h3>
<a name="FolderRenameHandler">Introduction of a new interface FolderRenameHandler which allows plugging into <code>DataFolder.FolderNode.setName()</code></a>
</h3>
<em>May 11 '05; API spec. version: 5.4; affected top-level classes: <a href="./org/openide/loaders/FolderRenameHandler.html"><code>FolderRenameHandler</code></a>; made by: jbecicka; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=53295">
#53295</a></em>
<br>
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.
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! --><h3>
<a name="DataLoaderPool.getDefault">Added <code>DataLoaderPool.getDefault()</code></a>
</h3>
<em>Feb 7 '05; API spec. version: 5.1; affected top-level classes: <a href="./org/openide/loaders/DataLoaderPool.html"><code>DataLoaderPool</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=41650">
#41650</a></em>
<br>
<p>
<code>DataLoaderPool</code> now has a new method <code>getDefault()</code>
to allow simple access to the default system loader pool.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="DataLoader.actionsContext">Actions for <code>DataLoader</code> can be specified in a layer</a>
</h3>
<em>Nov 23 '04; API spec. version: 5.0; affected top-level classes: <a href="./org/openide/loaders/DataLoader.html"><code>DataLoader</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=45137">
#45137</a></em>
<br>
<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" shape="rect">
any regular actions</a> just into the folder <code>Loaders/folder/any/Actions</code>.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ChangeableDataFilter">Added <code>ChangeableDataFilter</code> interface</a>
</h3>
<em>Jun 11 '04; API spec. version: 4.16; affected top-level classes: <a href="./org/openide/loaders/ChangeableDataFilter.html"><code>ChangeableDataFilter</code></a>; made by: phrebejk; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=44368">
#44368</a></em>
<br>
<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>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="issue-34574">Support for 24x24 icons</a>
</h3>
<em>May 18 '04; API spec. version: 4.15; affected top-level classes: <a href="./org/openide/awt/Toolbar.html"><code>Toolbar</code></a> <a href="./org/openide/awt/ToolbarPool.html"><code>ToolbarPool</code></a>; made by: mslama; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=34574">
#34574</a></em>
<br>
<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.
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! --><h3>
<a name="issue-42091"><code>DataShadow</code> uses URL for storage</a>
</h3>
<em>May 12 '04; API spec. version: 4.14; made by: dkonecny; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=42091">
#42091</a></em>
<br>
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.
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! --><h3>
<a name="issue-29466"><code>DataNode.getHtmlDisplayName</code> was implemented</a>
</h3>
<em>May 3 '04; API spec. version: 4.13; affected top-level classes: <a href="./org/openide/loaders/DataNode.html"><code>DataNode</code></a>; made by: tboudreau; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=29466">
#29466</a></em>
<br>
<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.
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! --><h3>
<a name="SortMode.LAST_MODIFIED-SIZE">Two new folder sort modes</a>
</h3>
<em>Sep 9 '03; API spec. version: 4.10; affected top-level classes: <a href="./org/openide/loaders/DataFolder.html"><code>DataFolder</code></a>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=26667">
#26667</a></em>
<br>
Two new folder sort modes, <code>LAST_MODIFIED</code> and
<code>SIZE</code>, were added.
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! --><h3>
<a name="issue-33750">Tighter synchronization during copy/move/rename</a>
</h3>
<em>May 28 '03; API spec. version: 4.9; affected top-level classes: <a href="./org/openide/loaders/DataObject.html"><code>DataObject</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=33750">
#33750</a></em>
<br>
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></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.
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! --><h3>
<a name="issue-33469">Calls to DataObject constructor restricted</a>
</h3>
<em>May 16 '03; API spec. version: 4.7; affected top-level classes: <a href="./org/openide/loaders/DataObject.html"><code>DataObject</code></a>; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=33469">
#33469</a></em>
<br>
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></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" shape="rect">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></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></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.
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! --><h3>
<a name="issue-32937">Separated out from the openide</a>
</h3>
<em>Apr 18 '03; API spec. version: 4.5; made by: jtulach; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=32937">
#32937</a></em>
<br>
Classes of <code>org.openide.loaders</code> package were separated
out from the whole openide.jar into their own openide-loaders.jar.
<hr>
<p><span class="footnote">Built on September 14 2018.&nbsp;&nbsp;|&nbsp;&nbsp; Copyright &#169; 2017-2018 Apache Software Foundation. All Rights Reserved.</span></p>
</body>
</html>