Overview

# Introduction

## What do the Dates Mean?

The supplied dates indicate when the API change was made, on the CVS trunk. From this you can generally tell whether the change should be present in a given build or not; for trunk builds, simply whether it was made before or after the change; for builds on a stabilization branch, whether the branch was made before or after the given date. In some cases corresponding API changes have been made both in the trunk and in an in-progress stabilization branch, if they were needed for a bug fix; this ought to be marked in this list.

- The `release41` branch was made on Apr 03 '05 for use in the NetBeans 4.1 release. Specification versions: 6.0 begins after this point.
- The `release40` branch was made on Nov 01 '04 for use in the NetBeans 4.0 release. Specification versions: 5.0 begins after this point.

# Index of APIs

- Window System API
- Uncategorized changes

# Incompatible changes by date

Fuller descriptions of all changes can be found below (follow links).

Not all deprecations are listed here, assuming that the deprecated APIs continue to essentially work. For a full deprecation list, please consult the Javadoc.

- (Nov 12 '03) New Window System implementation
- (Apr 2 '03) Removal of TopComponent(DataObject) constructor
- (Nov 1 '02) API separation, phase II
- (Oct 15 '02) API separation, phase I

# All changes by date

- (Oct 31 '05) Added the `TopComponent.getHtmlDisplayName`, `TopComponent.setHtmlDisplayName` and `WindowManager.topComponentHtmlDisplayNameChanged` methods.
- (Mar 21 '05) Added the `TopComponent` ability to bring their parent `Window` to front of other windows.
- (Nov 17 '04) TopComponent can request attention
- (Jan 20 '04) Allow association of Lookup with TopComponent later than in constructor.
- (Jan 7 '04) Method TopComponent.getPersistenceType() is added to replace usage of client property PersistenceType.
- (Dec 27 '03) New constructor for better delegation
- (Nov 25 '03) Added method findTopComponent(String tcID) to WindowManager
- (Nov 12 '03) New Window System implementation
- (Apr 2 '03) Removal of TopComponent(DataObject) constructor
- (Feb 27 '03) CloneableTopComponent.Ref.getArbitraryComponent method added
- (Feb 20 '03) New property "WizardPanel_errorMessage" for WizardDescriptor has been added
- (Nov 1 '02) API separation, phase II
- (Oct 15 '02) API separation, phase I
- (Jul 1 '02) Add new DTD 1.2 for wsmode configuration file
- (Jun 14 '02) Add new DTD 1.1 for window manager configuration file
- (May 10 '02) TopComponent shown state notification methods added to Winsys API
- (Apr 23 '02) Add List TopComponent.availableModes(List modes) method
- (Mar 21 '02) Add WindowManager.getDefault() method
- (Jan 6 '02) Add new DTD 1.1 for workspace configuration file
- (Jul 27 '01) Make a top component visible without focus change
- (Apr 11 '01) OK button in notify dialog can be turned off
- (Mar 7 '01) Open and close notification for top components
- (Jan 15 '01) Wizard panels can refuse to go forward
- (Jan 9 '01) Both Swing client properties and descriptor properties checked for wizard steps/image/help
- (Jun 16 '00) Several members of `InputOutput` removed

# Changes by version

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 `1.20`, your manifest should contain in its main attributes the line:

    OpenIDE-Module-Module-Dependencies: org.openide.windows > 1.20

- (6.4) Added the `TopComponent.getHtmlDisplayName`, `TopComponent.setHtmlDisplayName` and `WindowManager.topComponentHtmlDisplayNameChanged` methods.
- (5.8) Added the `TopComponent` ability to bring their parent `Window` to front of other windows.
- (5.1) TopComponent can request attention
- (4.23) Allow association of Lookup with TopComponent later than in constructor.
- (4.20) Method TopComponent.getPersistenceType() is added to replace usage of client property PersistenceType.
- (4.19) New constructor for better delegation
- (4.15) Added method findTopComponent(String tcID) to WindowManager
- (4.13) New Window System implementation
- (4.3) Removal of TopComponent(DataObject) constructor
- (3.41) CloneableTopComponent.Ref.getArbitraryComponent method added
- (3.39) New property "WizardPanel_errorMessage" for WizardDescriptor has been added
- (3.17) API separation, phase II
- (3.14) API separation, phase I
- (2.18) TopComponent shown state notification methods added to Winsys API
- (2.14) Add List TopComponent.availableModes(List modes) method
- (2.10) Add WindowManager.getDefault() method

# Changes by affected class

## `org.openide.actions.AbstractCompileAction`

- (Nov 1 '02) API separation, phase II

## `org.openide.actions.AddWatchAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.cookies.ArgumentsCookie`

- (Nov 1 '02) API separation, phase II

## `org.openide.actions.BuildAction`

- (Nov 1 '02) API separation, phase II

## `org.openide.actions.BuildAllAction`

- (Nov 1 '02) API separation, phase II

## `org.openide.actions.BuildProjectAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.ChoicePropertyEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.CleanAction`

- (Nov 1 '02) API separation, phase II

## `org.openide.actions.CleanAllAction`

- (Nov 1 '02) API separation, phase II

## `org.openide.windows.CloneableTopComponent`

- (Nov 12 '03) New Window System implementation
- (Apr 2 '03) Removal of TopComponent(DataObject) constructor
- (Feb 27 '03) CloneableTopComponent.Ref.getArbitraryComponent method added

## `org.openide.actions.CompileAction`

- (Nov 1 '02) API separation, phase II

## `org.openide.actions.CompileAllAction`

- (Nov 1 '02) API separation, phase II

## `org.openide.actions.CompileProjectAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.cookies.CompilerCookie`

- (Nov 1 '02) API separation, phase II

## `org.openide.loaders.CompilerSupport`

- (Nov 1 '02) API separation, phase II

## `org.openide.options.ControlPanel`

- (Oct 15 '02) API separation, phase I

## `org.openide.loaders.DataObjectFilter`

- (Oct 15 '02) API separation, phase I

## `org.openide.cookies.DebuggerCookie`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.DebugProjectAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.DialogDisplayer`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.DirectoryOnlyEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.cookies.ElementCookie`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.ElementFormatEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.cookies.ExecCookie`

- (Nov 1 '02) API separation, phase II

## `org.openide.loaders.ExecSupport`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.ExecuteAction`

- (Nov 1 '02) API separation, phase II

## `org.openide.actions.ExecuteProjectAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.loaders.ExecutionSupport`

- (Nov 1 '02) API separation, phase II
- (Oct 15 '02) API separation, phase I

## `org.openide.loaders.ExtensionListEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.ExternalCompiler`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.FileEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.FileOnlyEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.filesystems.FileUtil`

- (Nov 1 '02) API separation, phase II

## `org.openide.actions.FinishDebuggerAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.GoAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.GoToCursorAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.HelpAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.awt.HtmlBrowser`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.IconEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.IdentifierArrayEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.modules.IllegalModuleException`

- (Oct 15 '02) API separation, phase I

## `org.openide.windows.InputOutput`

- (Nov 1 '02) API separation, phase II
- (Jun 16 '00) Several members of `InputOutput` removed

## `org.openide.windows.IOProvider`

- (Nov 1 '02) API separation, phase II
- (Oct 15 '02) API separation, phase I

## `org.openide.LifecycleManager`

- (Oct 15 '02) API separation, phase I

## `org.openide.modules.ManifestSection`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.MethodParameterArrayEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.ModifierEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.modules.ModuleDescription`

- (Oct 15 '02) API separation, phase I

## `org.openide.nodes.NodeOperation`

- (Oct 15 '02) API separation, phase I

## `org.openide.NotifyDescriptor`

- (Apr 11 '01) OK button in notify dialog can be turned off

## `org.openide.actions.OpenProjectAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.windows.OutputEvent`

- (Nov 1 '02) API separation, phase II

## `org.openide.windows.OutputListener`

- (Nov 1 '02) API separation, phase II

## `org.openide.windows.OutputWriter`

- (Nov 1 '02) API separation, phase II

## `org.openide.Places`

- (Oct 15 '02) API separation, phase I

## `org.openide.cookies.ProjectCookie`

- (Oct 15 '02) API separation, phase I

## `org.openide.util.actions.ProjectSensitiveAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.loaders.RepositoryNodeFactory`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.SaveProjectAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.cookies.SourceCookie`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.StartDebuggerAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.awt.StatusDisplayer`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.StepOutAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.StringArrayCustomEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.StringArrayCustomizable`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.StringArrayEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.ToggleBreakpointAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.windows.TopComponent`

- (Oct 31 '05) Added the `TopComponent.getHtmlDisplayName`, `TopComponent.setHtmlDisplayName` and `WindowManager.topComponentHtmlDisplayNameChanged` methods.
- (Mar 21 '05) Added the `TopComponent` ability to bring their parent `Window` to front of other windows.
- (Nov 17 '04) TopComponent can request attention
- (Jan 20 '04) Allow association of Lookup with TopComponent later than in constructor.
- (Jan 7 '04) Method TopComponent.getPersistenceType() is added to replace usage of client property PersistenceType.
- (Dec 27 '03) New constructor for better delegation
- (Nov 12 '03) New Window System implementation
- (Apr 2 '03) Removal of TopComponent(DataObject) constructor
- (May 10 '02) TopComponent shown state notification methods added to Winsys API
- (Apr 23 '02) Add List TopComponent.availableModes(List modes) method
- (Jul 27 '01) Make a top component visible without focus change
- (Mar 7 '01) Open and close notification for top components

## `org.openide.windows.TopComponentGroup`

- (Nov 12 '03) New Window System implementation

## `org.openide.TopManager`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.TraceIntoAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.actions.TraceOverAction`

- (Oct 15 '02) API separation, phase I

## `org.openide.explorer.propertysheet.editors.TypeEditor`

- (Oct 15 '02) API separation, phase I

## `org.openide.windows.WindowManager`

- (Oct 31 '05) Added the `TopComponent.getHtmlDisplayName`, `TopComponent.setHtmlDisplayName` and `WindowManager.topComponentHtmlDisplayNameChanged` methods.
- (Mar 21 '05) Added the `TopComponent` ability to bring their parent `Window` to front of other windows.
- (Nov 17 '04) TopComponent can request attention
- (Nov 25 '03) Added method findTopComponent(String tcID) to WindowManager
- (Nov 12 '03) New Window System implementation
- (May 10 '02) TopComponent shown state notification methods added to Winsys API
- (Mar 21 '02) Add WindowManager.getDefault() method
- (Jul 27 '01) Make a top component visible without focus change
- (Mar 7 '01) Open and close notification for top components

## `org.openide.WizardDescriptor`

- (Feb 20 '03) New property "WizardPanel_errorMessage" for WizardDescriptor has been added
- (Jan 15 '01) Wizard panels can refuse to go forward
- (Jan 9 '01) Both Swing client properties and descriptor properties checked for wizard steps/image/help

## `org.openide.windows.Workspace`

- (Nov 12 '03) New Window System implementation

# Details of all changes by API and date

## Window System API

### Added the `TopComponent.getHtmlDisplayName`, `TopComponent.setHtmlDisplayName` and `WindowManager.topComponentHtmlDisplayNameChanged` methods.

Oct 31 '05; API spec. version: 6.4; affected top-level classes: `TopComponent` `WindowManager`; made by: dsimonek; issues: #66777
The `TopComponent.getHtmlDisplayName` and `TopComponent.setHtmlDisplayName` methods was added to allow `TopComponent`s to have display name that contains html tags differentiated from regular display name. Regular display name should be used for tasks like alphabetical sorting while html display name is used for labels and titles that support html, like editor tabs. `WindowManager.topComponentHtmlDisplayNameChanged` was also added to let window system implementation know about html display name change.

### Added the `TopComponent` ability to bring their parent `Window` to front of other windows.

Mar 21 '05; API spec. version: 5.8; affected top-level classes: `TopComponent` `WindowManager`; issues: #56277
The `TopComponent` class has a new method `toFront()` that attempts to bring the parent `Window` of the TopComponent to front of other top-level windows. The method is implemented in the `WindowManager` class using AWT's `java.awt.Window#toFront()`.

### TopComponent can request attention

Nov 17 '04; API spec. version: 5.1; affected top-level classes: `WindowManager` `TopComponent`; made by: mkleint; issues: #48811

`TopComponent.requestAttention(boolean)` and `TopComponent.cancelRequestAttention` added to allow components to signal that they require user's attention or the attention is no longer required. It's up to the current TopComponent container to decide how to attract user's attention. If the user activates the attention-requiring component, the container assumes the goal was achieved and the action is cancelled. The methods are thread-safe.

For those implementing WindowManager class, there is an incompatible change where abstract methods `topComponentCancelRequestAttention(TopComponent)` and `topComponentRequestAttention(TopComponent)` were added.

### Allow association of Lookup with TopComponent later than in constructor.

Jan 20 '04; API spec. version: 4.23; affected top-level classes: `TopComponent`; made by: jtulach; issues: #38475
Adding `TopComponent.associateLookup` to allow late (in middle of constructor) association of Lookup with component. This is especially useful in `org.openide.explorer.ExplorerUtils`.

### Method TopComponent.getPersistenceType() is added to replace usage of client property PersistenceType.

Jan 7 '04; API spec. version: 4.20; affected top-level classes: `TopComponent`; made by: mslama; issues: #36916
Method to get TopComponent persistence type is added to API.

### New constructor for better delegation

Dec 27 '03; API spec. version: 4.19; affected top-level classes: `TopComponent`; made by: jtulach; issues: #38185
Easier way for `TopComponent`s to provide their own Lookup and still maintain their contract with `getActivatedNodes`.

### Added method findTopComponent(String tcID) to WindowManager

Nov 25 '03; API spec. version: 4.15; affected top-level classes: `WindowManager`; made by: mslama; issues: #37199
This method is necessary to be able to retrieve TopComponent instance using unique TopComponent ID. Important mainly to access persistent singleton TopComponent instances.

### New Window System implementation

Nov 12 '03; API spec. version: 4.13; affected top-level classes: `CloneableTopComponent` `TopComponent` `TopComponentGroup` `WindowManager` `Workspace`; made by: pzavadsky; issues: #29836
Provided implementation of new window system. It is a new major version of module core/windows. There also open API affected. There were added some new APIs, some older were deprecated and also some older APIs have adjusted their semantics. Look at the changes document which has the detailed information.

### Removal of TopComponent(DataObject) constructor

Apr 2 '03; API spec. version: 4.3; affected top-level classes: `TopComponent` `CloneableTopComponent`; made by: jtulach; issues: #32143
Due to separation of openide-loaders.jar the `TopComponent (DataObject)` and `CloneableTopComponent (DataObject)` constructors have been removed. Instead of using the old behavior

            new TopComponent (dataObject);

please change the code to use `TopComponent.NodeName`:

            tc = new TopComponent ();
            NodeName.connect (tc, dataObject.getNodeDelegate ());

### CloneableTopComponent.Ref.getArbitraryComponent method added

Feb 27 '03; API spec. version: 3.41; affected top-level classes: `CloneableTopComponent`; made by: pzavadsky; issues: #25824
The method `getAnyComponent` in `CloneableTopComponent.Ref` class uses `NoSuchElementException` as a mean indicating there is no component. Moreover the exception is runtime one (unchecked). It forces clients to use try-catch blocks, which doesn't follow rule, which says there shouldn't be used exception for controlling program flow. It is replaced by method `getArbitraryComponent` which returns `null` instead of throwing an exception.

### New property "WizardPanel_errorMessage" for WizardDescriptor has been added

Feb 20 '03; API spec. version: 3.39; affected top-level classes: `org.openide.WizardDescriptor`; made by: dkonecny; issues: #28466
New property with name "WizardPanel_errorMessage" was added to WizardDescriptor class. It is String property and can contain description why the wizard panel is invalid. Non-null value of this property is automatically displayed at the bottom of the wizard panel.

### Add new DTD 1.2 for wsmode configuration file

Jul 1 '02; made by: mslama; issues: #25268
Current frame state is now stored. Added attribute for restored frame state, valid only when frame state is maximized. (Restored frame state is state of frame when frame is not maximized, it can be normal or iconified.)

### Add new DTD 1.1 for window manager configuration file

Jun 14 '02; made by: mslama; issues: #24451
Support for positioning main windom in MDI mode during first user start.

### TopComponent shown state notification methods added to Winsys API

May 10 '02; API spec. version: 2.18; affected top-level classes: `TopComponent` `WindowManager`; made by: pzavadsky; issues: #21618
Four new methods has been added to Winsys API, i.e. `TopComponent`: protected void componentShowing(), protected void componentHidded(), protected void componentOpened(), protected void componentClose(). The last two replaces deprecated protected void openNotify() and protected void closeNotify() methods. Two methods were added also to `WindowManager` to handle the notifiction via its subclasses: protected void componentShowing(TopComponent) and protected void componentHidden(TopComponent).

### Add List TopComponent.availableModes(List modes) method

Apr 23 '02; API spec. version: 2.14; affected top-level classes: `TopComponent`; made by: dsimonek; issues: #20153
Method availableModes(...) added to TopComponent to allow TopComponent to specify where can be docked.

### Add WindowManager.getDefault() method

Mar 21 '02; API spec. version: 2.10; affected top-level classes: `WindowManager`; made by: dsimonek; issues: #20942
Method WindowManager.getDefault() added to loose coupling between Topmanager and winsys. Old method TopManager.getWindowManager() was deprecated.

### Add new DTD 1.1 for workspace configuration file

Jan 6 '02; made by: dsimonek; issues: #19072
Added element for maximized desktop in MDI mode.

### Make a top component visible without focus change

Jul 27 '01; affected top-level classes: `TopComponent` `WindowManager`
Added method to make component visible without change of focus or frames z-order. If it is not possible to make component visible without change of focus it works in the same way as requestFocus(). New methods:

- `public void TopComponent.requestVisible()`
- `public void WindowManager.Component.requestVisible()`

### OK button in notify dialog can be turned off

Apr 11 '01; affected top-level classes: `org.openide.NotifyDescriptor`
Added methods `isValid` and `setValid`, added property name String constant `PROP_VALID`. It can be used to change validity (enable/disable) of standard OK button in dialog.

### Open and close notification for top components

Mar 7 '01; affected top-level classes: `TopComponent` `WindowManager`
Added open and close notification for top components. New methods:

- `protected void TopComponent.openNotify()`
- `protected void TopComponent.closeNotify()`
- `protected void WindowManager.componentOpenNotify(TopComponent tc)`
- `protected void WindowManager.componentCloseNotify(TopComponent tc)`

### Wizard panels can refuse to go forward

Jan 15 '01; affected top-level classes: `org.openide.WizardDescriptor`
`WizardDescriptor.Panel.readSettings` can throw `IllegalStateException`. This can be used to indicate that data provided by the previous panels are not OK and that the panel wants the wizard to go back one panel.

### Both Swing client properties and descriptor properties checked for wizard steps/image/help

Jan 9 '01; affected top-level classes: `org.openide.WizardDescriptor`
Added new functionality without API change. Wizard descriptor creates wizard panel with list of steps/image/help on the left depending on the properties supplied by `((JComponent)WizardDescriptor.current().getComponent()).putClientProperty()` or `WizardDescriptor.putProperty()`.

### Several members of `InputOutput` removed

Jun 16 '00; affected top-level classes: `org.openide.windows.InputOutput`
Several members of this interface were technically public before and are now deprecated:

- `InputOutput.Null`
- `InputOutput.NullOutputWriter`
- `InputOutput.nullReader`
- `InputOutput.nullWriter`

In fact they were meant to be package-private and were only public due to a quirk of Java's syntax (default modifier inside interfaces is public).
Compatibility: First broken, later re-added but deprecated in trunk and `boston`. Any code referring to these members is erroneous and must be rewritten. The only useful related member, the `InputOutput.NULL` constant, is still public and accessible.

## Uncategorized changes

### API separation, phase II

Nov 1 '02; API spec. version: 3.17; affected top-level classes: `org.openide.actions.AbstractCompileAction` `org.openide.actions.BuildAction` `org.openide.actions.BuildAllAction` `org.openide.actions.CleanAction` `org.openide.actions.CleanAllAction` `org.openide.actions.CompileAction` `org.openide.actions.CompileAllAction` `org.openide.actions.ExecuteAction` `org.openide.cookies.ArgumentsCookie` `org.openide.cookies.CompilerCookie` `org.openide.cookies.ExecCookie` `org.openide.filesystems.FileUtil` `org.openide.loaders.CompilerSupport` `org.openide.loaders.ExecutionSupport` `org.openide.windows.IOProvider` `org.openide.windows.InputOutput` `org.openide.windows.OutputEvent` `org.openide.windows.OutputListener` `org.openide.windows.OutputWriter`; affected packages: `org.openide.compiler` `org.openide.execution`; made by: jglick; issues: #19443

Three sections of the Open APIs were split into new autoload modules.

- The module `org.openide.compiler` (version 1.0) contains the Compiler API and some other classes directly related to it.

- The module `org.openide.execution` (version 1.0) contains the Execution API and some other classes directly related to it.

- The module `org.openide.io` (version 1.0) contains `InputOutput` and related classes (formerly part of the Window System API, and still physically in the `org.openide.windows` package).

New modules wishing to use these APIs must declare regular module dependencies on them. Future changes in these APIs will be documented separately.

Furthermore, modules wishing to use certain services must `OpenIDE-Module-Require` them if appropriate:

- `org.openide.compiler.CompilationEngine`, in order to call `CompilationEngine.getDefault()`, or safely use `AbstractCompileAction` or one of its subclasses, or call `CompilerJob.start()`, or use `BeanInfo`s for Compiler API classes, etc.

- `org.openide.execution.ExecutionEngine`, in order to call `ExecutionEngine.getDefault()`, or safely use `ExecuteAction`, or call `Executor.execute(...)`, or use `BeanInfo`s for Execution API classes, etc.

- `org.openide.windows.IOProvider`, in order to call `IOProvider.getDefault()`.

Other minor changes:

- Registration of URL stream handler factories using `NbfsStreamHandlerFactory.register(...)` is deprecated. Simply create an instance of `URLStreamHandlerFactory` and add it to Lookup instead.

- The method `FileUtil.nbfsURLStreamHandler` was added, but is not intended for use by modules.

- All uses of `ExecInfo` are deprecated as they abuse the distinction between Filesystems and the user classpath. Use and override only `Executor.execute(DataObject)`. Similarly, `ThreadExecutor` is deprecated for the time being because it suffers from similar problems.

- Direct use of `NbfsURLConnection` is deprecated in favor of the more general `URLMapper` from the Filesystems API.

- Package dependencies on `org.netbeans.lib.terminalemulator` must be replaced with module dependencies on a new autoload module `org.netbeans.lib.terminalemulator` (version 1.0).

- Several static convenience methods have been added to `AbstractCompileAction`. Of most interest is `prepareJobFor`. Module code should no longer assume that `DataFolder` has a `CompilerCookie` which recursively compiles the folder and subfolders (according to depth); while it is still true, for reasons of compatibility, new code should use `prepareJobFor` to create a compiler job from a folder.

Compatibility:

Module authors using the now-separated APIs will need to adjust their compilation classpaths to include the new JAR files. Modules wishing to use recent APIs and declaring a current openide specification version dependency will need to explicitly declare dependencies on these new APIs if there are any.

For compatibility, modules with no declared Open APIs dependency, or declared on a version prior to 3.17, will have their dependencies automatically refined as if to include the declarations:

    OpenIDE-Module-Module-Dependencies: org.openide.compiler > 1.0,
      org.openide.execution > 1.0, org.openide.io > 1.0
    OpenIDE-Module-Requires: org.openide.compiler.CompilationEngine,
      org.openide.execution.ExecutionEngine, org.openide.windows.IOProvider

And any package dependencies from old modules on `org.netbeans.lib.terminalemulator` will be converted to module dependencies.

Binary-compatible

### API separation, phase I

Oct 15 '02; API spec. version: 3.14; affected top-level classes: `org.openide.DialogDisplayer` `org.openide.LifecycleManager` `org.openide.Places` `org.openide.TopManager` `org.openide.actions.AddWatchAction` `org.openide.actions.BuildProjectAction` `org.openide.actions.CompileProjectAction` `org.openide.actions.DebugProjectAction` `org.openide.actions.ExecuteProjectAction` `org.openide.actions.FinishDebuggerAction` `org.openide.actions.GoAction` `org.openide.actions.GoToCursorAction` `org.openide.actions.HelpAction` `org.openide.actions.OpenProjectAction` `org.openide.actions.SaveProjectAction` `org.openide.actions.StartDebuggerAction` `org.openide.actions.StepOutAction` `org.openide.actions.ToggleBreakpointAction` `org.openide.actions.TraceIntoAction` `org.openide.actions.TraceOverAction` `org.openide.awt.HtmlBrowser` `org.openide.awt.StatusDisplayer` `org.openide.cookies.DebuggerCookie` `org.openide.cookies.ElementCookie` `org.openide.cookies.ProjectCookie` `org.openide.cookies.SourceCookie` `org.openide.explorer.propertysheet.editors.ChoicePropertyEditor` `org.openide.explorer.propertysheet.editors.DirectoryOnlyEditor` `org.openide.explorer.propertysheet.editors.ElementFormatEditor` `org.openide.explorer.propertysheet.editors.ExternalCompiler` `org.openide.explorer.propertysheet.editors.FileEditor` `org.openide.explorer.propertysheet.editors.FileOnlyEditor` `org.openide.explorer.propertysheet.editors.IconEditor` `org.openide.explorer.propertysheet.editors.IdentifierArrayEditor` `org.openide.explorer.propertysheet.editors.MethodParameterArrayEditor` `org.openide.explorer.propertysheet.editors.ModifierEditor` `org.openide.explorer.propertysheet.editors.StringArrayCustomEditor` `org.openide.explorer.propertysheet.editors.StringArrayCustomizable` `org.openide.explorer.propertysheet.editors.StringArrayEditor` `org.openide.explorer.propertysheet.editors.TypeEditor` `org.openide.loaders.DataObjectFilter` `org.openide.loaders.ExecSupport` `org.openide.loaders.ExecutionSupport` `org.openide.loaders.ExtensionListEditor` `org.openide.loaders.RepositoryNodeFactory` `org.openide.modules.IllegalModuleException` `org.openide.modules.ManifestSection` `org.openide.modules.ModuleDescription` `org.openide.nodes.NodeOperation` `org.openide.options.ControlPanel` `org.openide.util.actions.ProjectSensitiveAction` `org.openide.windows.IOProvider`; affected packages: `org.openide.debugger` `org.openide.src` `org.openide.src.nodes`; made by: jglick; issues: #19443 #20898

Many classes were moved to a separate module, `openide-deprecated.jar`, not available to modules by default. Uses of these classes in modules should be cleaned up whenever possible.

Additionally, the entire contents of `org.openide.src.*` and `org.openide.src.nodes.*`, as well as `org.openide.cookies.SourceCookie` and some associated property editors, were moved to a separate module.

The most common apparent symptom for module authors will be the absence of `TopManager`. Most methods in this class have been replaced by newer utility classes in a straightforward manner. See the Upgrade Guide.

Compatibility:

The deprecated classes continue to be available in the module `org.openide.deprecated` which you may depend on it you cannot remove uses of the deprecated APIs. In order for `TopManager.getDefault()` to work, you must also require the token `org.openide.TopManager`, which is provided by an unspecified module. The deprecated API module and its implementation module are autoloads, meaning they will not be loaded unless some module still requires them.

Similarly, the Java Hierarchy API was moved to the module `org.openide.src` which you should depend on in order to use this API.

For compatibility, the above three dependencies are added to your module automatically in case it either requests no specific API version at all, or requests an API version prior to 3.14. Modules requesting APIs 3.14 or higher must declare these dependencies explicitly if they in fact need them.

Binary-compatible

Built on December 7 2006. | Portions Copyright 1997-2005 Sun Microsystems, Inc. All rights reserved.