~ubuntu-branches/ubuntu/quantal/netbeans/quantal

« back to all changes in this revision

Viewing changes to openide/nodes/apichanges.xml

  • Committer: Bazaar Package Importer
  • Author(s): Marek Slama
  • Date: 2008-01-29 14:11:22 UTC
  • Revision ID: james.westby@ubuntu.com-20080129141122-fnzjbo11ntghxfu7
Tags: upstream-6.0.1
ImportĀ upstreamĀ versionĀ 6.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="UTF-8"?>
 
2
<!--
 
3
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
4
 
 
5
Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
 
6
 
 
7
 
 
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]"
 
25
 
 
26
Contributor(s):
 
27
 
 
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.
 
31
 
 
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.
 
42
-->
 
43
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">
 
44
<apichanges>
 
45
<apidefs>
 
46
<apidef name="nodes">Nodes API</apidef>
 
47
</apidefs>
 
48
<changes>
 
49
    <change id="ChildFactory">
 
50
        <api name="nodes"/>
 
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"/>
 
57
        <description>
 
58
            Added the class 
 
59
            <a href="@TOP@/org/openide/nodes/ChildFactory.html">ChildFactory</a>
 
60
            and the method 
 
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
 
68
            passes.
 
69
            <p>
 
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.
 
76
            </p>
 
77
        </description>
 
78
        <issue number="91529"/>
 
79
    </change>
 
80
    <change id="GenericCookieSet">
 
81
        <api name="nodes"/>
 
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"/>
 
87
        <description>
 
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>.
 
102
        </description>
 
103
        <class package="org.openide.nodes" name="CookieSet"/>
 
104
        <issue number="62707"/>
 
105
    </change>
 
106
    <change id="BeanNode.LookupCtor">
 
107
     <api name="nodes"/>
 
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"/>
 
113
     <description>
 
114
        Adding a new constructors to <code>BeanNode</code>, allowing
 
115
        subclasses to pass context Lookup.
 
116
     </description>
 
117
     <class package="org.openide.nodes" name="BeanNode"/>
 
118
     <issue number="67098"/>
 
119
    </change>
 
120
<change id="AbstractNode.setIconBaseWithExtension">
 
121
     <api name="nodes"/>
 
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"/>
 
127
     <description>
 
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.
 
137
     </description>
 
138
     <class package="org.openide.nodes" name="AbstractNode"/>
 
139
     <issue number="53461"/>
 
140
    </change>
 
141
<change>
 
142
     <api name="nodes"/>
 
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"/>
 
148
     <description>
 
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.
 
155
     </description>
 
156
     <class package="org.openide.nodes" name="FilterNode"/>
 
157
     <issue number="31006"/>
 
158
    </change>
 
159
<change>
 
160
     <api name="nodes"/>
 
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"/>
 
166
     <description>
 
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>
 
176
<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>
 
186
     </description>
 
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"/>
 
193
    </change>
 
194
<change>
 
195
     <api name="nodes"/>
 
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"/>
 
201
     <description>
 
202
       Allows users of FilterNode to provide own specific lookup.
 
203
     </description>
 
204
     <class package="org.openide.nodes" name="FilterNode"/>
 
205
     <issue number="32470"/>
 
206
    </change>
 
207
<change>
 
208
        <api name="nodes"/>
 
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.
 
214
        </compatibility>
 
215
        <description>
 
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.
 
219
        </description>
 
220
        <class package="org.openide.nodes" name="NodeOp"/>
 
221
        <issue number="31476"/>
 
222
    </change>
 
223
<change>
 
224
     <api name="nodes"/>
 
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"/>
 
230
     <description>
 
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.
 
237
     </description>
 
238
     <class package="org.openide.nodes" name="Node"/>
 
239
   </change>
 
240
<change>
 
241
     <api name="nodes"/>
 
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"/>
 
247
     <description>
 
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.
 
253
     </description>
 
254
     <class package="org.openide.nodes" name="Node"/>
 
255
     <issue number="26790"/>
 
256
   </change>
 
257
<change>
 
258
         <api name="nodes"/>
 
259
         <summary>New method <code>setChildren()</code> in <code>Node</code>
 
260
</summary>
 
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"/>
 
265
      <description>
 
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.
 
270
         </description>
 
271
      <class package="org.openide.nodes" name="Node"/>
 
272
    </change>
 
273
<change>
 
274
        <api name="nodes"/>
 
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.
 
285
        </description>
 
286
        <class package="org.openide.nodes" name="Children"/>
 
287
    </change>
 
288
<change id="layer-register-nodes">
 
289
        <api name="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
 
297
           is now deprecated.
 
298
        </description>
 
299
        <issue number="19609"/>
 
300
    </change>
 
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">
 
307
        <p>
 
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.
 
316
        </p>
 
317
        <p>
 
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
 
320
          this API.
 
321
        </p>
 
322
        <p>
 
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.
 
328
        </p>
 
329
      </compatibility>
 
330
      <description>
 
331
        <p>
 
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
 
335
          possible.
 
336
        </p>
 
337
        <p>
 
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.
 
342
        </p>
 
343
        <p>
 
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
 
347
          Upgrade Guide.
 
348
        </p>
 
349
      </description>
 
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"/>
 
407
    </change>
 
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">
 
414
        <p>
 
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.
 
420
        </p>
 
421
        <p>
 
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:
 
425
        </p>
 
426
        <pre xml:space="preserve">
 
427
OpenIDE-Module-Module-Dependencies: org.openide.compiler &gt; 1.0,
 
428
  org.openide.execution &gt; 1.0, org.openide.io &gt; 1.0
 
429
OpenIDE-Module-Requires: org.openide.compiler.CompilationEngine,
 
430
  org.openide.execution.ExecutionEngine, org.openide.windows.IOProvider
 
431
        </pre>
 
432
        <p>
 
433
          And any package dependencies from old modules on
 
434
          <code>org.netbeans.lib.terminalemulator</code> will be converted to
 
435
          module dependencies.
 
436
        </p>
 
437
      </compatibility>
 
438
      <description>
 
439
        <p>
 
440
          Three sections of the Open APIs were split into new autoload modules.
 
441
        </p>
 
442
        <ul>
 
443
          <li>
 
444
            <p>
 
445
              The module <code>org.openide.compiler</code> (version 1.0) contains
 
446
              the Compiler API and some other classes directly related to it.
 
447
            </p>
 
448
          </li>
 
449
          <li>
 
450
            <p>
 
451
              The module <code>org.openide.execution</code> (version 1.0) contains
 
452
              the Execution API and some other classes directly related to it.
 
453
            </p>
 
454
          </li>
 
455
          <li>
 
456
            <p>
 
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).
 
461
            </p>
 
462
          </li>
 
463
        </ul>
 
464
        <p>
 
465
          New modules wishing to use these APIs must declare regular module
 
466
          dependencies on them. Future changes in these APIs will be documented
 
467
          separately.
 
468
        </p>
 
469
        <p>
 
470
          Furthermore, modules wishing to use certain services must
 
471
          <code>OpenIDE-Module-Require</code> them if appropriate:
 
472
        </p>
 
473
        <ul>
 
474
          <li>
 
475
            <p>
 
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.
 
481
            </p>
 
482
          </li>
 
483
          <li>
 
484
            <p>
 
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.
 
490
            </p>
 
491
          </li>
 
492
          <li>
 
493
            <p>
 
494
              <code>org.openide.windows.IOProvider</code>, in order to call
 
495
              <code>IOProvider.getDefault()</code>.
 
496
            </p>
 
497
          </li>
 
498
        </ul>
 
499
        <p>
 
500
          Other minor changes:
 
501
        </p>
 
502
        <ul>
 
503
          <li>
 
504
            <p>
 
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.
 
509
            </p>
 
510
          </li>
 
511
          <li>
 
512
            <p>
 
513
              The method <code>FileUtil.nbfsURLStreamHandler</code> was added,
 
514
              but is not intended for use by modules.
 
515
            </p>
 
516
          </li>
 
517
          <li>
 
518
            <p>
 
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.
 
524
            </p>
 
525
          </li>
 
526
          <li>
 
527
            <p>
 
528
              Direct use of <code>NbfsURLConnection</code> is deprecated in favor
 
529
              of the more general <code>URLMapper</code> from the Filesystems
 
530
              API.
 
531
            </p>
 
532
          </li>
 
533
          <li>
 
534
            <p>
 
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).
 
539
            </p>
 
540
          </li>
 
541
          <li>
 
542
            <p>
 
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
 
550
              from a folder.
 
551
            </p>
 
552
          </li>
 
553
        </ul>
 
554
      </description>
 
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"/>
 
577
    </change>
 
578
<change>
 
579
        <api name="nodes"/>
 
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.
 
587
        </description>
 
588
        <class package="org.openide.nodes" name="CookieSet"/>
 
589
        <issue number="15373"/>
 
590
    </change>
 
591
<change>
 
592
      <api name="nodes"/>
 
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"/>
 
598
      <description>
 
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.
 
605
      </description>
 
606
      <class package="org.openide.nodes" name="FilterNode"/>
 
607
      <issue number="12048"/>
 
608
    </change>
 
609
<change>
 
610
      <api name="nodes"/>
 
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"/>
 
616
      <description>
 
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.
 
621
      </description>
 
622
      <class package="org.openide.nodes" name="Node"/>
 
623
          <issue number="15495"/>
 
624
    </change>
 
625
<change>
 
626
      <api name="nodes"/>
 
627
      <summary>Added <code>Index.Support.showIndexedCustomizer</code>
 
628
</summary>
 
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.
 
635
      </compatibility>
 
636
      <description>
 
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
 
641
        IDE's window system.
 
642
      </description>
 
643
      <class package="org.openide.nodes" name="Index"/>
 
644
      <class package="org.openide.nodes" name="IndexedCustomizer"/>
 
645
      <issue number="9323"/>
 
646
    </change>
 
647
<change id="an-cookieset-protected">
 
648
      <api name="nodes"/>
 
649
      <summary>
 
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>
 
658
</a>.
 
659
      </compatibility>
 
660
      <description>
 
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.
 
666
      </description>
 
667
      <class package="org.openide.nodes" name="AbstractNode"/>
 
668
    </change>
 
669
<change>
 
670
      <api name="nodes"/>
 
671
      <summary><code>Children.Keys.createNodes</code> can be <code>null</code>
 
672
</summary>
 
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"/>
 
676
      <description>
 
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.
 
680
      </description>
 
681
      <class package="org.openide.nodes" name="Children"/>
 
682
      <branch name="release32">
 
683
        <date day="15" month="3" year="2001"/>
 
684
      </branch>
 
685
    </change>
 
686
<change>
 
687
      <api name="nodes"/>
 
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"/>
 
692
      <description>
 
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
 
696
        sheet.
 
697
      </description>
 
698
      <class package="org.openide.nodes" name="Node"/>
 
699
    </change>
 
700
<change>
 
701
      <api name="nodes"/>
 
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"/>
 
705
      <description>
 
706
        Method <code>createIndex</code> made protected.
 
707
      </description>
 
708
      <class package="org.openide.nodes" name="Index"/>
 
709
    </change>
 
710
<change>
 
711
      <api name="nodes"/>
 
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"/>
 
715
      <description>
 
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
 
718
        in constructor.
 
719
      </description>
 
720
      <class package="org.openide.nodes" name="Index"/>
 
721
    </change>
 
722
<change>
 
723
      <api name="nodes"/>
 
724
      <summary>Added <code>Index.KeyChildren</code>
 
725
</summary>
 
726
      <date day="2" month="5" year="2000"/>
 
727
      <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/>
 
728
      <description>
 
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.
 
732
      </description>
 
733
      <class package="org.openide.nodes" name="Index"/>
 
734
    </change>
 
735
<change>
 
736
      <api name="nodes"/>
 
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
 
743
        change.
 
744
      </compatibility>
 
745
      <description>
 
746
        <code>DefaultHandle</code> rewritten. Now stores just handle of direct
 
747
        parent, so that intervening nodes have the opportunity to supply their own
 
748
        handles.
 
749
      </description>
 
750
      <class package="org.openide.nodes" name="DefaultHandle"/>
 
751
    </change>
 
752
<change>
 
753
      <api name="nodes"/>
 
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"/>
 
757
      <description>
 
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
 
762
        into account.
 
763
      </description>
 
764
      <class package="org.openide.nodes" name="NodeOp"/>
 
765
    </change>
 
766
<change>
 
767
      <api name="nodes"/>
 
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.
 
774
      </compatibility>
 
775
      <description>
 
776
        <code>setDefaultActions</code> deprecated.
 
777
      </description>
 
778
      <class package="org.openide.nodes" name="NodeOp"/>
 
779
    </change>
 
780
<change>
 
781
      <api name="nodes"/>
 
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:
 
786
        <ul>
 
787
          <li>
 
788
<code>initMap</code>
 
789
</li>
 
790
          <li>
 
791
<code>put</code>
 
792
</li>
 
793
          <li>
 
794
<code>putAll</code>
 
795
</li>
 
796
          <li>
 
797
<code>remove</code>
 
798
</li>
 
799
          <li>
 
800
<code>removeAll</code>
 
801
</li>
 
802
        </ul>
 
803
        There were no known subclasses of <code>BeanChildren</code> (it is rarely
 
804
        used at all).
 
805
      </compatibility>
 
806
      <description>
 
807
        Changed superclass from <code>Children.Map</code> to
 
808
        <code>Children.Keys</code>.
 
809
      </description>
 
810
      <class package="org.openide.nodes" name="BeanChildren"/>
 
811
    </change>
 
812
</changes>
 
813
<htmlcontents>
 
814
<head>
 
815
<title>Change History for the Nodes API</title>
 
816
<link rel="stylesheet" href="prose.css" type="text/css"/>
 
817
</head>
 
818
<body>
 
819
<p class="overviewlink">
 
820
<a href="overview-summary.html">Overview</a>
 
821
</p>
 
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>
 
832
<ul>
 
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>
 
837
</ul>
 
838
<hr/>
 
839
<standard-changelists module-code-name="org.openide.nodes"/>
 
840
<hr/>
 
841
<p>@FOOTER@</p>
 
842
</body>
 
843
</htmlcontents>
 
844
</apichanges>