1
<?xml version="1.0" encoding="UTF-8"?>
3
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
5
Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
8
The contents of this file are subject to the terms of either the GNU
9
General Public License Version 2 only ("GPL") or the Common
10
Development and Distribution License("CDDL") (collectively, the
11
"License"). You may not use this file except in compliance with the
12
License. You can obtain a copy of the License at
13
http://www.netbeans.org/cddl-gplv2.html
14
or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
15
specific language governing permissions and limitations under the
16
License. When distributing the software, include this License Header
17
Notice in each file and include the License file at
18
nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
19
particular file as subject to the "Classpath" exception as provided
20
by Sun in the GPL Version 2 section of the License file that
21
accompanied this code. If applicable, add the following below the
22
License Header, with the fields enclosed by brackets [] replaced by
23
your own identifying information:
24
"Portions Copyrighted [year] [name of copyright owner]"
28
The Original Software is NetBeans. The Initial Developer of the Original
29
Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
30
Microsystems, Inc. All Rights Reserved.
32
If you wish your version of this file to be governed by only the CDDL
33
or only the GPL Version 2, indicate your decision by adding
34
"[Contributor] elects to include this software in this distribution
35
under the [CDDL or GPL Version 2] license." If you do not indicate a
36
single choice of license, a recipient has the option to distribute
37
your version of this file under either the CDDL, the GPL Version 2 or
38
to extend the choice of license to its licensees as provided above.
39
However, if you add GPL Version 2 code and therefore, elected the GPL
40
Version 2 license, then the option applies only if the new code is
41
made subject to such option by the copyright holder.
43
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">
46
<apidef name="nodes">Nodes API</apidef>
49
<change id="ChildFactory">
51
<summary>API for Children objects that asynchronously compute keys/child
52
nodes and simplifies implementation of Children.Keys usages</summary>
53
<version major="7" minor="1"/>
54
<date day="1" month="6" year="2007"/>
55
<author login="tboudreau"/>
56
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
59
<a href="@TOP@/org/openide/nodes/ChildFactory.html">ChildFactory</a>
61
<a href="@TOP@/org/openide/nodes/Children.html#create(org.openide.nodes.ChildFactory, boolean)">Children.create(ChildFactory factory, boolean asynchronous)</a>
62
to the API. This simplifies creation of Node children which need
63
to be computed on a background thread for performance reasons.
64
Anyone wishing to do this can simply extend ChildFactory and
65
pass that to Children.create() to automatically get a Node that will
66
display a Please Wait child node when first expanded. A ChildFactory
67
can either compute all child nodes, or batch them in multiple
70
ChildFactory can also be used to implement synchronous children,
71
by setting the <code>asynchronous</code> parameter passed to
72
<code>Children.create()</code> to false. This could replace most
73
common usages of Children.Keys, and make it easy to switch to
74
asynchronous child computation if that is determined to be
75
necessary for performance reasons.
78
<issue number="91529"/>
80
<change id="GenericCookieSet">
82
<summary>CookieSet can hold any objects and not just cookies</summary>
83
<version major="7" minor="0"/>
84
<date day="6" month="11" year="2006"/>
85
<author login="jtulach"/>
86
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
88
New method <a href="@TOP@/org/openide/nodes/CookieSet.html#createGeneric(org.openide.nodes.CookieSet.Before)">
89
CookieSet.createGeneric</a> has been added. It allows to create
90
an instance of <a href="@TOP@/org/openide/nodes/CookieSet.html">
91
CookieSet</a> that can contain any object, not just
92
<a href="@TOP@/org/openide/nodes/Node.Cookie.html">Cookies</a>.
93
This addition change is accompanied with two additional changes:
94
<a href="@TOP@/org/openide/nodes/CookieSet.html">
95
CookieSet</a> now implements <a href="@org-openide-util@/org/openide/util/Lookup.Provider.html">
96
Lookup.Provider</a> and thus has a method <code>getLookup</code> to
97
allow queries for of its content.
98
Also there is a new method
99
<a href="@TOP@/org/openide/nodes/CookieSet.html#assign(java.lang.Class,%20T...)">
100
assign(clazz, instances)</a> that allows to add/remove
101
plain old java objects to the <code>CookieSet</code>.
103
<class package="org.openide.nodes" name="CookieSet"/>
104
<issue number="62707"/>
106
<change id="BeanNode.LookupCtor">
108
<summary>BeanNode constructor allows passing Lookup instance</summary>
109
<version major="6" minor="9"/>
110
<date day="18" month="8" year="2006"/>
111
<author login="pnejedly"/>
112
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
114
Adding a new constructors to <code>BeanNode</code>, allowing
115
subclasses to pass context Lookup.
117
<class package="org.openide.nodes" name="BeanNode"/>
118
<issue number="67098"/>
120
<change id="AbstractNode.setIconBaseWithExtension">
122
<summary>AbstractNode allows using different icon extensions</summary>
123
<version major="6" minor="5"/>
124
<date day="14" month="7" year="2005"/>
125
<author login="pnejedly"/>
126
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="yes" deletion="no" modification="no"/>
128
Adding possibility for <code>AbstractNode</code> to use PNG files
129
as icons. Adding new final method
130
<code>setIconBaseWithExtension(String baseExt)</code>
131
which replaces the original method for manipulating icon base,
132
<code>setIconBase(String)</code>.
133
The original (now deprecated) method stil works the same way,
134
using <code>".gif"</code> as extension
135
The original method <code>setIconBase(String)</code> delegates
136
to the new one, using the default extension.
138
<class package="org.openide.nodes" name="AbstractNode"/>
139
<issue number="53461"/>
143
<summary>FilterNode allows controlling delegation of getValue/setValue calls</summary>
144
<version major="4" minor="25"/>
145
<date day="13" month="2" year="2004"/>
146
<author login="pnejedly"/>
147
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
149
From this version, the FilterNode by default delegates all
150
<code>getValue(String)</code> and <code>setValue(String, Object)</code>
151
calls the to the original node. Also, FilterNode now exports two
152
new constants, <code>FilterNode.DELEGATE_SET_VALUE</code> and
153
<code>FilterNode.DELEGATE_GET_VALUE</code>, which can be used to control
154
the delegation of the above mentioned methods.
156
<class package="org.openide.nodes" name="FilterNode"/>
157
<issue number="31006"/>
161
<summary>InplaceEditor interface added to APIs, some deprecations in property sheet rewrite</summary>
162
<version major="4" minor="9"/>
163
<date day="16" month="7" year="2003"/>
164
<author login="tboudreau"/>
165
<compatibility addition="yes" deprecation="yes" binary="compatible" source="compatible" semantic="compatible" deletion="no" modification="no"/>
167
New interface that allows a property editor to supply an inline editor
168
for the new property sheet added, as part of merging the new property
169
sheet. A method, registerInplaceEditorFactory() has been added to PropertyEnv to allow
170
modules to supply an inplace editor globally for all properties of a
171
given type; also, Node.Property objects may supply a custom inplace editor
172
instance via the hint "inplaceEditor" in getValue(String).
173
<p>PropertySheetSettings is an old SystemOption subclass that offers
174
settings that affect the display of the property sheet. These settings
175
are irrelevant to the new property sheet.</p>
177
In order to provide some performance optimizations, it was
178
necessary to un-final the class PropertyEnv. However, it
179
should be treated as final outside the package - there should
180
never be a need to subclass it. A note has been added to
181
its javadoc to this effect.</p>
182
<p>A non-normative hint may now be supplied by instances of Node.PropertySet
183
to return a localized display name for a tab which the property sheet
184
should use for displaying that and any other property sets which share
185
the name: "tabName".</p>
187
<class package="org.openide.nodes" name="Node"/>
188
<class link="no" package="org.openide.explorer.propertysheet" name="InplaceEditor"/>
189
<class link="no" package="org.openide.explorer.propertysheet" name="PropertyEnv"/>
190
<class link="no" package="org.openide.explorer.propertysheet" name="PropertySheet"/>
191
<class link="no" package="org.openide.explorer.propertysheet" name="PropertySheetSettings"/>
192
<issue number="29447"/>
196
<summary>New FilterNode constructor that takes Lookup</summary>
197
<version major="4" minor="4"/>
198
<date day="7" month="4" year="2003"/>
199
<author login="jtulach"/>
200
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
202
Allows users of FilterNode to provide own specific lookup.
204
<class package="org.openide.nodes" name="FilterNode"/>
205
<issue number="32470"/>
209
<summary>Returning value of NodeOp.findActions method refined</summary>
210
<date day="26" month="2" year="2003"/>
211
<author login="pzavadsky"/>
212
<compatibility modification="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no">
213
In fact this is just a slight refinement of the API intoduced by 3.29 change.
216
The utility method <code>NodeOp.findActions(Nodep[])</code> is changed
217
the way it returns an empty array instead of null (for the cases
218
there are no actions found). Also javadoc is refined in that sense.
220
<class package="org.openide.nodes" name="NodeOp"/>
221
<issue number="31476"/>
225
<summary>Added method Node.Property.isDefaultValue</summary>
226
<version major="3" minor="19"/>
227
<date day="8" month="11" year="2002"/>
228
<author login="dstrupl"/>
229
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
231
Method public boolean isDefaultValue() has been added to class Node.Property.
232
The idea behind this is to visually mark modified properties in the property sheet.
233
If the method returns false it means that the value has been modified by the user
234
and visual feedback will be shown. The reason why the default impl is
235
returning true is to make the old properties (properties using previous
236
version of the API) look the same as they did before the change.
238
<class package="org.openide.nodes" name="Node"/>
242
<summary>Node implements Lookup.Provider</summary>
243
<version major="3" minor="11"/>
244
<date day="3" month="10" year="2002"/>
245
<author login="jtulach"/>
246
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
248
Node has been extended to provide method getLookup that allows better
249
querying possibilities than the old Node.getCookie method. New constructors
250
have been provided to allow to pass a Lookup instance to newly created
251
node. In such case Node.getCookie delegates to the provided instance,
252
otherwise Node.getLookup delegates to Node.getCookie content.
254
<class package="org.openide.nodes" name="Node"/>
255
<issue number="26790"/>
259
<summary>New method <code>setChildren()</code> in <code>Node</code>
261
<version major="3" minor="1"/>
262
<date day="15" month="7" year="2002"/>
263
<author login="phrebejk"/>
264
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
266
<code>Node</code> has new method <code>setChildren(Children)</code> which allows
267
to change the <code>Children</code> of given <code>Node</code>. Node also fires
268
<code>new PropertyChangeEvent(PROP_LEAF)</code> whenever changing
269
children from non-<code>LEAF</code> to <code>LEAF</code> and vice-versa.
271
<class package="org.openide.nodes" name="Node"/>
275
<summary>Added Children.getNodes(boolean optimalResult)</summary>
276
<version major="2" minor="17"/>
277
<date day="2" month="5" year="2002"/>
278
<author login="pnejedly"/>
279
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
280
<description>Added an additional getNodes() method when the API
281
user can specify whether he need the most right result.
282
The method is needed for code-based navigation through nodes,
283
like scripting, and for testability.
284
SPI implementors can implement it better.
286
<class package="org.openide.nodes" name="Children"/>
288
<change id="layer-register-nodes">
290
<summary>Nodes can be declared through layers, manifest declaration deprecated</summary>
291
<version major="2" minor="16"/>
292
<date day="24" month="4" year="2002"/>
293
<author login="dsimonek"/>
294
<compatibility addition="yes" deprecation="yes" binary="compatible" source="compatible" semantic="compatible" deletion="no" modification="no"/>
295
<description> Added possibility to define Environment, Runtime and Root
296
nodes through layer instead of manifest declaration. Manifest declaration
299
<issue number="19609"/>
301
<change id="issue-19443-1">
302
<summary>API separation, phase I</summary>
303
<version major="3" minor="14"/>
304
<date day="15" month="10" year="2002"/>
305
<author login="jglick"/>
306
<compatibility binary="compatible" source="incompatible" deprecation="yes" semantic="compatible" addition="no" deletion="no" modification="no">
308
The deprecated classes continue to be available in the module
309
<code>org.openide.deprecated</code> which you may depend on it you
310
cannot remove uses of the deprecated APIs. In order for
311
<code>TopManager.getDefault()</code> to work, you must also require the
312
token <code>org.openide.TopManager</code>, which is provided by an
313
unspecified module. The deprecated API module and its implementation
314
module are autoloads, meaning they will not be loaded unless some
315
module still requires them.
318
Similarly, the Java Hierarchy API was moved to the module
319
<code>org.openide.src</code> which you should depend on in order to use
323
For compatibility, the above three dependencies are added to your module
324
<em>automatically</em> in case it either requests no specific API
325
version at all, or requests an API version prior to 3.14. Modules
326
requesting APIs 3.14 or higher must declare these dependencies
327
explicitly if they in fact need them.
332
Many classes were moved to a separate module,
333
<samp>openide-deprecated.jar</samp>, not available to modules by
334
default. Uses of these classes in modules should be cleaned up whenever
338
Additionally, the entire contents of <code>org.openide.src.*</code> and
339
<code>org.openide.src.nodes.*</code>, as well as
340
<code>org.openide.cookies.SourceCookie</code> and some associated
341
property editors, were moved to a separate module.
344
The most common apparent symptom for module authors will be the absence
345
of <code>TopManager</code>. Most methods in this class have been
346
replaced by newer utility classes in a straightforward manner. See the
350
<class link="no" package="org.openide" name="DialogDisplayer"/>
351
<class link="no" package="org.openide" name="LifecycleManager"/>
352
<class link="no" package="org.openide" name="Places"/>
353
<class link="no" package="org.openide" name="TopManager"/>
354
<class link="no" package="org.openide.actions" name="AddWatchAction"/>
355
<class link="no" package="org.openide.actions" name="BuildProjectAction"/>
356
<class link="no" package="org.openide.actions" name="CompileProjectAction"/>
357
<class link="no" package="org.openide.actions" name="DebugProjectAction"/>
358
<class link="no" package="org.openide.actions" name="ExecuteProjectAction"/>
359
<class link="no" package="org.openide.actions" name="FinishDebuggerAction"/>
360
<class link="no" package="org.openide.actions" name="GoAction"/>
361
<class link="no" package="org.openide.actions" name="GoToCursorAction"/>
362
<class link="no" package="org.openide.actions" name="HelpAction"/>
363
<class link="no" package="org.openide.actions" name="OpenProjectAction"/>
364
<class link="no" package="org.openide.actions" name="SaveProjectAction"/>
365
<class link="no" package="org.openide.actions" name="StartDebuggerAction"/>
366
<class link="no" package="org.openide.actions" name="StepOutAction"/>
367
<class link="no" package="org.openide.actions" name="ToggleBreakpointAction"/>
368
<class link="no" package="org.openide.actions" name="TraceIntoAction"/>
369
<class link="no" package="org.openide.actions" name="TraceOverAction"/>
370
<class link="no" package="org.openide.awt" name="HtmlBrowser"/>
371
<class link="no" package="org.openide.awt" name="StatusDisplayer"/>
372
<class link="no" package="org.openide.cookies" name="DebuggerCookie"/>
373
<class link="no" package="org.openide.cookies" name="ElementCookie"/>
374
<class link="no" package="org.openide.cookies" name="ProjectCookie"/>
375
<class link="no" package="org.openide.cookies" name="SourceCookie"/>
376
<class link="no" package="org.openide.explorer.propertysheet.editors" name="ChoicePropertyEditor"/>
377
<class link="no" package="org.openide.explorer.propertysheet.editors" name="DirectoryOnlyEditor"/>
378
<class link="no" package="org.openide.explorer.propertysheet.editors" name="ElementFormatEditor"/>
379
<class link="no" package="org.openide.explorer.propertysheet.editors" name="ExternalCompiler"/>
380
<class link="no" package="org.openide.explorer.propertysheet.editors" name="FileEditor"/>
381
<class link="no" package="org.openide.explorer.propertysheet.editors" name="FileOnlyEditor"/>
382
<class link="no" package="org.openide.explorer.propertysheet.editors" name="IconEditor"/>
383
<class link="no" package="org.openide.explorer.propertysheet.editors" name="IdentifierArrayEditor"/>
384
<class link="no" package="org.openide.explorer.propertysheet.editors" name="MethodParameterArrayEditor"/>
385
<class link="no" package="org.openide.explorer.propertysheet.editors" name="ModifierEditor"/>
386
<class link="no" package="org.openide.explorer.propertysheet.editors" name="StringArrayCustomEditor"/>
387
<class link="no" package="org.openide.explorer.propertysheet.editors" name="StringArrayCustomizable"/>
388
<class link="no" package="org.openide.explorer.propertysheet.editors" name="StringArrayEditor"/>
389
<class link="no" package="org.openide.explorer.propertysheet.editors" name="TypeEditor"/>
390
<class link="no" package="org.openide.loaders" name="DataObjectFilter"/>
391
<class link="no" package="org.openide.loaders" name="ExecSupport"/>
392
<class link="no" package="org.openide.loaders" name="ExecutionSupport"/>
393
<class link="no" package="org.openide.loaders" name="ExtensionListEditor"/>
394
<class link="no" package="org.openide.loaders" name="RepositoryNodeFactory"/>
395
<class link="no" package="org.openide.modules" name="IllegalModuleException"/>
396
<class link="no" package="org.openide.modules" name="ManifestSection"/>
397
<class link="no" package="org.openide.modules" name="ModuleDescription"/>
398
<class link="no" package="org.openide.nodes" name="NodeOperation"/>
399
<class link="no" package="org.openide.options" name="ControlPanel"/>
400
<class link="no" package="org.openide.util.actions" name="ProjectSensitiveAction"/>
401
<class link="no" package="org.openide.windows" name="IOProvider"/>
402
<package link="no" name="org.openide.debugger"/>
403
<package link="no" name="org.openide.src"/>
404
<package link="no" name="org.openide.src.nodes"/>
405
<issue number="19443"/>
406
<issue number="20898"/>
408
<change id="issue-19443-2">
409
<summary>API separation, phase II</summary>
410
<version major="3" minor="17"/>
411
<date day="1" month="11" year="2002"/>
412
<author login="jglick"/>
413
<compatibility binary="compatible" source="incompatible" modification="yes" semantic="compatible" deprecation="no" addition="no" deletion="no">
415
Module authors using the now-separated APIs will need to adjust their
416
compilation classpaths to include the new JAR files. Modules wishing to
417
use recent APIs and declaring a current openide specification version
418
dependency will need to explicitly declare dependencies on these new
419
APIs if there are any.
422
For compatibility, modules with no declared Open APIs dependency, or
423
declared on a version prior to 3.17, will have their dependencies
424
automatically refined as if to include the declarations:
426
<pre xml:space="preserve">
427
OpenIDE-Module-Module-Dependencies: org.openide.compiler > 1.0,
428
org.openide.execution > 1.0, org.openide.io > 1.0
429
OpenIDE-Module-Requires: org.openide.compiler.CompilationEngine,
430
org.openide.execution.ExecutionEngine, org.openide.windows.IOProvider
433
And any package dependencies from old modules on
434
<code>org.netbeans.lib.terminalemulator</code> will be converted to
440
Three sections of the Open APIs were split into new autoload modules.
445
The module <code>org.openide.compiler</code> (version 1.0) contains
446
the Compiler API and some other classes directly related to it.
451
The module <code>org.openide.execution</code> (version 1.0) contains
452
the Execution API and some other classes directly related to it.
457
The module <code>org.openide.io</code> (version 1.0) contains
458
<code>InputOutput</code> and related classes (formerly part of the
459
Window System API, and still physically in the
460
<code>org.openide.windows</code> package).
465
New modules wishing to use these APIs must declare regular module
466
dependencies on them. Future changes in these APIs will be documented
470
Furthermore, modules wishing to use certain services must
471
<code>OpenIDE-Module-Require</code> them if appropriate:
476
<code>org.openide.compiler.CompilationEngine</code>, in order to
477
call <code>CompilationEngine.getDefault()</code>, or safely use
478
<code>AbstractCompileAction</code> or one of its subclasses, or
479
call <code>CompilerJob.start()</code>, or use
480
<code>BeanInfo</code>s for Compiler API classes, etc.
485
<code>org.openide.execution.ExecutionEngine</code>, in order to
486
call <code>ExecutionEngine.getDefault()</code>, or safely use
487
<code>ExecuteAction</code>, or call
488
<code>Executor.execute(...)</code>, or use <code>BeanInfo</code>s
489
for Execution API classes, etc.
494
<code>org.openide.windows.IOProvider</code>, in order to call
495
<code>IOProvider.getDefault()</code>.
505
Registration of URL stream handler factories using
506
<code>NbfsStreamHandlerFactory.register(...)</code> is deprecated.
507
Simply create an instance of <code>URLStreamHandlerFactory</code>
508
and add it to Lookup instead.
513
The method <code>FileUtil.nbfsURLStreamHandler</code> was added,
514
but is not intended for use by modules.
519
All uses of <code>ExecInfo</code> are deprecated as they abuse the
520
distinction between Filesystems and the user classpath. Use and
521
override only <code>Executor.execute(DataObject)</code>. Similarly,
522
<code>ThreadExecutor</code> is deprecated for the time being
523
because it suffers from similar problems.
528
Direct use of <code>NbfsURLConnection</code> is deprecated in favor
529
of the more general <code>URLMapper</code> from the Filesystems
535
Package dependencies on
536
<code>org.netbeans.lib.terminalemulator</code> must be replaced
537
with module dependencies on a new autoload module
538
<code>org.netbeans.lib.terminalemulator</code> (version 1.0).
543
Several static convenience methods have been added to
544
<code>AbstractCompileAction</code>. Of most interest is
545
<code>prepareJobFor</code>. Module code should no longer assume
546
that <code>DataFolder</code> has a <code>CompilerCookie</code>
547
which recursively compiles the folder and subfolders (according to
548
depth); while it is still true, for reasons of compatibility, new
549
code should use <code>prepareJobFor</code> to create a compiler job
555
<class link="no" package="org.openide.actions" name="AbstractCompileAction"/>
556
<class link="no" package="org.openide.actions" name="BuildAction"/>
557
<class link="no" package="org.openide.actions" name="BuildAllAction"/>
558
<class link="no" package="org.openide.actions" name="CleanAction"/>
559
<class link="no" package="org.openide.actions" name="CleanAllAction"/>
560
<class link="no" package="org.openide.actions" name="CompileAction"/>
561
<class link="no" package="org.openide.actions" name="CompileAllAction"/>
562
<class link="no" package="org.openide.actions" name="ExecuteAction"/>
563
<class link="no" package="org.openide.cookies" name="ArgumentsCookie"/>
564
<class link="no" package="org.openide.cookies" name="CompilerCookie"/>
565
<class link="no" package="org.openide.cookies" name="ExecCookie"/>
566
<class link="no" package="org.openide.filesystems" name="FileUtil"/>
567
<class link="no" package="org.openide.loaders" name="CompilerSupport"/>
568
<class link="no" package="org.openide.loaders" name="ExecutionSupport"/>
569
<class link="no" package="org.openide.windows" name="IOProvider"/>
570
<class link="no" package="org.openide.windows" name="InputOutput"/>
571
<class link="no" package="org.openide.windows" name="OutputEvent"/>
572
<class link="no" package="org.openide.windows" name="OutputListener"/>
573
<class link="no" package="org.openide.windows" name="OutputWriter"/>
574
<package link="no" name="org.openide.compiler"/>
575
<package link="no" name="org.openide.execution"/>
576
<issue number="19443"/>
580
<summary>It is impossible to remove CookieSet.Factory from CookieSet</summary>
581
<version major="2" minor="6"/>
582
<date day="28" month="2" year="2002"/>
583
<author login="dstrupl"/>
584
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
585
<description> The API for CookieSet was not symmetrical. You could add factories but there
586
was no way to remove them.
588
<class package="org.openide.nodes" name="CookieSet"/>
589
<issue number="15373"/>
593
<summary>Method changing original Node added into FilterNode and FilterNode.Children</summary>
594
<version major="1" minor="39"/>
595
<date day="16" month="10" year="2001"/>
596
<author login="phrebejk"/>
597
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
599
<code>Method protected final void changeOriginal( Node original, boolean
600
)</code> and <code>protected final void changeOriginal( Node original</code> added
601
to the class <code>FilterNode</code> and <code>FilterNode.Children</code>.
602
The methods allow to change the Node resp. Children the FilterNode resp.
603
FilterNode.Children delegates to. For more detailed information please see the
604
Javadoc of the methods.
606
<class package="org.openide.nodes" name="FilterNode"/>
607
<issue number="12048"/>
611
<summary>Method for checking PropertyChangeListeners on Node added</summary>
612
<version major="1" minor="36"/>
613
<date day="8" month="10" year="2001"/>
614
<author login="phrebejk"/>
615
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
617
<code>Method protected final boolean hasPropertyChangeListeners()</code> added
618
to the class <code>Node</code>. Method returns true if at least one PropertyChangeListener
619
is attached to the Node. At the same time changes were made to optimize the number
620
of attached listeners so calling this method should have some information value.
622
<class package="org.openide.nodes" name="Node"/>
623
<issue number="15495"/>
627
<summary>Added <code>Index.Support.showIndexedCustomizer</code>
629
<version major="1" minor="37"/>
630
<date day="11" month="10" year="2001"/>
631
<author login="jglick"/>
632
<compatibility deprecation="yes" addition="yes" binary="compatible" source="compatible" semantic="compatible" deletion="no" modification="no">
633
Code using <code>IndexedCustomizer</code> directly (as a dialog) should
634
consider using the new method instead.
637
The static method <code>Index.Support.showIndexedCustomizer(Index)</code>
638
was added to provide a simpler way of displaying a dialog to reorder a
639
set of nodes based on an index cookie. Unlike direct use of the
640
<code>IndexedCustomizer</code> dialog, it interacts smoothly with the
643
<class package="org.openide.nodes" name="Index"/>
644
<class package="org.openide.nodes" name="IndexedCustomizer"/>
645
<issue number="9323"/>
647
<change id="an-cookieset-protected">
650
<code>AbstractNode.cookieSet</code> protected, not public</summary>
651
<date day="19" month="5" year="2001"/>
652
<author login="jglick"/>
653
<compatibility modification="yes" deprecation="yes" source="incompatible" binary="compatible" semantic="compatible" addition="no" deletion="no">
654
Subclasses of the node should have the responsibility of adding
655
or removing cookies. See further notes under
656
<a href="@TOP@/apichanges.html#an-cookieset-protected" shape="rect">
657
<code>MultiDataObject</code>
661
<code>getCookieSet</code> now protected, not public. Logically it should
662
never have been public, since each object is responsible for providing its
663
own set of cookies as it sees fit, and making it possible for anyone to
664
retrieve and modify its cookie set without its explicit permission
665
violates this modularity. Also <code>setCookieSet</code> deprecated.
667
<class package="org.openide.nodes" name="AbstractNode"/>
671
<summary><code>Children.Keys.createNodes</code> can be <code>null</code>
673
<date day="15" month="3" year="2001"/>
674
<author login="jtulach"/>
675
<compatibility modification="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no"/>
677
<code>createNodes(Object key)</code> can now return <code>null</code> if
678
the key should have no nodes to represent it. The purpose is to reduce the
679
number of useless created objects.
681
<class package="org.openide.nodes" name="Children"/>
682
<branch name="release32">
683
<date day="15" month="3" year="2001"/>
688
<summary>Properties and property sets may have help</summary>
689
<date day="30" month="1" year="2001"/>
690
<author login="jglick"/>
691
<compatibility modification="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no"/>
693
<code>Node.PropertySet</code> and <code>Node.Property</code> may now have
694
the <code>FeatureDescriptor</code> property <code>helpID</code> set on
695
them (to a <code>String</code>) help ID) which may be used in the property
698
<class package="org.openide.nodes" name="Node"/>
702
<summary><code>Index.KeyChildren.createIndex</code> protected</summary>
703
<date day="13" month="3" year="2001"/>
704
<compatibility modification="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no"/>
706
Method <code>createIndex</code> made protected.
708
<class package="org.openide.nodes" name="Index"/>
712
<summary>May provide special lock for index implementations</summary>
713
<date day="6" month="3" year="2001"/>
714
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
716
Added method <code>protected Index.KeyChildren.lock()</code> which returns an object that is
717
used as a synchronization lock when working the the list object provided
720
<class package="org.openide.nodes" name="Index"/>
724
<summary>Added <code>Index.KeyChildren</code>
726
<date day="2" month="5" year="2000"/>
727
<compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
729
New class that should simplify displaying and reordering of nodes
730
representing <code>java.util.List</code>. Automatically provide
731
implementation of <code>Index</code> to reorder content of the list.
733
<class package="org.openide.nodes" name="Index"/>
737
<summary>Default node handle stores only direct parent</summary>
738
<date day="9" month="3" year="2000"/>
739
<author login="jglick"/>
740
<compatibility semantic="compatible" modification="yes" binary="compatible" source="compatible" deprecation="no" addition="no" deletion="no">
741
It never actually worked before anyway; no module could have
742
successfully used the previous behavior and be broken by the
746
<code>DefaultHandle</code> rewritten. Now stores just handle of direct
747
parent, so that intervening nodes have the opportunity to supply their own
750
<class package="org.openide.nodes" name="DefaultHandle"/>
754
<summary>Creation of popup menus handle duplicate actions</summary>
755
<date day="9" month="8" year="2000"/>
756
<compatibility modification="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no"/>
758
Changed method <code>findContextMenuImpl</code>. In case of constructing
759
menu from node which for some reason has more than one occurrence of the
760
same <code>SystemAction</code> no menu item was created. Now one menu item
761
will be created for such an action, where the first occurrence is taken
764
<class package="org.openide.nodes" name="NodeOp"/>
768
<summary><code>NodeOp.setDefaultActions</code> removed</summary>
769
<date day="2" month="5" year="2000"/>
770
<compatibility deletion="yes" deprecation="yes" binary="compatible" source="compatible" semantic="compatible" addition="no" modification="no">
771
First removed, later re-added but deprecated in trunk and
772
<code>boston</code>. Only technically incompatible: could always only be
773
called once, otherwise a <code>SecurityException</code> would be thrown.
776
<code>setDefaultActions</code> deprecated.
778
<class package="org.openide.nodes" name="NodeOp"/>
782
<summary><code>BeanChildren</code> changed superclass</summary>
783
<date day="23" month="6" year="2000"/>
784
<compatibility modification="yes" source="incompatible" binary="incompatible" semantic="compatible" deprecation="no" addition="no" deletion="no">
785
Any subclasses which used the following methods will be broken:
800
<code>removeAll</code>
803
There were no known subclasses of <code>BeanChildren</code> (it is rarely
807
Changed superclass from <code>Children.Map</code> to
808
<code>Children.Keys</code>.
810
<class package="org.openide.nodes" name="BeanChildren"/>
815
<title>Change History for the Nodes API</title>
816
<link rel="stylesheet" href="prose.css" type="text/css"/>
819
<p class="overviewlink">
820
<a href="overview-summary.html">Overview</a>
822
<h1>Introduction</h1>
823
<h2>What do the Dates Mean?</h2>
824
<p>The supplied dates indicate when the API change was made, on the CVS
825
trunk. From this you can generally tell whether the change should be
826
present in a given build or not; for trunk builds, simply whether it
827
was made before or after the change; for builds on a stabilization
828
branch, whether the branch was made before or after the given date. In
829
some cases corresponding API changes have been made both in the trunk
830
and in an in-progress stabilization branch, if they were needed for a
831
bug fix; this ought to be marked in this list.</p>
833
<li>The <code>release41</code> branch was made on Apr 03 '05 for use in the NetBeans 4.1 release.
834
Specification versions: 6.0 begins after this point.</li>
835
<li>The <code>release40</code> branch was made on Nov 01 '04 for use in the NetBeans 4.0 release.
836
Specification versions: 5.0 begins after this point.</li>
839
<standard-changelists module-code-name="org.openide.nodes"/>