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

- Explorer API

# 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 30 '00) `SetDefaultValueAction` removed
- (Nov 6 '00) `BeanTreeView.selectionChanged` made protected, not public
- (Sep 5 '00) `MenuView.Acceptor` deprecated and not used
- (May 31 '00) `PropertyDialogManager` removed

# All changes by date

- (Apr 29 '05) Dragging uses Node.drag and ExClipboard.convert
- (Mar 30 '05) Added a new `ColumnMnemonicCharTTV` property to `NodeTableModel`
- (Mar 18 '05) One can specify separator for property editor for `String[]`
- (Mar 11 '05) Nodes in explorer can supress default confirmation dialog during delete operation
- (Aug 25 '04) Fixed `TreeView.drag/dropActive` switcher
- (Jun 14 '04) Added ExplorerUtils.getHelpCtx
- (Jun 1 '04) Deprecation of NodeRenderer.sharedInstance()
- (Dec 9 '03) Removal of org.openide.explorer.propertysheet.InplaceEditor.handleInitialInputEvent
- (Dec 9 '03) Property panel rewrite, addition of set/getProperty methods and new constructors, deprecation of getPropertyEditor
- (Nov 21 '03) Copy, Cut, Paste and Delete Action Factory
- (Apr 4 '03) Additional hints for boolean, Boolean properties
- (Apr 4 '03) Additional hints for int,Integer properties
- (Mar 26 '03) Additional hints for String properties
- (Feb 13 '03) MenuView.MenuItem implements HelpCtx.Provider
- (May 27 '02) PropertyPanel.getState, PropertyEnv.add/removePropertyChanageListener
- (Apr 24 '02) Add set/getSelectionMode in TreeView
- (Mar 6 '02) Add generic help support to property editors
- (Feb 20 '02) Constructor DefaultPropertyModel (bean, propertyDescriptor) added
- (Oct 19 '01) Property editor for `DataObject` accepts hint `rootNode`
- (Sep 25 '01) Property editor for `File` accepts hint `baseDir`
- (Aug 22 '01) New property changesImmediate in `PropertyPanel`
- (Jul 9 '01) `PropertyEnv` can control validation state
- (May 7 '01) Table explorer views added
- (Feb 20 '01) Set explored context while selecting nodes (and throw an exception)
- (Nov 30 '00) `SetDefaultValueAction` removed
- (Nov 6 '00) `BeanTreeView.selectionChanged` made protected, not public
- (Oct 30 '00) Moved validity check into `ExPropertyEditor`
- (Oct 25 '00) `ExPropertyEditor` added and used
- (Sep 13 '00) Set explored context while selecting nodes
- (Sep 5 '00) `MenuView.Acceptor` deprecated and not used
- (May 31 '00) `PropertyDialogManager` removed
- (Mar 9 '00) Deserialization of explorer managers and panels may throw `SafeException`
- The whole `org.openide.explorer.propertysheet.editors` package is deprecated

# 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.explorer > 1.20

- (6.3) Dragging uses Node.drag and ExClipboard.convert
- (5.9) Added a new `ColumnMnemonicCharTTV` property to `NodeTableModel`
- (5.7) One can specify separator for property editor for `String[]`
- (5.6) Nodes in explorer can supress default confirmation dialog during delete operation
- (4.45) Fixed `TreeView.drag/dropActive` switcher
- (4.40) Added ExplorerUtils.getHelpCtx
- (4.36) Deprecation of NodeRenderer.sharedInstance()
- (4.17) Removal of org.openide.explorer.propertysheet.InplaceEditor.handleInitialInputEvent
- (4.17) Property panel rewrite, addition of set/getProperty methods and new constructors, deprecation of getPropertyEditor
- (4.14) Copy, Cut, Paste and Delete Action Factory
- (4.3) Additional hints for boolean, Boolean properties
- (4.3) Additional hints for int,Integer properties
- (4.2) Additional hints for String properties
- (3.38) MenuView.MenuItem implements HelpCtx.Provider
- (2.20) PropertyPanel.getState, PropertyEnv.add/removePropertyChanageListener
- (2.15) Add set/getSelectionMode in TreeView
- (2.7) Add generic help support to property editors
- (2.4) Constructor DefaultPropertyModel (bean, propertyDescriptor) added
- (1.41) Property editor for `DataObject` accepts hint `rootNode`
- (1.7) Table explorer views added

# Changes by affected class

## `org.openide.explorer.view.BeanTreeView`

- (Nov 6 '00) `BeanTreeView.selectionChanged` made protected, not public

## `org.openide.explorer.propertysheet.DefaultPropertyModel`

- (Feb 20 '02) Constructor DefaultPropertyModel (bean, propertyDescriptor) added
- (Oct 25 '00) `ExPropertyEditor` added and used

## `org.openide.explorer.ExplorerActions`

- (Nov 21 '03) Copy, Cut, Paste and Delete Action Factory

## `org.openide.explorer.ExplorerManager`

- (Feb 20 '01) Set explored context while selecting nodes (and throw an exception)
- (Sep 13 '00) Set explored context while selecting nodes
- (Mar 9 '00) Deserialization of explorer managers and panels may throw `SafeException`

## `org.openide.explorer.ExplorerPanel`

- (Nov 21 '03) Copy, Cut, Paste and Delete Action Factory
- (Mar 9 '00) Deserialization of explorer managers and panels may throw `SafeException`

## `org.openide.explorer.ExplorerUtils`

- (Jun 14 '04) Added ExplorerUtils.getHelpCtx
- (Nov 21 '03) Copy, Cut, Paste and Delete Action Factory

## `org.openide.explorer.propertysheet.ExPropertyEditor`

- (Mar 6 '02) Add generic help support to property editors
- (Oct 30 '00) Moved validity check into `ExPropertyEditor`
- (Oct 25 '00) `ExPropertyEditor` added and used

## `org.openide.explorer.propertysheet.ExPropertyModel`

- (Oct 25 '00) `ExPropertyEditor` added and used

## `org.openide.explorer.propertysheet.InplaceEditor`

- (Dec 9 '03) Removal of org.openide.explorer.propertysheet.InplaceEditor.handleInitialInputEvent

## `org.openide.explorer.view.ListTableView`

- (May 7 '01) Table explorer views added

## `org.openide.explorer.view.MenuView`

- (Feb 13 '03) MenuView.MenuItem implements HelpCtx.Provider
- (Sep 5 '00) `MenuView.Acceptor` deprecated and not used

## `org.openide.explorer.view.NodeRenderer`

- (Jun 1 '04) Deprecation of NodeRenderer.sharedInstance()

## `org.openide.explorer.view.NodeTableModel`

- (Mar 30 '05) Added a new `ColumnMnemonicCharTTV` property to `NodeTableModel`
- (May 7 '01) Table explorer views added

## `org.openide.explorer.propertysheet.PropertyDialogManager`

- (May 31 '00) `PropertyDialogManager` removed

## `org.openide.explorer.propertysheet.PropertyEnv`

- (May 27 '02) PropertyPanel.getState, PropertyEnv.add/removePropertyChanageListener
- (Jul 9 '01) `PropertyEnv` can control validation state
- (Oct 30 '00) Moved validity check into `ExPropertyEditor`
- (Oct 25 '00) `ExPropertyEditor` added and used

## `org.openide.explorer.propertysheet.PropertyPanel`

- (Mar 18 '05) One can specify separator for property editor for `String[]`
- (Dec 9 '03) Property panel rewrite, addition of set/getProperty methods and new constructors, deprecation of getPropertyEditor
- (May 27 '02) PropertyPanel.getState, PropertyEnv.add/removePropertyChanageListener
- (Aug 22 '01) New property changesImmediate in `PropertyPanel`

## `org.openide.explorer.propertysheet.SetDefaultValueAction`

- (Nov 30 '00) `SetDefaultValueAction` removed

## `org.openide.explorer.view.TreeTableView`

- (May 7 '01) Table explorer views added

## `org.openide.explorer.view.TreeView`

- (Aug 25 '04) Fixed `TreeView.drag/dropActive` switcher
- (Apr 24 '02) Add set/getSelectionMode in TreeView

# Details of all changes by API and date

## Explorer API

### Dragging uses Node.drag and ExClipboard.convert

Apr 29 '05; API spec. version: 6.3; affected packages: `org.openide.explorer.view`; made by: jtulach; issues: #57972
When doing drag and drop of nodes from explorer to another place in explorer the Node.drag method is called when doing copy and in both cases of copy or move the ExClipboard.convert method is called for Transferable containing all the nodes, so one can wrap the whole transfer with pre and post operations.

### Added a new `ColumnMnemonicCharTTV` property to `NodeTableModel`

Mar 30 '05; API spec. version: 5.9; affected top-level classes: `NodeTableModel`; made by: saubrecht; issues: #56781
The new property allows you to specify a mnemonic character for display names of `TreeTableView` columns.

### One can specify separator for property editor for `String[]`

Mar 18 '05; API spec. version: 5.7; affected top-level classes: `PropertyPanel`; made by: jtulach; issues: #56257
One can specify an item separator for properties using string array editor. For example following code:

               Node.Property np = new Node.Property (String[].class, ...);
               np.setValue ("item.separator", "-");

separates items returned from `getAsText` and parsed by `setAsText` by -. List of supported parameters can be found here.

### Nodes in explorer can supress default confirmation dialog during delete operation

Mar 11 '05; API spec. version: 5.6; made by: rkubacki; issues: #56256
Nodes that need to supress default confirmation dialog shown during delete action can do this if they return `Boolean.TRUE` from `Node.getValue(String)` for attribute customDelete.

### Fixed `TreeView.drag/dropActive` switcher

Aug 25 '04; API spec. version: 4.45; affected top-level classes: `TreeView`; made by: jrechtacek; issues: #47672
The methods `TreeView.setDragSource(boolean)` and `TreeView.setDropTarget` can set drag/dropActive on/off. The drag source and drop target are enabled by default. Before the views were forced to be drag/drop active no matter what state was set.

### Added ExplorerUtils.getHelpCtx

Jun 14 '04; API spec. version: 4.40; affected top-level classes: `ExplorerUtils`; made by: pnejedly; issues: #37543
Add the utility method for computing the help id for a set of nodes with a fallback to provided default id.

### Deprecation of NodeRenderer.sharedInstance()

Jun 1 '04; API spec. version: 4.36; affected top-level classes: `NodeRenderer`; made by: tboudreau; issues: #43148
NodeRenderer.sharedInstance() is now deprecated. Components which wish to render nodes should create their own private instance of NodeRenderer, to avoid one view's painting interfering with another's.

### Removal of org.openide.explorer.propertysheet.InplaceEditor.handleInitialInputEvent

Dec 9 '03; API spec. version: 4.17; affected top-level classes: `InplaceEditor`; made by: tboudreau; issues: #37626
This method was introduced post-3.5, and has proven unnecessary, as the event may effectively be dispatched to the component using dispatchEvent(). It will instead be the responsibility of the component to determine if it has just been added to a container and should handle the event in some special way because of that.

### Property panel rewrite, addition of set/getProperty methods and new constructors, deprecation of getPropertyEditor

Dec 9 '03; API spec. version: 4.17; affected top-level classes: `PropertyPanel`; made by: tboudreau; issues: #31896
As part of the rewrite of the internals of PropertyPanel to use the new property sheet's infrastructure, users of PropertyPanel are encouraged to use Node.Property rather than PropertyModel objects to drive their PropertyPanel instances. To that end, methods and constructors have been added in order to support using Node.Property objects. The method getPropertyEditor() has been deprecated, and the property change PROP_PROPERTY_EDITOR will no longer be fired. As documented, in the case of custom editors, its function has not changed, but for inline uses, there is no particular use for holding a reference to the property editor instance, so for inline uses it is no longer guaranteed to return the same property editor instance as previously - this is now the sole responsibility of the Property object. As this method was primarily used by the old property sheet, this is a low-impact change.

### Copy, Cut, Paste and Delete Action Factory

Nov 21 '03; API spec. version: 4.14; affected top-level classes: `org.openide.explorer.ExplorerActions` `org.openide.explorer.ExplorerPanel` `ExplorerUtils`; made by: jtulach; issues: #34758
As part of the work on separation of openide.jar into smaller parts the existing `ExplorerActions` class and `ExplorerPanel` are being deprecated and replaced by new factory methods in `ExplorerUtils` class. Use them to create actions handling copy, cut, paste and delete on given ExplorerManager.

### Additional hints for boolean, Boolean properties

Apr 4 '03; API spec. version: 4.3; made by: tboudreau; issues: #32619
Properties of type boolean or Boolean can now supply the following hint to the property editor: stringValues - a String[2] which will be used to replace the standard "true" or "false" displayed in the editor.

### Additional hints for int,Integer properties

Apr 4 '03; API spec. version: 4.3; made by: tboudreau; issues: #20736 #5278 #31879
Properties representing instances of int or Integer can now supply the following hints to their property editors: stringKeys, intValues, codeValues. The String[] keys will be displayed in a drop down in the propertysheet; the int[] values are used when a key of the corresponding index is selected; the optional codeValues String[] can be used to supply custom text to getJavaInitializationString() for code generation. This replaces the functionality of the now deprecated ChoicePropertyEditor.

### Additional hints for String properties

Mar 26 '03; API spec. version: 4.2; made by: tboudreau; issues: #29294
Properties representing String instances can now supply the following additional hints: oneline, suppressCustomEditor and instructions. These affect the behavior of the custom editor if invoked. If these hints are not supplied, behavior will be the same as it always was.

### MenuView.MenuItem implements HelpCtx.Provider

Feb 13 '03; API spec. version: 3.38; affected top-level classes: `MenuView`; made by: pnejedly
The HelpCtx of the underlying node is now exported through HelpCtx.Provider interface. For the API users, HelpCtx.findHelp keeps working the same way.

### PropertyPanel.getState, PropertyEnv.add/removePropertyChanageListener

May 27 '02; API spec. version: 2.20; affected top-level classes: `PropertyPanel` `PropertyEnv`; issues: #23369
Define interface that would allow to tell customizer that it should check user changed values and that it should commit values. PropertyPanel controls/obtains the value of the PropertyEnv.getState of the current property editor. Thus adding method PropertyPanel.getState () and firing property changes appropriatelly. Added public methods `PropertyPanel.getState()`, `PropertyEnv.addPropertyChangeListener(PropertyChangeListener)` and `PropertyEnv.removePropertyChangeListener(PropertyChangeListener)`. Added public static field `PropertyPanel.PROP_STATE`.

### Add set/getSelectionMode in TreeView

Apr 24 '02; API spec. version: 2.15; affected top-level classes: `TreeView`
Added public methods `TreeView.setSelectionMode(int)` and `TreeView.getSelectioMode()`.

### Add generic help support to property editors

Mar 6 '02; API spec. version: 2.7; affected top-level classes: `ExPropertyEditor`; made by: akemr; issues: #19294
New property PROPERTY_HELP_ID added to improve generic help support to property editors.

### Constructor DefaultPropertyModel (bean, propertyDescriptor) added

Feb 20 '02; API spec. version: 2.4; affected top-level classes: `DefaultPropertyModel`; made by: jtulach; issues: #20601

New constructor to make DefaultPropertyModel more easily usable with PropertyDescriptor created by hand and not obtained from BeanInfo.

### Property editor for `DataObject` accepts hint `rootNode`

Oct 19 '01; API spec. version: 1.41
The property editor for `org.openide.loaders.DataObject` may now be given the property hint `rootNode` specifying a root node of displyed nodes hierarchy. If omited filesystems repository root node is used instead.

### Property editor for `File` accepts hint `baseDir`

Sep 25 '01
The property editor for `java.io.File` may now be given the property hint `baseDir` specifying a directory from which relative filenames edited by the editor may be resolved.

### New property changesImmediate in `PropertyPanel`

Aug 22 '01; affected top-level classes: `PropertyPanel`
The added property allows to control whether the changes fired from property editor are immediately propagated to the value of the property (more precisely to the property model).
Compatibility: Added two public methods to class PropertyPanel: `public boolean isChangeImmediate();` and `public void setChangeImmediate(boolean b);`

### `PropertyEnv` can control validation state

Jul 9 '01; affected top-level classes: `PropertyEnv`
New constants and methods added to the class `PropertyEnv`:

    public static final String PROP_STATE;
    public static final Object STATE_VALID;
    public static final Object STATE_NEEDS_VALIDATION;
    public static final Object STATE_INVALID;
    public void setState (Object state);
    public Object getState ();
    public void addVetoableChangeListener(VetoableChangeListener l);
    public void removeVetoableChangeListener(VetoableChangeListener l);

The added methods allow to modify the state of the "environment" from a property editor. They also allow listening on such changes and veto the change if needed. The API documentation for the class `PropertyEnv` should provide information on what they do.

### Table explorer views added

May 7 '01; API spec. version: 1.7; affected top-level classes: `NodeTableModel` `TreeTableView` `ListTableView`
New explorer views permit viewing of a list of tree of nodes with properties displayed in tabular form.

### Set explored context while selecting nodes (and throw an exception)

Feb 20 '01; affected top-level classes: `ExplorerManager`
New method `public final void setExploredContextAndSelection(Node value, Node[] selection) throws PropertyVetoException` added to the class `ExplorerManager`. It is replacement for the `setExploredContext` method which should throw the exception.

### `SetDefaultValueAction` removed

Nov 30 '00; affected top-level classes: `org.openide.explorer.propertysheet.SetDefaultValueAction`; made by: jglick
Made inaccessible. No reason for it to have been public.
Binary-compatible

### `BeanTreeView.selectionChanged` made protected, not public

Nov 6 '00; affected top-level classes: `BeanTreeView`
Method `selectionChanged` made protected, not public, to match the access mode of the method it was implementing in `TreeView`. Code calling it as public is erroneous.
Binary-compatible

### Moved validity check into `ExPropertyEditor`

Oct 30 '00; affected top-level classes: `PropertyEnv` `ExPropertyEditor`
Minor change to the new class `PropertyEnv`: removed methods `set`/`isValid` from `PropertyEnv` and introduced new constant `PROP_VALUE_VALID` in the `ExPropertyEditor`.
Compatibility: Deletion from newly added `PropertyEnv` only.

### `ExPropertyEditor` added and used

Oct 25 '00; affected top-level classes: `ExPropertyEditor` `DefaultPropertyModel` `PropertyEnv` `ExPropertyModel`
New interface `ExPropertyEditor` added to the package `org.openide.explorer.propertysheet`. It extends `PropertyEditor` allowing to pass information to the property editor by passing an instance of `PropertyEnv` class - this class was also added. To be able to pass the required information the `PropertyModel` interface was also extended to `ExPropertyModel`. `DefaultPropertyModel` was modified to implement the new interface `ExPropertyModel` (instead of `PropertyModel`).

### Set explored context while selecting nodes

Sep 13 '00; affected top-level classes: `ExplorerManager`
New method `setExploredContext` added with a second parameter giving nodes which are to be selected.

### `MenuView.Acceptor` deprecated and not used

Sep 5 '00; affected top-level classes: `MenuView`
Interface `MenuView.Acceptor` is now deprecated. It is recommended to use `nodes.NodeAcceptor` over `MenuView.Acceptor`, which will be probably removed entirely in future. The protected field `action` in both `MenuView.Menu` and `MenuView.MenuItem` has changed type to be `NodeAcceptor`.
Compatibility: Subclasses accessing the `action` field will be broken.

### `PropertyDialogManager` removed

May 31 '00; affected top-level classes: `org.openide.explorer.propertysheet.PropertyDialogManager`
Made inaccessible. No one should have been using this class outside its package to begin with, it was public by accident.
Compatibility: First broken, later restored binary compatibility in trunk and `boston`. Code referring to this class can generally be easily rewritten to simply embed the supplied component in a dialog and show that dialog.
Binary-compatible

### Deserialization of explorer managers and panels may throw `SafeException`

Mar 9 '00; affected top-level classes: `org.openide.explorer.ExplorerPanel` `ExplorerManager`; made by: jglick
`readExternal` of `ExplorerPanel` or deserialization of `ExplorerManager` may throw `SafeException` to indicate a failure in the loading of the manager's handles, but the stream is OK.

### The whole `org.openide.explorer.propertysheet.editors` package is deprecated

(date unknown); affected packages: `org.openide.explorer.propertysheet.editors`

The entire `org.openide.explorer.propertysheet.editors` package is generally deprecated and no longer included in Javadoc.

As of 3.14, this package is again included in the Javadoc, though only only a few interfaces remain, and of these several are in fact deprecated, and the rest will probably be deprecated at some point.

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