站内搜索: 请输入搜索关键词
当前页面: 在线文档首页 > NetBeans API Javadoc 4.1.0

Change History for the Open APIs - NetBeans API Javadoc 4.1.0

Introduction

This document lists changes made to the Open APIs. Please ask on the dev@openide.netbeans.org mailing list if you have any questions about the details of a change, or are wondering how to convert existing code to be compatible.

Most module authors should start by reading the Upgrade Guide for the current release.

Also of interest: raw API differences between NetBeans 3.4.1 and 3.5 as generated by JDiff. This list only shows visible changes in class and method signatures and Javadoc comments, but does not cover all semantic changes in the APIs during this period, nor does it exclude changes with no semantic effect (such as adding an undocumented method override to a subclass).

In general the NetBeans core API team has several responsibilities:

  1. Avoid incompatible changes to the APIs whenever possible. This refers to both literal incompatibilities to the signatures of accessible API classes (including both source compatibility and binary compatibility, which sometimes differ); and semantic incompatibilities, for example changes in threading behavior of a method call.
  2. Document all API changes, incompatible or compatible, in this document, with proper explanation of the change and timestamp, and document the changes at the same time the actual change is made.
  3. Maintain API documentation so that it is up-to-date with respect to the actual APIs, both in prose documentation and Javadoc. When an API feature is ambiguously described, clarify the documentation to state precisely what it is expected to do; it is acceptable to specify that some aspect of its behavior is undefined, provided this is explicitly documented. If a feature is publicly accessible only for unavoidable technical reasons, document that this is so, and who is permitted to actually make use of it.
  4. Annotate new APIs with their time of addition: in Javadoc using the @since tag, or as appropriate in prose. The annotation should include both the date, and the current OpenIDE specification version, to make it easy for module authors to depend on the new API.
  5. Announce API changes on the mailing list; incompatible changes must be announced in advance to give any users of the old API a chance to veto the change.
  6. Be prepared to publicly explain the meaning and intended use of an API feature, and defend changes to it if requested.
  7. Assist anyone posting to the mailing list in fixing their code to be compatible with a change, if this is necessary and desired.
  8. Provide a workaround to restore compatibility for a previously incompatible API change, if this is requested on the mailing list and deemed feasible.
  9. Minimize the size of the APIs by rejecting compatible changes which substantially increase complexity and are not strictly needed.
  10. Attempt to maintain an API design which permits interesting and useful changes to be compatible.
  11. Attempt to cluster incompatible changes into infrequent batches of changes, specified and discussed well in advance, to be applied when making a new major release of the IDE. This should be done to remove previously deprecated features with a longstanding better alternative, and otherwise to enhance the clarity, consistency, and flexibility of the APIs.
  12. Make changes only on the trunk, not stabilization branches. When an API change is required in a stabilization branch to support an important bug fix, explicitly mention that in this document. (Bug fixes to API-related code not affecting its signature or documented semantics may be made at any time.)
  13. Increase the OpenIDE specification version listed in the core whenever a compatible API change is made, if some module is also being changed to take advantage of a newer API. The module should then list a dependency on the newer specification version in its manifest, to ensure that the newer version of the module is not accidentally run on an API-older core. Confirm that the specification version is also bumped up both before and after a branch is made which affects the APIs, to ensure that API changes can be cleanly ordered relative to branch points.
  14. Document API change in migration guide if the API change is significant and requires attention of module writers. The migration guide can be found at openide/api/doc/org/openide/doc-files/upgrade.html

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.


Index of APIs

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.

All changes by date

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-IDE-Dependencies: IDE/1 > 1.20

Changes by affected class

org.openide.actions.AbstractCompileAction

org.openide.filesystems.AbstractFileSystem

org.openide.util.lookup.AbstractLookup

org.openide.nodes.AbstractNode

org.openide.actions.ActionManager

org.openide.awt.Actions

org.openide.actions.AddWatchAction

org.openide.text.Annotatable

org.openide.text.Annotation

org.openide.text.AnnotationProvider

org.openide.cookies.ArgumentsCookie

org.openide.util.AsyncGUIJob

org.openide.nodes.BeanChildren

org.openide.explorer.view.BeanTreeView

org.openide.actions.BuildAction

org.openide.actions.BuildAllAction

org.openide.actions.BuildProjectAction

org.openide.util.actions.CallableSystemAction

org.openide.util.actions.CallbackSystemAction

org.openide.util.Cancellable

org.openide.util.CharacterArrayCharacterIterator

org.openide.nodes.Children

org.openide.explorer.propertysheet.editors.ChoicePropertyEditor

org.openide.src.ClassElement

org.openide.actions.CleanAction

org.openide.actions.CleanAllAction

org.openide.text.CloneableEditor

org.openide.text.CloneableEditorSupport

org.openide.windows.CloneableOpenSupport

org.openide.windows.CloneableTopComponent

org.openide.compiler.CompilationEngine

org.openide.actions.CompileAction

org.openide.actions.CompileAllAction

org.openide.actions.CompileProjectAction

org.openide.compiler.Compiler

org.openide.cookies.CompilerCookie

org.openide.compiler.CompilerGroup

org.openide.compiler.CompilerJob

org.openide.loaders.CompilerSupport

org.openide.util.ContextAwareAction

org.openide.util.ContextGlobalProvider

org.openide.options.ContextSystemOption

org.openide.options.ControlPanel

org.openide.nodes.CookieSet

org.openide.actions.CopyAction

org.openide.actions.CustomizeBeanAction

org.openide.actions.CutAction

org.openide.text.DataEditorSupport

org.openide.loaders.DataFolder

org.openide.loaders.DataLoader

org.openide.loaders.DataLoaderPool

org.openide.loaders.DataNode

org.openide.loaders.DataObject

org.openide.loaders.DataObjectFilter

org.openide.loaders.DataShadow

org.openide.cookies.DebuggerCookie

org.openide.actions.DebugProjectAction

org.openide.filesystems.DefaultAttributes

org.openide.nodes.DefaultHandle

org.openide.explorer.propertysheet.DefaultPropertyModel

org.openide.actions.DeleteAction

org.openide.modules.Dependency

org.openide.DialogDescriptor

org.openide.DialogDisplayer

org.openide.explorer.propertysheet.editors.DirectoryOnlyEditor

org.openide.text.DocumentLine

org.openide.cookies.EditorCookie

org.openide.text.EditorSupport

org.openide.cookies.ElementCookie

org.openide.explorer.propertysheet.editors.ElementFormatEditor

org.openide.xml.EntityCatalog

org.openide.util.Enumerations

org.openide.loaders.Environment

org.openide.filesystems.EnvironmentNotSupportedException

org.openide.ErrorManager

org.openide.cookies.ExecCookie

org.openide.loaders.ExecSupport

org.openide.actions.ExecuteAction

org.openide.actions.ExecuteProjectAction

org.openide.loaders.ExecutionSupport

org.openide.explorer.ExplorerActions

org.openide.explorer.ExplorerManager

org.openide.explorer.ExplorerPanel

org.openide.explorer.ExplorerUtils

org.openide.explorer.propertysheet.ExPropertyEditor

org.openide.explorer.propertysheet.ExPropertyModel

org.openide.loaders.ExtensionList

org.openide.loaders.ExtensionListEditor

org.openide.explorer.propertysheet.editors.ExternalCompiler

org.openide.compiler.ExternalCompiler

org.openide.compiler.ExternalCompilerGroup

org.openide.filesystems.FileAttributeEvent

org.openide.explorer.propertysheet.editors.FileEditor

org.openide.loaders.FileEntry

org.openide.filesystems.FileEvent

org.openide.filesystems.FileObject

org.openide.explorer.propertysheet.editors.FileOnlyEditor

org.openide.filesystems.FileRenameEvent

org.openide.filesystems.FileStateInvalidException

org.openide.filesystems.FileSystem

org.openide.actions.FileSystemAction

org.openide.filesystems.FileSystemCapability

org.openide.filesystems.FileUtil

org.openide.util.enum.FilterEnumeration

org.openide.nodes.FilterNode

org.openide.actions.FinishDebuggerAction

org.openide.loaders.FolderInstance

org.openide.loaders.FolderLookup

org.openide.actions.GoAction

org.openide.actions.GoToCursorAction

org.openide.actions.HelpAction

org.openide.util.HelpCtx

org.openide.awt.HtmlBrowser

org.openide.awt.HtmlRenderer

org.openide.filesystems.FileSystem.HtmlStatus

org.openide.util.HttpServer

org.openide.explorer.propertysheet.editors.IconEditor

org.openide.explorer.propertysheet.editors.IdentifierArrayEditor

org.openide.modules.IllegalModuleException

org.openide.text.IndentEngine

org.openide.nodes.Index

org.openide.nodes.IndexedCustomizer

org.openide.explorer.propertysheet.InplaceEditor

org.openide.windows.InputOutput

org.openide.modules.InstalledFileLocator

org.openide.util.lookup.InstanceContent

org.openide.cookies.InstanceCookie

org.openide.loaders.InstanceDataObject

org.openide.loaders.InstanceSupport

org.openide.actions.InstantiateAction

org.openide.windows.IOProvider

org.openide.filesystems.JarFileSystem

org.openide.LifecycleManager

org.openide.text.Line

org.openide.explorer.view.ListTableView

org.openide.loaders.LoaderTransfer

org.openide.filesystems.LocalFileSystem

org.openide.util.Lookup

org.openide.util.LookupEvent

org.openide.util.LookupListener

org.openide.util.lookup.Lookups

org.openide.modules.ManifestSection

org.openide.awt.MenuBar

org.openide.explorer.view.MenuView

org.openide.util.lookup.MetaInfServicesLookup

org.openide.explorer.propertysheet.editors.MethodParameterArrayEditor

org.openide.filesystems.MIMEResolver

org.openide.awt.Mnemonics

org.openide.explorer.propertysheet.editors.ModifierEditor

org.openide.modules.ModuleDescription

org.openide.modules.ModuleInfo

org.openide.modules.ModuleInstall

org.openide.loaders.MultiDataObject

org.openide.loaders.MultiFileLoader

org.openide.filesystems.MultiFileSystem

org.openide.util.Mutex

org.openide.util.NbBundle

org.openide.execution.NbClassLoader

org.openide.text.NbDocument

org.openide.execution.NbfsStreamHandlerFactory

org.openide.execution.NbProcessDescriptor

org.openide.util.datatransfer.NewType

org.openide.nodes.Node

org.openide.util.actions.NodeAction

org.openide.nodes.NodeOp

org.openide.nodes.NodeOperation

org.openide.explorer.view.NodeRenderer

org.openide.explorer.view.NodeTableModel

org.openide.NotifyDescriptor

org.openide.actions.OpenProjectAction

org.openide.loaders.OpenSupport

org.openide.windows.OutputEvent

org.openide.windows.OutputListener

org.openide.windows.OutputWriter

org.openide.actions.PasteAction

org.openide.util.datatransfer.PasteType

org.openide.Places

org.openide.text.PositionRef

org.openide.text.PrintSettings

org.openide.execution.ProcessExecutor

org.openide.cookies.ProjectCookie

org.openide.util.actions.ProjectSensitiveAction

org.openide.explorer.propertysheet.PropertyDialogManager

org.openide.explorer.propertysheet.PropertyEnv

org.openide.explorer.propertysheet.PropertyPanel

org.openide.nodes.Node.PropertySet

org.openide.explorer.propertysheet.PropertySheet

org.openide.explorer.propertysheet.PropertySheetSettings

org.openide.util.lookup.ProxyLookup

org.openide.util.RE

org.openide.util.ReaderCharacterIterator

org.openide.util.RECompiler

org.openide.filesystems.Repository

org.openide.filesystems.RepositoryAdapter

org.openide.loaders.RepositoryNodeFactory

org.openide.util.RequestProcessor

org.openide.util.RESyntaxException

org.openide.util.io.SafeException

org.openide.actions.SaveAsTemplateAction

org.openide.actions.SaveProjectAction

org.openide.execution.ScriptType

org.openide.ServiceType

org.openide.explorer.propertysheet.SetDefaultValueAction

org.openide.util.SharedClassObject

org.openide.cookies.SourceCookie

org.openide.modules.SpecificationVersion

org.openide.actions.StartDebuggerAction

org.openide.awt.StatusDisplayer

org.openide.actions.StepOutAction

org.openide.util.StreamCharacterIterator

org.openide.explorer.propertysheet.editors.StringArrayCustomEditor

org.openide.explorer.propertysheet.editors.StringArrayCustomizable

org.openide.explorer.propertysheet.editors.StringArrayEditor

org.openide.util.StringCharacterIterator

org.openide.util.actions.SystemAction

org.openide.options.SystemOption

org.openide.util.Task

org.openide.loaders.TemplateWizard

org.openide.actions.ToggleBreakpointAction

org.openide.awt.Toolbar

org.openide.awt.ToolbarPool

org.openide.actions.ToolsAction

org.openide.windows.TopComponent

org.openide.windows.TopComponentGroup

org.openide.TopManager

org.openide.util.TopologicalSortException

org.openide.actions.TraceIntoAction

org.openide.actions.TraceOverAction

org.openide.explorer.view.TreeTableView

org.openide.explorer.view.TreeView

org.openide.src.Type

org.openide.explorer.propertysheet.editors.TypeEditor

org.openide.loaders.UniFileLoader

org.openide.filesystems.URLMapper

org.openide.util.UserQuestionException

org.openide.util.Utilities

org.openide.util.WeakListener

org.openide.util.WeakListeners

org.openide.windows.WindowManager

org.openide.WizardDescriptor

org.openide.WizardValidationException

org.openide.windows.Workspace

org.openide.loaders.XMLDataObject

org.openide.filesystems.XMLFileSystem

org.openide.xml.XMLUtil


Details of all changes by API and date


Actions API

A way how to implement "Jump Next" and "Jump Prev" action handlers

Mar 23 '05; API spec. version: 5.8; made by: jtulach; issues: #40185
Use
 topComponent.getActionMap().put("jumpPrev", new YourPrevAction());
 topComponent.getActionMap().put("jumpNext", new YourNextAction());
          
if your component provides items and you want the user to jump among them using standard next/prev actions.

Added property to SystemAction/Action that causes it's icon not to be displayed in menu.

Oct 12 '04; API spec. version: 4.49; affected top-level classes: Actions; made by: mkleint

SystemAction putValue("noIconInMenu", Boolean.TRUE) influences the display of the action in the main menu, the item will have no icon there. Works for Actions that don't define custom MenuPresenter. This property is considered temporary, applications building on top of the platform that don't want this functionality, have to patch the actions' code.

Allow asynchronous execution of actions

Feb 17 '04; API spec. version: 4.26; affected top-level classes: CallableSystemAction; made by: jtulach; issues: #39640
Support for asynchronous execution of actions has been re-added. Right now all CallableSystemAction that return true from their asynchronous method are executed outside of AWT thread. However as most actions shall be executed synchronously, it is still required for a subclass of CallableSystemAction to override the method with own implementation otherwise a warning is printed.

There is a special contract to allow synchronous actions to be executed asynchronously, by using special waitFinished as action command.

Support for pressed, disabled and rollover icons added to SystemAction and Actions

Jan 8 '04; API spec. version: 4.22; affected top-level classes: SystemAction Actions; made by: dstrupl; issues: #32256
Method SystemAction.getValue() was modified to support one additional special parameter: "iconBase". If a value with this key is required the method calls into SystemAction.iconResource. Class org.openide.awt.Actions uses value of "iconBase" to fetch the icons. The "iconBase" parameter is used not only when connecting SystemAction but for all javax.swing.Action instances. The value of "iconBase" is a path to the icon resources without the trailing .gif. The code in Actions adds .gif, _pressed.gif, _disabled.gif and _rollover.gif suffices to the iconBase.

Actions can be run directly in event thread

Aug 25 '03; API spec. version: 4.11; affected top-level classes: ActionManager CallableSystemAction; made by: jglick; issues: #35755

In an attempt to migrate all actions in NetBeans to be run directly in the event thread, as Swing actions normally are, CallableSystemAction gets a new method asynchronous(). By default it is true, meaning to still use the request processor to run the action, but subclasses and new code should override this to be false (and then expect to be called from the event thread).

Correspondingly, ActionManager.invokeAction(Action, ActionEvent) is deprecated and just delegates directly to Action.actionPerformed(ActionEvent).


Compatibility:

There are possible semantic incompatibilities introduced by this change.

  1. Actions directly extending SystemAction or Action, not CallableSystemAction, will begin running in the event thread, whereas before they ran in a request processor.

  2. Code calling ActionManager.invokeAction expecting it not to block will now need to handle the action possibly running synchronously.

  3. It is now generally enforced that Action.actionPerformed be called from the event thread (relevant e.g. from a template wizard iterator).

  4. For simplicity and consistency with Swing, the controller (generally a view) is expected to ensure that an action is enabled before calling actionPerformed. Typically if it is disabled and an attempt was made to call the action, you should use Toolkit.beep.

  5. Miscellaneous properties of an action (most significantly, its enablement status) should be modified (or changes notified) from the event thread.

ActionManager.getDefault() added

Mar 18 '03; API spec. version: 4.2; affected top-level classes: ActionManager; made by: jglick; issues: #32092
This method should be more convenient than looking for an instance in lookup. Also there is a simple implementation for standalone use available.

org.openide.actions.InstantiateAction deprecated

Feb 27 '03; API spec. version: 3.42; affected top-level classes: InstantiateAction; made by: dkonecny; issues: #27135
This action was used only as default action on templates. It instantiates the template when it was double clicked in the Options dialog. This behaviour was changed and action is not useful anymore. It is deprecated and it usage should be avoided. Part of the deprecatation was that org.openide.loadersDataNode.getDefaultAction() does not return this action on templates anymore.

New Actions system - part I.

Jan 21 '03; API spec. version: 3.32; affected top-level classes: TopComponent; made by: pzavadsky; issues: #30231

According to changes in action system (see the change 3.29), also the method TopComponent.getSystemActions() is replaced by TopComponent.getActions() method.

New Actions system - part I.

Jan 8 '03; API spec. version: 3.29; affected top-level classes: ContextAwareAction Utilities TopComponent CallbackSystemAction NodeAction CutAction CopyAction DeleteAction PasteAction FileSystemAction ToolsAction Actions Node AbstractNode NodeOp; made by: jtulach pzavadsky; issues: #27868

Introduction of new action system, which generally means move from usage of SystemAction to Action instances. Look at general proposal. That document also focuses on declarative actions usage which is not subject of current change, it will be part of later changes.

Current change is described by description of already implemented changes which also summarizes these API changes.

Enhanced the org.openide.awt.MenuBar to understand Components.

Jul 15 '02; API spec. version: 3.2; affected top-level classes: MenuBar; made by: pnejedly
This is not the Java API change but rather a change in treating of the content of the folder from which the MenuBar is built. Prevoiusly only folders were recognized and turned into top-level menus. Now also Component instances found in the folder are directly added to the resulting MenuBar and Presenter.Toolbar instances are asked for the presentation component and added to the MenuBar.

Action manager can invoke actions in request processor

Oct 6 '00; affected top-level classes: ActionManager
Method invokeAction added to the ActionManager. It allows all actions code to happen in one request processor.

SystemAction refers to Icon rather than ImageIcon

Apr 11 '00; affected top-level classes: SystemAction; made by: jglick
getIcon and setIcon now use the interface Icon rather than the particular implementation ImageIcon. This corrects an API bug (excessive specificity).
Compatibility: First broken, later restored binary compatibility in trunk and boston. Any code explicitly using this calls before may break (source code may be compatible in many cases; binary compatibility has been preserved). These calls were known to be used only for Actions to create presenters; normal code which constructs SystemActions and implements iconResource should be unaffected. Actions using the "grouping action" template should check their getMenuPresenter method which may be binary-incompatible; it is easy to replace the code with safer code such as:

// ....
private static Icon icon = null;
// ....
public JMenuItem getMenuPresenter() {
    JMenu menu = new JMenu(getName ());
    if (icon == null) {
        icon = new ImageIcon(MyAction.class.getResource(iconResource()));
    }
    menu.setIcon(icon);
    // ....

Binary-compatible

Can create textual icons for actions

Mar 23 '00; affected top-level classes: SystemAction; made by: jglick
iconResource may now return null to indicate no icon. getIcon(true) may be used to get an icon created from the label if there is no icon specified.

SaveAsTemplateAction.iconResource removed

Mar 23 '00; affected top-level classes: SaveAsTemplateAction
iconResource was accidentally a public method; no longer needed, and deprecated. Technically backwards incompatible, but no one should have been calling this method as public, as it was protected in the superclass SystemAction.
Compatibility: First removed, later re-added but deprecated in trunk and boston.

ActionManager added

Mar 14 '00; affected top-level classes: ActionManager ToolsAction TopManager
Class ActionManager added, along with TopManager.getActionManager. This class replaces the functionality of ToolsAction.Model and ToolsAction.setModel which have been deprecated. No one other than ToolsAction and the core implementation ought to have been directly using the model class, and the same applies to the new action manager.
Compatibility: ToolsAction model first removed, later re-added but deprecated in trunk and boston.

Compiler API (historical)

CompilationEngine.getDefault added, TopManager.getCompilationEngine deprecated

Apr 24 '02; API spec. version: 2.16; affected top-level classes: CompilationEngine; made by: dstrupl; issues: #20539
As an ongoing effort to move from TopManager to separete smaller APIs we deprecate the method TopManager.getCompilationEngine and move the functionality to CompilationEngine.getDefault and register the engines with lookup.

Timestamps added to Compiler API

Apr 23 '02; API spec. version: 2.16; affected top-level classes: Compiler CompilerJob; made by: dkonecny; issues: #19668
Two new methods has been added to Compiler API: protected Date Compiler.getTimeStamp() and punlic CompilerJob.isUpToDate(Date).

Cannot override attachment of compiler listeners

May 19 '01; affected top-level classes: CompilerGroup; made by: jglick
addCompilerListener and removeCompilerListener made final.
Binary-compatible

Methods notifyError and parseErrors added into ExternalCompilerGroup

May 12 '01; API spec. version: 1.34; affected top-level classes: ExternalCompilerGroup; made by: anovak; issues: #13319
These two should serve as a hooks into the ExternalCompilerGroup class. Appropriate for compilers that does not obey any usual form of printing errors, i.e. they first print a file and then all bugs in that file, or native OS's filesystem (OpenVMS) is too strange to just construct file from a given string.

Can specify JDK home to external compilers

Apr 13 '01; affected top-level classes: ExternalCompilerGroup
Tag public static final String TAG_JDKHOME added to the ExternalCompilerGroup.Format class.

ExternalCompiler.isUpToDate protected, not public

Mar 9 '00; affected top-level classes: ExternalCompiler; made by: jglick
isUpToDate made protected instead of public, closing an API bug (it overrides a protected method and code calling it as public was erroneous).
Compatibility: First broken, later restored binary compatibility in trunk and boston. In recommended coding style, an instance of the class would be constructed but then assigned to a variable, or otherwise used, as an instance of the interface type (Compiler); in this case it would be impossible to accidentally call the isUpToDate method.
Binary-compatible

Datasystems API (historical)

Added EditorCookie.Observable interface allowing listening on document state changes

Feb 26 '03; API spec. version: 3.40; affected top-level classes: EditorCookie; made by: dkonecny; issues: #31101
Added EditorCookie.Observable interface which extends EditorCookie. It defines several properties which can be listen for changes. Client can use them to learn that document was closed, modified state of document has changed and that list of panes in which the document is opened has changed. All editors which implemented EditorCookie are now encouraged to implement directly EditorCookie.Observable. The CloneableEditorSupport provides all necessary implementation.

InstanceDataObject.instanceOf permits whitespace

Jan 28 '03; API spec. version: 3.34; affected top-level classes: InstanceDataObject; made by: pkuzel

InstanceDataObject recognizes whitespace as a token separator in the instanceOf file attribute for .instance files in XML layers.

Added DataLoader.getRepresentationClassName

Dec 18 '02; API spec. version: 3.25; affected top-level classes: DataLoader; made by: jglick
The method DataLoader.getRepresentationClassName was added. It should behave similarly to DataLoader.getRepresentationClass, but not require the class to be loaded.

Added Environment.findSettingsContext

Oct 11 '02; API spec. version: 3.13; affected top-level classes: Environment; made by: jpokorsky; issues: #27303
Environment has been extended to provide a JNDI context containing settings (former file attributes) for a particular DataObject. Modules can plug own implementation of the context in by registering Environment.Provider which provides a javax.naming.Context object in its lookup.

Streamlined DataShadow syntax

Jun 12 '02; API spec. version: 2.23; affected top-level classes: DataShadow; made by: phrebejk
There is new way of creating DataShadows (links) it is possible now to create link using empty file of length zero. This file has to have two attributes originalFile and originalFileSystem. The values have to be of type String. Second attribute can be omitted in this case only the filesystem on which the link resides is searched to find the linked file.

Target name of a template wizard may not be set

Jun 11 '02; affected top-level classes: TemplateWizard; made by: jglick
The bean property TemplateWizard.targetName may now legally be null. In fact it was always null until set, and template wizard iterators would see a null value if they used a custom second panel.
Compatibility: While this is an incompatible change from the API standpoint, in fact it is just a change of the Javadoc to match the actual behavior of existing code.

Better way for an object to provide TemplateWizard.Iterator

Apr 23 '02; API spec. version: 2.13; affected top-level classes: TemplateWizard; made by: jtulach; issues: #8858
TemplateWizard.Iterator now implements Node.Cookie and TemplateWizard.getIterator(DataObject) now first checks for the cookie.

InstanceDataObject.create can specify whether a new file should be created

Mar 15 '02; API spec. version: 2.9; affected top-level classes: InstanceDataObject; made by: jpokorsky; issues: #21083
Added InstanceDataObject.create with parameter create specifying whether a new file should be created or an existing should be reused.

Create settings instances with associated module information

Jul 31 '01; API spec. version: 1.28; affected top-level classes: InstanceDataObject; made by: jpokorsky
Added InstanceDataObject.create allowing creation of a settings data object annotated by a ModuleInfo.

Static methods to get or set preferred loader for a file

Jul 14 '01; affected top-level classes: DataLoaderPool
Added public static methods to set/get preferred loader and DataLoader.markFile changed to used them. Now any loader can check if it is the preferred or not. Also it is possible to unset preferred loader.

Retrieving the environment of an environment provider is passed a data object

Jul 10 '01; API spec. version: 1.22; affected top-level classes: Environment
Function public Lookup getEnvironment () of Environment.Provider interface was changed to public Lookup getEnvironment(DataObject obj).
Compatibility: Change of experimental feature.

Support for clipboard operations on data objects

Jul 9 '01; API spec. version: 1.21; affected top-level classes: LoaderTransfer
Added LoaderTransfer class to allow clipboard operations on DataObjects. It is similar to the NodeTransfer class allowing clipboard operations for nodes.

Get a cookie via a data shadow

Jun 25 '01; API spec. version: 1.16; affected top-level classes: DataObject
Added DataObject.getCookie (DataShadow shadow, Class clazz) to notify data objects that a cookie is requested via its shadow.

Deprecated XMLDataObject.createEditorCookie

Jun 15 '01; affected top-level classes: XMLDataObject; made by: pkuzel
Deprecated createEditorCookie() method.
Compatibility: Subclasses should use cookie set factories.

Folders can be first-class data object entries

Jun 13 '01; API spec. version: 1.13; affected top-level classes: FileEntry
Support for folders being used as entries of MultiDataObjects with FileEntry.Folder.

Folders are now multi data objects

Jun 13 '01; API spec. version: 1.13; affected top-level classes: DataFolder DataShadow
DataFolder extends MultiDataObject instead of DataObject, backward compatibility is ensured. Original constructor accepting DataLoader was preserved and deprecated. Behavior of Move operation has been changed to make it compatible with Copy, both of them now merge folders if they exist in the target location. Similarly for DataShadow.

InstanceSupport provides InstanceCookie.Of

Jun 12 '01; API spec. version: 1.12; affected top-level classes: InstanceSupport
InstanceSupport now implements InstanceCookie.Of.

Added FolderLookup

Jun 6 '01; API spec. version: 1.11; affected top-level classes: FolderLookup
FolderLookup created that allows to create an instance of lookup from objects in a folder.

Folder instances can use any data object container

Jun 6 '01; API spec. version: 1.11; affected top-level classes: FolderInstance
Now the folder instance can be constructed not just on data folders, but on any container because of constructor FolderInstance (DataObject.Container). Also a protected InstanceCookie acceptContainer (DataObject.Container) has been added to allow subclasses to accept subcontainers.

Find a data container rather than folder for a file folder

Jun 6 '01; API spec. version: 1.11; affected top-level classes: DataFolder
DataFolder.findContainer method added to allow the use of the folder recognition mechanism without constructing the folder itself.

Initialize data loader with name of unresolved representation class

Jun 5 '01; API spec. version: 1.10; affected top-level classes: DataLoader MultiFileLoader UniFileLoader
Added new constructor protected DataLoader(String representationClassName) to allow deferment of loading and resolving DataObject classes.

MultiDataObject's cookie set protected not public

May 19 '01; affected top-level classes: MultiDataObject; made by: jglick
getCookieSet and setCookieSet now protected, not public. Logically they should never have been public, since each object is responsible for providing its own set of cookies as it sees fit, and making it possible for anyone to retrieve and modify its cookie set without its explicit permission violates this modularity. Also setCookieSet deprecated.
Compatibility: Subclasses of MultiDataObject can continue to expose their cookie sets to outside classes if they wish by using e.g.:
/*package-private*/ CookieSet getCookieSet0() {
    return getCookieSet();
}
This is useful for DataEditorSupport especially. Code which expected to obtain the cookie set for arbitrary foreign data objects cannot be so easily fixed and should be redesigned.
Binary-compatible

Instances in folders can be created asynchronously

Apr 27 '01; API spec. version: 1.5; affected top-level classes: FolderInstance
FolderInstance.postCreationTask (Runnable) allows subclasses to create the instances in different thread.

Added InstanceCookie.Of

Apr 25 '01; API spec. version: 1.4; affected top-level classes: InstanceCookie
Added new class to enable better checking whether a cookie provides object of given class.

Data loader can declare default name and actions

Mar 28 '01; affected top-level classes: DataLoader
Two new methods added to get default display name and actions: Getters getDisplayName(), getActions() modified to return defaults if there are no changes.
Serialization changed to store only changes; if display name (or actions) does not change from default, null will be stored. Integer object representing version will be stored too.
Deserialization changed - after reading object (display name or actions) setDisplayName(String) (or setActions(SystemAction[])) will be called only if read object differs from default.

Create a compiler job for a set of data objects

Mar 20 '01; affected top-level classes: CompilerSupport
CompilerSupport.prepareJob added to simplify the creation of CompilerJob for set of data objects.

DataObject.Container added and used

Mar 1 '01; affected top-level classes: DataObject DataFolder DataShadow
DataObject.Container interface added and DataFolder and DataShadow changed to implement it. Every other data object that contains another objects is supposed to implement it too.

Template wizards can signal an invalid state

Jan 15 '01; affected top-level classes: TemplateWizard
TemplateWizard.instantiate can throw IllegalStateException to signal that the file provided is not OK. For example the Java wizard can check whether the file name is a valid Java identifier.

Cut/copy of data nodes can be overridden

Nov 27 '00; affected top-level classes: DataNode
canCopy and canCut made non-final.

Multi file loader better handles new or removed secondary files

Aug 17 '00; affected top-level classes: MultiDataObject MultiFileLoader UniFileLoader; made by: jtulach

Changes in MultiDataObject, MultiFileLoader, and UniFileLoader to handle the problem when X.java exists and X.form is created (in such situation JavaDataObject is discarded and form created) and also the situation when (later) the X.form is deleted, so FormDataObject is discarded and JavaDataObject created.

To better optimize the speed I made a small API addition. I added the method MultiDataObject.Entry.isImportant whose return value is used by the data object to correctly notify the filesystem if the file object is not important and also for not doing enhanced consistency tests for unimportant files (for example when X.class is deleted). I also override the method in FileEntry.Numb to return false (that is the reason why X.class is ignored).

Extension lists can include MIME types

Jul 12 '00; affected top-level classes: ExtensionList
ExtensionList now supports not only extensions but also MIME types. This allows anybody using UniFileLoader to recognize files based on MIME type and not on extension.

Data shadows can be made with custom extensions

Jun 28 '00; affected top-level classes: DataShadow; made by: jglick
More amenable to subclassing: you may specify an extension to use in create, and that extension should be honored in future operations on the file. deserialize is now available as a protected method; it now just returns the original data object, rather than a new shadow based on it. (If you want the shadow you must create it yourself with the constructor.)

Inner loaders of DataLoaderPool made inaccessible

Jun 26 '00; affected top-level classes: DataLoaderPool; made by: jglick
Made several inner classes inaccessible: These classes were only public for purposes of serialization (the requirement that loaders be public to be serialized was later removed).
Compatibility: First broken, later restored binary compatibility in trunk and boston. All classes were documented in Javadoc to be public only due to serialization, so any outside code referring to them was already erroneous.
Binary-compatible

Template descriptions should be treated as URLs not resource paths

Jun 25 '00; affected top-level classes: TemplateWizard; made by: jglick
Getting/setting template description as resource string no longer supported, since the new nbrescurrloc URL protocol handles that adequately. Although the methods getDescriptionAsResource and setDescriptionAsResource were deprecated, probably no one refers to them at runtime anyway; the old file attribute is still recognized and automatically upgraded to a URL attribute.
Compatibility: First removed, later re-added but deprecated in trunk and boston.

ExtensionListEditor removed

Apr 4 '00; affected top-level classes: ExtensionListEditor
ExtensionListEditor removed from the APIs (now in an implementation package providing property editors). No one should have been referring to this class directly.
Compatibility: First deleted, then on Oct 27 '00 re-added but deprecated, also in boston.

Creation of data folder node children may be overridden

Mar 27 '00; affected top-level classes: DataFolder
createNodeChildren no longer final.

Can request to show file extensions in data nodes

Mar 9 '00; affected top-level classes: DataNode; made by: jglick
Methods getShowFileExtensions and setShowFileExtensions added.

Dialogs API

Add method NotifyDescriptor.getDefaultValue()

Mar 28 '05; API spec. version: 5.999999999; affected top-level classes: NotifyDescriptor; made by: jrechtacek; issues: #56878
The NotifyDescriptor.getDefaultValue() returns object which represents the default value. This default value is introduced in the constructor of NotifyDescriptor.

Added paramater leaf to DialogDescriptor

Jan 8 '05; API spec. version: 5.5; affected top-level classes: DialogDescriptor; made by: jrechtacek

Added the parameter leaf in constructor of the DialogDescriptor. The parameter is not mandatory and can be set manually. If this parameter is false (as default), all works as before. If the parameter leaf is true, then a dialog which is created by this descriptor cannot own any other windows.

Added WizardDescriptor.getInstantiatedObjects

Jul 2 '04; API spec. version: 4.41; affected top-level classes: WizardDescriptor; made by: jrechtacek; issues: #44513
Added the new method Set getInstantiatedObjects. This method returns set of newly instantiated objects if the wizard has been correctly finished. The empty set is returned as default, if the wizard uses the InstantiatingIterator then returns a set of Object as same as InstantiatingIterator.instantiate() does. The method throws the exception IllegalStateException if this method is called on the unfinished wizard.

Made instantiating iterator

May 4 '04; API spec. version: 4.33; affected top-level classes: WizardDescriptor; made by: jrechtacek; issues: #42192
Added a special interface for a wizard that needs to controll instantiating new objects. This interface can replace TemplateWizard.Iterator in template's declaration. New WizardDescriptor.InstantiatingIterator extends WizardDescriptor.Iterator and contains the methods for initialize/uninitialize the iterator and the central method instantiate which returns a set on instantiated objects.

Allow dynamically enable/disable Finish button

Mar 29 '04; API spec. version: 4.28; affected top-level classes: WizardDescriptor; made by: jrechtacek; issues: #7706
Added a special interface for a panel that needs to dynamically enabled Finish button. This interface WizardDescriptor.FinishablePanel extends WizardDescriptor.Panel and adds a method isFinishPanel() which returns if Finish button could be enabled. WizardDescriptor.FinishPanel is now deprecated, the preferred way is using FinishablePanel instead.

Allow vetoable Next/Finish validation in wizard

Mar 29 '04; API spec. version: 4.28; affected top-level classes: WizardDescriptor WizardValidationException; made by: jrechtacek; issues: #23116
Added a special interface for panels that need to do additional validation when Next or Finish button is clicked. This interface WizardDescriptor.ValidatingPanel extends WizardDescriptor.Panel and adds a method validate() which is called when un user clicked Next or Finish button. If validation fails the wizard doesn't move to next panel nor finish, the WizardValidationException is thrown and it returns which component fails (in a wizard's panel) and provides a error message to notify the user about.

Editor API

Added a new constant Line.SHOW_TOFRONT

Mar 21 '05; API spec. version: 5.8; affected top-level classes: Line; issues: #47825
The new constant is used in the EditorSupportLineSet and brings editor's parent Window to be fronted above all other top-level windows.

CloneableEditor.openAt made protected

Dec 6 '04; API spec. version: 5.2; affected top-level classes: CloneableEditorSupport; made by: pnejedly; issues: #51441

Deprecated EditorSupport has had a method openAt, which has no easy replacement in CloneableEditorSupport. The method is implemented in CloneableEditorSupport, but is package private. This change makes it protected.

Enhance SPI interface for CloneableEditorSupport.Pane providers

Aug 24 '04; API spec. version: 4.45; made by: mleint; issues: #46127
Additional method to CloneableEditorSupport.Pane interface, Pane.ensureVisible(). The implementing classes should ensure that the pane's component is open and visible after calling this method. Is used in CloneableEditorSupport.openAt().

Line.getOriginalLineNumber

Jun 8 '04; API spec. version: 4.38; affected top-level classes: Line; made by: jtulach; issues: #43484
A method that for a given line computes its original line number. Is useful when user edits text and places a breakpoint to find out what was the original line that the breakpoint should be placed to.

Support for AnnotationProvider interface

Apr 30 '04; API spec. version: 4.30; affected top-level classes: AnnotationProvider; made by: pnejedly; issues: #41345

Allow custom toolbar for NbDocument impls, editor panes separation in editor support classes

Apr 20 '04; API spec. version: 4.31; affected top-level classes: NbDocument CloneableEditorSupport CloneableEditor EditorSupport; made by: mkleint; issues: #41085
In order to implement MultiViews, these changes were necessary to the org.openide.text package.

Allow CloneableEditorSupport subclasses to specify persistence ID for the associated editor TopComponent.

Feb 2 '04; API spec. version: 4.24; affected top-level classes: CloneableEditorSupport; made by: pnejedly; issues: #37892
Adding protected CloneableEditorSupport.documentID to allow subclasses to compute preferred ID String used for TopComponent persistence.

New getInputStream() method in CloneableEditorSupport

Jun 26 '03; API spec. version: 4.7; affected top-level classes: CloneableEditorSupport; made by: pjiricka; issues: #34692
New method that returns an InputStream which reads the current data from the editor, taking into account the encoding of the file. The returned InputStream contains the same data as if the file was written out to the disk. Useful when interacting with a tool that expects an InputStream, and the current (possibly modified) content of the editor is desired.

CloneableEditorSupport takes Lookup for its Lines in constructor

Apr 18 '03; API spec. version: 4.5; affected top-level classes: CloneableEditorSupport; made by: jtulach; issues: #32937
Allows subclasses of the support DataEditorSupport, etc. pass additional information to each of its Lines. Such information can consist of location like DataObject or FileObject.

PositionRef.getEditorSupport() removed

Apr 2 '03; API spec. version: 4.3; affected top-level classes: PositionRef DataEditorSupport; made by: jtulach; issues: #32143
For a long time deprecated PositionRef.getEditorSupport() method has been removed to enabled separation of EditorSupport to openide-loaders.jar

Line.getDataObject() removed

Apr 2 '03; API spec. version: 4.3; affected top-level classes: Line DataEditorSupport; made by: jtulach; issues: #32143
Due to separation of openide-loaders.jar the Line.getDataObject() method had to be removed and replaced by Line.getLookup which provides more general way for providing line context. The direct replacement for the old method is DataObject DataEditorSupport.findDataObject(Line).

Line constructor changed

Apr 2 '03; API spec. version: 4.3; affected top-level classes: Line DocumentLine; made by: jtulach; issues: #32143
Due to separation of openide-loaders.jar the Line and DocumentLine constructors taking DataObject had to be modified to take Lookup or plain Object instead.

CloneableEditorSupport can provide display name for its Lines

Apr 2 '03; API spec. version: 4.3; affected top-level classes: CloneableEditorSupport; made by: jtulach; issues: #32143
Added method String messageLine (Line) that can be overriden to provide meaningful display name for lines produced by this support.

Added to javadoc an IndexOutOfBoundsException can be thrown from NbDocument.findLineOffset method

Oct 31 '01; affected top-level classes: NbDocument; issues: #17144
Added declaration to javadoc of the method NbDocument.findLineOffset() can throw an unchecked IndexOutOfBoundsException. The method could throw the exception also before (and also other kinds of them see the issue), but it was not declared in javadoc. This change makes it compliant to use with standard Swing text package and also with Line.Set.getCurrent() method.

Notifications about annotation attaching/detaching added

Oct 12 '01; API spec. version: 1.38; affected top-level classes: Annotation
Added protected methods Annotation.notifyAttached() and Annotation.notifyDetached().

Get content of Annotatable

Sep 25 '01; API spec. version: 1.35; affected top-level classes: Annotatable
Added public abstract method Annotatable.getText(). Listeners can be attached to Annotatable.PROP_TEXT property.

Annotatable.isDeleted and Annotatable.getAnnotationCount are final

Sep 25 '01; API spec. version: 1.35; affected top-level classes: Annotatable
The Annotatable.isDeleted and Annotatable.getAnnotationCount are final now.
Compatibility: This is not considered as incompatible change, because the API with these methods was not published yet.

Get attached annotatables, move them to front

Jul 25 '01; API spec. version: 1.27; affected top-level classes: Annotation
Added public final methods Annotation.getAttachedAnnotatable() and Annotation.moveToFront().

Line methods deprecated in favor of annotations

Jul 9 '01; API spec. version: 1.20; affected top-level classes: Line DocumentLine
Because of publication of Annotation API, all previously used methods like setBreakpoint, isBreakpoint, markError, unmarkError, markCurrentLine, unmarkCurrentLine, and canBeMarkedCurrent are deprecated. Use Annotation.attach() and detach() instead. Line now extends Annotatable abstract class.

New annotations API published

Jul 9 '01; API spec. version: 1.20; affected top-level classes: Annotation Annotatable NbDocument
Annotation API was published.
Compatibility: Because of publication of Annotation API, all previously used NbDocument methods like markError, markCurrent, markNormal are deprecated. Use addAnnotation and removeAnnotation instead.

Customization of editor support after creation

Dec 1 '00; affected top-level classes: CloneableEditorSupport; made by:
Added method initializeCloneableEditor to allow easier customization of the editor after creation and also after deserialization.

Can control undo/redo on editor supports

Jul 21 '00; affected top-level classes: CloneableEditorSupport
getUndoRedo() method was made protected final instead of final.

Can control title format for editor supports

Jul 17 '00; affected top-level classes: CloneableEditorSupport
updateTitles() method was made protected final instead of private.

IndentEngine a service type

Jun 23 '00; affected top-level classes: IndentEngine
Now a ServiceType. A few new methods relating to lookup.
Compatibility: Until Sep 27 '00, was incompatible (register had been deleted as it is no longer useful); the method was then restored but made deprecated.

Refactoring of editor and open supports

May 29 '00; affected top-level classes: EditorSupport CloneableEditorSupport CloneableEditor OpenSupport CloneableOpenSupport
Major refactoring of EditorSupport and OpenSupport, so that subclasses can have much finer control over pieces of its functionality.
Compatibility: First broken, Sep 29 '00 restored backwards compatibility.

Setting colors for lines deprecated

Mar 27 '00; affected top-level classes: NbDocument
NbDocument.COLORS and NbDocument.Colors deprecated.
Compatibility: First removed, later re-added but deprecated in trunk and boston. These classes were long disused (and should only have ever been used by the editor module anyway, which did not need them).

PrintSettings.getPageFormat requires a printer job

Feb 24 '00; affected top-level classes: PrintSettings
getPageFormat method now requires a PrinterJob argument.
Compatibility: First removed, later re-added but deprecated in trunk and boston. User-stored settings of this class should be backwards compatible, however code directly calling getPageFormat will produce a deprecation warning. Probably no one should be directly referring to this class or its BeanInfo outside the package; public only because it is a system option that must be public to appear.

Execution API (historical)

ExecutionEngine.getDefault added, TopManager.getExecutionEngine deprecated

Apr 24 '02; API spec. version: 2.16; affected top-level classes: CompilationEngine; made by: dstrupl; issues: #20538
As an ongoing effort to move from TopManager to separete smaller APIs we deprecate the method TopManager.getExecutionEngine and move the functionality to ExecutionEngine.getDefault and register the engines with lookup.

Incremental replacement of environment variables when launching process

Jun 23 '01; API spec. version: 1.15; affected top-level classes: NbProcessDescriptor; made by: jglick
Overload of exec accepting parameter appendEnv added to permit incremental replacement of environment variables.

Executors may be configured to append environment variables

Jun 23 '01; API spec. version: 1.15; affected top-level classes: ProcessExecutor; made by: jglick
Bean property appendEnvironmentVariables added.

May specify JDK home in ProcessExecutor

Apr 13 '01; affected top-level classes: ProcessExecutor
Tag public static final String TAG_JDKHOME added to the ProcessExecutor.Format class.

May add variable bindings to script types

Aug 3 '00; affected top-level classes: ScriptType
Method public abstract void addVariable(String name, Object value); added.

ScriptType added

Jul 31 '00; affected top-level classes: ScriptType
ScriptType, a new subclass of org.openide.ServiceType, was added. It should support execution of scripts written in scripting languages. The scripting module depends on it.

Change in default permission for NbClassLoader

Jun 28 '00; affected top-level classes: NbClassLoader
setDefaultPermissions(PermissionCollection) added. These permissions will be used in PermissionCollection getPermissions(CodeSource). Which is in turn used in ClassLoader.defineClass(..., ProtectionDomain). So the supplied permissions are used for ProtectionDomains of newly created classes.
Compatibility: This change may be incompatible for some users: NbClassLoader is not always trusted now, so you may want to add some permissions to allow loaded classes to execute checked operations. This does not apply to NbClassLoaders created with InputOutput, since it has AllPermission by default.

Resource URL protocols and hook for other protocols added

Jun 24 '00; affected top-level classes: NbfsStreamHandlerFactory; made by: jglick
Now handles not only nbfs protocol, but four resource-based protocols. Also, external code may insert support for additional protocols.

Explorer API

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: ExplorerActions 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 changes were described here and also 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: 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: 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: 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.


Filesystems API

FileObject.getFileObject made not final.

Jan 7 '05; API spec. version: 5.3; affected top-level classes: FileObject; made by: rmatous; issues: #51551

Method public final FileObject getFileObject (String relativePath) in class FileObject isn't final anymore to let more freedom for implemetations.

Added new method FileUtil.createMemoryFileSystem ()

Aug 4 '04; API spec. version: 4.43; affected top-level classes: FileUtil; made by: jtulach; issues: #46701
There is a new factory method FileUtil.createMemoryFileSystem () to create an empty, writeable instance of a FileSystem with content completely stored in memory. This filesystem is the one that is by default returned from Repository.getDefaultFileSystem() so since now the standalone applications may expect the default file system to be writeable.

Added FileUtil.preventFileChooserSymlinkTraversal(...)

Jul 30 '04; API spec. version: 4.42; affected top-level classes: FileUtil; made by: jglick; issues: #46459
Added a new method FileUtil.preventFileChooserSymlinkTraversal(...) to help work around problems with symbolic links and JFileChooser.

Added FileUtil.getFileDisplayName

Jun 9 '04; API spec. version: 4.39; affected top-level classes: FileUtil; made by: rmatous; issues: #37549
Get an appropriate display name for a file object. If the file corresponds to a path on disk, this will be the disk path. Otherwise the name will mention the filesystem name or archiv name in case the file comes from archiv and relative path. Relative path will be mentioned just in case that passed FileObject isn't root.

Almost all methods of Repository were deprecated.

Jun 1 '04; API spec. version: 4.36; affected top-level classes: Repository; made by: rmatous; issues: #42273
All methods were deprecated except: The previous semantics of Repository is broken. Replacement:

Reused DefaultAttributes can use different name than .nbattrs

May 28 '04; API spec. version: 4.35; affected top-level classes: DefaultAttributes; made by: rmatous; issues: #43180
Added new constructor to DefaultAttributes that takes file name as next additional parameter.

Easier to work with ZIP/JAR archives

May 7 '04; API spec. version: 4.48; affected top-level classes: FileUtil; made by: jglick

There are now various methods in FileUtil that let you easily convert between archive files themselves and their entries. It is no longer necessary (or advisable) to explicitly construct JarFileSystems to work with archives. A standard URLMapper implementation is present which handles jar-protocol URLs correctly.

FileUtil.normalizeFile added

May 7 '04; API spec. version: 4.48; affected top-level classes: FileUtil; made by: jglick; issues: #40410

The method FileUtil.normalizeFile(File) was added as a refinement of File.getCanonicalFile that does not traverse symlinks on Unix. Used throughout the NetBeans 4.0 project system.

FileObject.setImportant deprecated

May 7 '04; API spec. version: 4.48; affected top-level classes: FileObject; made by: jglick

In NetBeans 3.x, normally “compilation” or similar build steps would produce generated files kept in the user’s development folder alongside source files, and picked up as secondary files by a MultiFileLoader. To ensure that the VCS integration did not offer to version such files, FileObject.setImportant could be used to mark them as disposable.

In NetBeans 4.0, such disposable files should not be placed in a source folder. They should always be built to a separate build directory, typically defined by the containing project. In this case marking an individual file as unimportant is unnecessary, since the entire build tree is known to be disposable. Instead, the project (not data loaders) can use SharabilityQueryImplementation to indicate which subtrees contain build products.


Compatibility:

There is no direct replacement. Code using this method should be reëvaluated in the light of other changes in NetBeans 4.0.

Deprecation of various Filesystems API methods and classes

May 7 '04; API spec. version: 4.48; affected top-level classes: EnvironmentNotSupportedException FileObject FileSystem FileSystemCapability; made by: jglick

Various parts of the Filesystems API which are no longer useful in NetBeans 4.0 were deprecated. The assumptions which are now invalid were:

Specific deprecations:

  1. FileSystem.Environment and EnvironmentNotSupportedException
  2. FileSystemCapability (and its constants and subclasses), FileSystem.getCapability and setCapability, constructors taking FileSystemCapability
  3. FileSystem.PROP_HIDDEN, isHidden, and setHidden
  4. FileSystem.PROP_SYSTEM_NAME, getSystemName, and setSystemName
  5. FileSystem.find
  6. FileObject methods such as getPackageName
  7. FileSystem.isPersistent

See also deprecations in Repository.


Compatibility:

In general, attempts to call the old methods will yield well-defined but useless results in NetBeans 4.0.

FileObject.toString() not to be used for specific purposes

May 7 '04; API spec. version: 4.48; affected top-level classes: FileObject; made by: jglick; issues: #27640

FileObject.toString() no longer returns a predictable value; in particular, it will not be the same as getPath(). The new value is suitable for logging and debugging but otherwise cannot be relied upon.

There are two benefits to this change:

  1. The new toString() is more useful for logging than the previous value. It is no longer necessary to separately include fileObject.getFileSystem().toString(), which was cumbersome (and required an extra catch clause).

  2. Clients which were incorrectly using toString() to get a Java resource path will now be predictably broken, so they can be fixed to use ClassPath. (The paths would not have been usable in NetBeans 4.0 anyway.) Just deprecating toString() was not possible because it overrides a nondeprecated Object method, and is also inserted into code by the compiler without emitting any deprecation warning.


Compatibility:

Older Filesystems API clients which assumed that FileObject.toString() and FileObject.getPath() do the same thing will be broken.

There should exist just one FileObject for one resource (java.io.File or URL).

Apr 13 '04; API spec. version: 4.29; affected top-level classes: FileUtil URLMapper; made by: rmatous; issues: #41506

Added API for finding file relatively to another file

Dec 9 '03; API spec. version: 4.16; affected top-level classes: FileUtil FileObject; made by: rmatous; issues: #37445

Method FileObject.isReadOnly was deprecated and replaced with methods canRead, canWrite

Jan 10 '03; API spec. version: 3.31; affected top-level classes: FileObject AbstractFileSystem; made by: rmatous
There was made changes in FileObject class. Added method: public boolean canRead (). Method public boolean isReadOnly () was deprecated and replaced with method: public boolean canWrite (). This change can be considered as compatible. Newly added methods have default implementation. Also AbstractFileSystem was modified and two necessary method were added: method: public boolean canRead () and method: public boolean canWrite ().

URLMapper.findFileObjects returns empty array if not successful.

Jan 8 '03; API spec. version: 3.28; affected top-level classes: URLMapper; made by: rmatous; issues: #28312
URLMapper.findFileObjects returns empty array if not successful. As far there was in documentation written, that null is returned.

Added FileUtil.isParentOf

Oct 22 '02; API spec. version: 3.16; affected top-level classes: FileUtil; made by: vstejskal
FileUtil.isParentOf provides simple recursive check whether the FileObject is underneath some folder.

Changed javadoc to warn about improper use of methods

Oct 1 '02; affected top-level classes: FileObject; made by: pzavadsky; issues: #27640 #27687
Changed Javadoc to warn about improper usage of the FileObject.toString (it was used as full path format), which is replaced by FileObject.getPath now. Explained correct purpose of that method. Also added those warnings to findResource and findAllResource of Repository class.

FileObject.getPath() returns full resource path of file object

Aug 30 '02; API spec. version: 3.7; affected top-level classes: FileObject; made by: jglick; issues: #26904
It is commonly necessary to find the full resource path of a file object within its filesystem. Formerly you could do this the safe way by calling getPackageNameExt('/', '.'), but this is clumsy to write, potentially inefficient, and is prone to misinterpretation in the case of files without any extension (or files ending in a period, or folders with extensions). Calling toString() was more effective, but this suffered from the problem that for compatibility reasons, no assurance could be made that it would actually give a resource path - an old FileObject implementation could implement it in any way, since it was not originally documented what it should return. Therefore, the new method getPath() has been introduced.
Compatibility: Existing FileObject implementations ought to override the new method for efficiency. They should also cease to override toString. Subclasses of AbstractFileSystem (the normal case) need not be concerned, since the corresponding FileObject already implements this method correctly. Code assuming toString returns a resource path should be changed to use getPath instead.
Binary-compatible

Repository is not final

Jul 22 '02; API spec. version: 3.3; affected top-level classes: Repository; made by: jtulach
Repository is not final anymore, so there can be subclasses of it. But all its methods has been made final. This was done in order to create Repositories that will follow the javabeans pattern (have public default constructor).

URL -> FileObject mapping implementation

Jun 6 '02; API spec. version: 2.22; affected top-level classes: URLMapper; made by: rmatous
Two methods were added public static FileObject[] findFileObjects (URL url) and public abstract FileObject[] getFileObjects (URL url).
Compatibility: Added abstract method public abstract FileObject[] getFileObjects (URL url) But there doesn`t exists any known subclass of URLMapper yet. And URLMapper was introduced recently 2.16 in 3.4 release.

Added support for better FileObject-URL mapping

Apr 25 '02; API spec. version: 2.16; affected top-level classes: URLMapper; made by: rmatous
Added new class URLMapper. This class provides basic mapping for FileObjects from LocalFileSystem, JarFileSystem and MultiFileSystem and is intended as superclass for individual mappers.

There exists possibility to refresh whole filesystem in one

Apr 24 '02; API spec. version: 2.16; affected top-level classes: FileSystem; made by: rmatous
Method: public void FileSystem.refresh (boolean expected)) was added.

FileSystem provides FileChangeListener functionality

Mar 11 '02; API spec. version: 2.8; affected top-level classes: FileSystem; made by: rmatous
Method: public final void addFileChangeListener(FileChangeListener fcl) and public final void removeFileChangeListener(FileChangeListener fcl) was added to maintain FileChangeListeners that should be notified if some change in FileSystem occures.

Repository provides FileChangeListener functionality

Mar 11 '02; API spec. version: 2.8; affected top-level classes: Repository; made by: rmatous
Method: public final void addFileChangeListener(FileChangeListener fcl) and public final void removeFileChangeListener(FileChangeListener fcl) was added to maintain FileChangeListeners that should be notified if some change in Repository occures.

New property FileSystem.PROP_DISPLAY_NAME was added

Jan 17 '02; API spec. version: 2.1; affected top-level classes: FileSystem; made by: rmatous
FileSystem.PROP_DISPLAY_NAME added to notify a change in the display name.

FileEvents fired inside atomic actions can report from which atomic actions they were fired

Sep 21 '01; API spec. version: 1.35; affected top-level classes: FileEvent; made by: rmatous
Method boolean FileEvent.firedFrom(FileSystem.AtomicAction run) returns true if this FileEvent was fired from run.

Method createWritableOnForRename in MultiFileSystem was added

Aug 30 '01; API spec. version: 1.34; affected top-level classes: MultiFileSystem; made by: rmatous
Protected method createWritableOnForRename in MultiFileSystem was added. This method has the same meaning as createWritableOn but have two parameters: oldName, newName. This method is called from MultiFileObject.rename.

FileAttributeEvent's methods getName (), getOldValue (), getNewValue () can return null

Aug 24 '01; API spec. version: 1.33; affected top-level classes: FileAttributeEvent; made by: rmatous
FileAttributeEvent's methods getName (), getOldValue (), getNewValue () can return null. If getName () returns null then this means that one of attributes were changed. If getName () returns null then there is supposed that all FileAttributeEvent fields will return null also.
Compatibility: Code previously assuming that all FileAttributeEvent fields were non-null may now be broken, and should check for nulls.

Discover which filesystem a FileStateInvalidException is associated with

Aug 17 '01; API spec. version: 1.30; affected top-level classes: FileStateInvalidException; made by: mschilling
Added method public String getFileSystemName(). This will return the name of the filesystem containing the file with invalid state if such information is available.

Find a disk file from a file object or vice-versa

Jul 31 '01; API spec. version: 1.29; affected top-level classes: FileUtil; made by: rmatous
Added method public File toFile(FileObject). Finds appropriate java.io.File to FileObject if possible. If not possible then null is returned. Also added method public FileObject[] fromFile(File). Finds appropriate FileObjects to java.io.File if possible. If not possible then empty array is returned. More than one FileObject may correspond to one java.io.File so an array is returned.

Mounting new filesystem no longer works with filesystems providing WizardDescriptor as bean customizers

Jul 24 '01; made by: jtulach

It used to be the case (NB 3.2) that a FileSystem implementation could in its BeanInfo specify a BeanDescriptor whose Customizer class extended WizardDescriptor. This would cause the wizard to be opened when the user tried to mount that filesystem type.

The situation now (from 3.3) is that this no longer opens the customizer and property sheet is presented in the second step of the mount wizard.


Compatibility: WizardDescriptor as bean customizer no longer opens the wizard while mounting. To achieve this use of a special iterator in Templates/Mount/ is now used (for modules 3.3+).

Create file object without extension

Jun 27 '01; API spec. version: 1.17; affected top-level classes: FileObject; made by: rmatous
Added convenience method public FileObject createData(String name) throws IOException. Creates new data file in this folder with the specified name. Plainly calls createData(name,"").

Simplified file object deletion

Jun 25 '01; API spec. version: 1.15; affected top-level classes: FileObject
Added method public final void delete(). FileObject is locked before delete and finally this lock is released.

Can mark files as being virtual

Jun 1 '01; affected top-level classes: AbstractFileSystem
Added new protected method protected boolean checkVirtual(String name).Tests if file really exists or is missing. Some operation on it may be restricted if returns true.

Can mark files as being important

Jun 1 '01; affected top-level classes: AbstractFileSystem
Added new protected method protected void markImportant(String name, boolean important). Mark the file as being important or unimportant.

Test if a file object is virtual

Jun 1 '01; affected top-level classes: FileObject
Added new method public isVirtual. Tests if file really exists or is missing. Some operation on it may be restricted. Return value true indicates that the file is missing.

Get default Repository from within Filesystems API

Feb 7 '01; affected top-level classes: Repository
Added method Repository.getDefault() that allows standalone tools (using just filesystems library) without access to TopManager to get the default repository of the system.

Find a MIME type for a file object using resolvers

Feb 5 '01; affected top-level classes: FileUtil
Added new public method getMIMEType(FileObject). Resolves MIME type. Registered resolvers are invoked and used to achieve this goal. Resolvers must subclass MIMEResolver. If resolvers do not recognize MIME type then MIME type is obtained for a well-known extension.

Added MIMEResolver

Feb 5 '01; affected top-level classes: MIMEResolver; made by: rmatous
Added new MIMEResolver. This class is intended as superclass for individual resolvers.

Create expected file events

Jan 29 '01; affected top-level classes: FileEvent FileAttributeEvent FileRenameEvent
FileEvent and subclass constructors may take a parameter boolean expected.

Repository is not a cookie

Jan 8 '01; affected top-level classes: Repository; made by: jtulach
Repository has been changed not to implement the Node.Cookie interface. The reason for such change is that this was the only place where filesystems package depended on another part in the IDE.
Compatibility: Code that used Repository as cookie should be changed to:
ic = (InstanceCookie)node.getCookie(InstanceCookie.class);
if (ic != null && Repository.class.isAssignableFrom(ic.instanceCookie())) {
    // do stuff
}

Binary-compatible

MultiFileSystem finds actions on a set of files specially

Dec 6 '00; affected top-level classes: MultiFileSystem
Method: getActions(final Set foSet) was added, which should provide a Set of FileObjects to run the actions on. This method overloads default behavior of FileSystem.getActions(final Set foSet).

Propagate masks flag for multi-filesystems

Nov 23 '00; affected top-level classes: MultiFileSystem; made by: jglick
setPropagateMasks and getPropagateMasks added to make it easier to compose multi filesystems inside other multi filesystems.

Added XMLFileSystem

Nov 1 '00; affected top-level classes: XMLFileSystem
Added new XMLFileSystem that reads content of special XML file and represents it as filesystem. This filesystem is used by modules to provide their own content of menus, toolbars, templates, component palette, etc.

MIME lookup by extension made friendlier for C/C++

Sep 11 '00; affected top-level classes: FileUtil; made by: jglick
MIME types no longer include C/C++ extensions by default; and file extension lookups give preference to case-sensitive matches but also work with case-insensitive matches by default.

Customizable references to known file objects

Aug 22 '00; affected top-level classes: AbstractFileSystem
Added new protected method Reference createReference(FileObject fo). This method returns WeakReference of obj (new WeakReference (fo)). If you subclass from AbstractFileSystem, you can overload this method to return another type of Reference.

Find references to file objects by name

Aug 22 '00; affected top-level classes: AbstractFileSystem
Added new final protected method Reference findReference(String resourceName). This method finds the reference associated with resourceName.

Find known file objects starting from some point in the tree

Aug 10 '00; affected top-level classes: AbstractFileSystem
Added new protected method existingFileObjects(FileObject). Can be used to find all FileObjects in this filesystem with the given predecessor.

RepositoryAdapter added

Jun 25 '00; affected top-level classes: RepositoryAdapter; made by: jglick
Added to make it easier to use RepositoryListener.

Filesystem implementation methods protected not public

Mar 27 '00; affected top-level classes: LocalFileSystem JarFileSystem; made by: jtulach

Many methods in LocalFileSystem and JarFileSystem were declared public though they should never have been called directly. (They were implementing interface methods that would only be called from within the class itself.) These methods are:

Also in JarFileSystem only:

All these methods are now protected.

In general, outside code should use the proper outer API to access filesystems (FileSystem and FileObject and some helper classes), only directly calling methods of implementation classes where this is required (constructors or setRootDirectory). As a matter of style, it is recommended that calling code declare variables to be of the abstract type (e.g. FileSystem) to clarify that only generally available methods will be called.


Compatibility: First broken, later restored binary compatibility in trunk and boston. Any outside code calling them as public will break; however such code is definitely erroneous and should be rewritten.
Binary-compatible

AbstractFileSystem.refreshRoot was of the wrong type

Feb 24 '00; affected top-level classes: AbstractFileSystem
refreshRoot now returns FileObject rather than the subclass AbstractFileObject. In fact the returned object currently is always an AbstractFileObject but this subclass is package-private so it was an API bug to mention it from an accessible method.
Compatibility: First broken, later restored binary compatibility in trunk and boston. The change should be source-code compatible, and is made to be binary compatible as well.

Cross-API

Bytecode patching for compatibility with deprecated APIs was removed

May 7 '04; API spec. version: 4.48; affected top-level classes: CustomizeBeanAction HtmlBrowser InstanceCookie InstanceSupport DocumentLine Line PositionRef WeakListener CloneableTopComponent TopComponent; made by: jglick

Previously, a number of deprecated classes and APIs were made inaccessible in source code but left accessible at runtime (for the benefit of old modules already built in binary form). This was accomplished by patching API module bytecode as it was loaded to expose the old APIs as public. All of these patches have been removed for NetBeans 4.0, so not only can new sources not compile against them, but old binaries can no longer link against them. Also some obsolete classes were simply deleted. Specifically:


Compatibility:

Binary modules which still used these APIs must be rebuilt for NetBeans 4.0.

Lightweight HTML rendering methods

May 3 '04; API spec. version: 4.32; affected top-level classes: HtmlStatus Node HtmlRenderer DataNode; made by: tboudreau; issues: #29466
A lightweight HTML renderer which can render a limited subset of HTML has been added to the APIs, and will be used in Explorer. Nodes wishing to provide text rendered in HTML may do so by returning subset-compliant HTML formatted text from the new method getHtmlDisplayName. An interface, HTMLStatus has been created which extends FileSystem.Status, has been created, which allows filesystems to supply HTML formatted status information, by implementing it on their FileSystem.Status implementation. Filesystems which delegate to other filesystems my implement FileSystem.HtmlStatus and simply return null for filesystems which do not support it. If one is present, DataNode will use it to supply HTML formatted text to Explorer. The renderer itself can be found in org.openide.awt.HtmlRenderer.

J2SE 1.4 required

May 14 '03; API spec. version: 4.6; made by: jglick
NetBeans now requires a Java 2 VM (JDK, JRE) of version 1.4 or later. 1.3 is no longer supported.

Places.Nodes.packages deprecated and no more supported

Oct 1 '02; API spec. version: 3.10; affected top-level classes: Places; made by: pzavadsky; issues: #27655
Places.Nodes.packages is not working any more. The default implementation returns empty node now. Original purpose of this method was java-centric, what will be not supported. Thus the old implementation wouldn't be working anyway. (The old packages node impl was moved to objectbrowser module, where it needs to deal with upcoming changes.)

Java Hierarchy API (historical)

Get JVM name and signature for a class

Nov 15 '00; affected top-level classes: ClassElement Type
Two methods on ClassElement, getVMName and getSignature added. getVMName() returns name for a class that can be passed to java.lang.Class.forName(). getSignature() returns signature for the class according to the VM specs. Correspondingly Type got getVMClassName and getSignature.

Modules API

Allow a module to be run only on some class of operating systems

Aug 11 '04; API spec. version: 4.44; made by: jtulach; issues: #46833
Modules can now declare that they run only on a specific version of operating system by requesting a presence of org.openide.modules.os.MacOSX, org.openide.modules.os.Unix or org.openide.modules.os.Windows token in their manifest:
                OpenIDE-Module-Requires: org.openide.modules.os.Unix
            
Such a module will then be enabled only on specified class of operating systems. See also the modules api description.

Removed compatibility handling of deprecated manifest sections

May 7 '04; API spec. version: 4.48; made by: jglick

Previously, a number of module manifest sections (e.g. OpenIDE-Module-Class: FileSystem) had been deprecated in favor of XML-layer-based installation, but a compatibility layer was left in place to permit old modules to still function as before. This layer has been removed.

Manifest-based installation of JavaHelp help sets was also removed.


Compatibility:

Modules which did not remove these manifest sections before must do so for NetBeans 4.0.

Added method ModuleInfo.getClassLoader()

Dec 25 '03; API spec. version: 4.21; affected top-level classes: ModuleInfo; made by: jglick; issues: #38330
Added a new method ModuleInfo.getClassLoader() making it possible to find a Java class loader associated with an enabled module.
Compatibility: Note that although the new method is effectively abstract, this is a compatible change insofar as no one outside of the core module system should be subclassing ModuleInfo.

Added ModuleInfo.getBuildVersion()

Dec 18 '03; API spec. version: 4.18; affected top-level classes: ModuleInfo; made by: jtulach; issues: #36064
The implementation version and the build number of modules can now be different. One can keep OpenIDE-Module-Implementation-Version unchanged to allow implementation dependencies and still identify the actual build version by specifying OpenIDE-Module-Build-Version. If omited the build version is equal to implementation version.

Modules can declare their own dependency transformations

Jan 27 '03; API spec. version: 3.33; made by: jglick; issues: #30161

Modules may now declare their own transformations of module dependencies using a declarative XML syntax in the folder ModuleAutoDeps/ in the system filesystem. This is useful for being able to manage major refactorings of functionality in a manner that will retain binary compatibility.

Added InstalledFileLocator

Nov 13 '02; API spec. version: 3.21; affected top-level classes: InstalledFileLocator; made by: jglick; issues: #28683
This new service permits modules to find disk files associated with their installation. For example, files packed into an NBM alongside the module could be found in this way. Using the locator is both safer and more convenient than checking undocumented system properties or resorting to other tricks. Note that the NBM format is still not specified by the Open APIs; however, if there is a packaging format in use, then there should be a matching locator implementation that locates files bundled by it.
Compatibility: Existing module code which searches system properties such as netbeans.home and netbeans.user should be replaced with calls to the new supported API.

Possible to deprecate an entire module

Oct 16 '02; API spec. version: 3.15; made by: jglick
The new manifest attribute OpenIDE-Module-Deprecated and localized attribute OpenIDE-Module-Deprecation-Message may be used to warn clients of an obsolete API module.

Module dependencies no longer considered transitive for purposes of classloading

Oct 7 '02; API spec. version: 3.12; made by: jglick; issues: #27853
Prior to this change, if module B depends on module A, where A provides some public packages (implicitly or explicitly), and module C depends on module B, then module C could use public packages from A. Now it cannot, unless it also declares an explicit dependency on A.
Compatibility: Modules which fail to declare an API dependency on IDE/1 > 3.12 or above will behave according to the old semantics: they may load classes and resources from undeclared indirect parent modules. But if they declare an API dependency on 3.12 or higher, the new semantics apply.

Modules can declare their public packages

May 16 '02; API spec. version: 2.19; made by: jglick; issues: #19621

Modules which provide Java-level APIs to other modules can now specify which packages should be considered part of the public API. Other packages are blocked from client modules.

Utilizing this feature for already released modules is very dangerous. See issue #31637 for details.

Thread.contextClassLoader defaults to TopManager.systemClassLoader

May 8 '02; made by: jglick; issues: #20663
The context class loader for all threads now defaults to the system class loader, capable of loading from modules and their extensions as well as the startup classpath. This is especially useful for modules bundling NetBeans-independent libraries such as JAXP which use the context class loader as a default whenever no particular class loader is specified to some registration mechanism.

Provides-requires semantics for module dependencies

Jan 29 '02; API spec. version: 2.3; affected top-level classes: Dependency ModuleInfo; made by: jglick; issues: #18781
The manifest attributes OpenIDE-Module-Provides and OpenIDE-Module-Requires were introduced. These permit modules to depend on capabilities offered by other modules, without explicitly naming who the provider will be.

Ranged major release version dependencies

Jan 29 '02; API spec. version: 2.3; affected top-level classes: Dependency; made by: jglick; issues: #19714
Module dependencies may now specify a range of major release versions, to indicate that the dependency is valid for all mentioned major releases. Though the API-providing module may have had some incompatible changes, none of them were found to be relevant to the depending module.

JavaHelp split into a separate module

Jan 22 '02; API spec. version: 2.2; made by: jglick; issues: #19620 #27776

JavaHelp support is now in a separate module, org.netbeans.modules.javahelp/1. This module includes the javax.help.** packages, and it provides the token org.netbeans.api.javahelp.Help which signifies the ability to display help, for example using TopManager.showHelp, or by querying Lookup for an instance of Help.

New modules (declaring a dependency on APIs after 2.2) which wish to provide a helpset should continue to do so via XML layer, and need only require the token org.netbeans.api.javahelp.Help. New modules wishing to display help can either require this token and use TopManager.showHelp, or depend on the org.netbeans.modules.javahelp/1 API module, require the token, query Lookup for an instance of Help, and use its methods directly. New modules wishing to use the javax.help.** packages directly should declare a dependency on the org.netbeans.modules.javahelp/1 module rather than using a package dependency.


Compatibility:

Existing modules (with an API dependency earlier than 2.2, or none at all) for compatibility are given an automatic dependency on the org.netbeans.api.javahelp.Help token. Additionally, if they declared a package dependency on javax.help.**, they are given an automatic dependency on the org.netbeans.modules.javahelp/1 module.

(Note: the automatic conversion of the package dependency is implemented by issue #27776, which was not fixed for the NetBeans 3.4 release, but will be for NetBeans 3.4.1. NetBeans 3.4 did, however, add automatic dependencies on the token, by far the more common case.)

Both layer- and manifest-based installation of help sets continue to be supported; manifest-based installation is still deprecated.

Format of modules XML folder defined

Aug 17 '01; API spec. version: 1.31; made by: jglick; issues: #13921
Some aspects of the contents of the system Modules/ folder and its XML files are now defined. Additionally, certain kinds of changes (module enablement or disablement) are now permitted to these XML files.

Can determine which module owns a given class

Jul 31 '01; API spec. version: 1.28; affected top-level classes: ModuleInfo; made by: jpokorsky
Added owns(Class) to determine if the provided class was loaded as a part of the module.

Can supply localized messages for failed dependencies

Jul 20 '01; API spec. version: 1.26; affected top-level classes: ModuleInfo; made by: jglick
Permitting main attributes OpenIDE-Module-Module-Dependency-Message and OpenIDE-Module-Package-Dependency-Message.

New module installer API

Jul 16 '01; API spec. version: 1.24; affected top-level classes: ModuleInfo Dependency SpecificationVersion ModuleDescription ManifestSection IllegalModuleException ModuleInstall; made by: jglick
New module installer and corresponding API enhancements. ModuleDescription, ManifestSection, and IllegalModuleException deprecated. ModuleInfo, Dependency, SpecificationVersion, and ModuleInstall.validate added. Module information available from lookup. Localized properties may be stored in bundles.

JavaHelp may be registered via layer

Apr 29 '01; API spec. version: 1.6; made by: jglick
Added ability to specify JavaHelp help sets and links from layer, or generally XML file.

Can get the class implementing a manifest section

Mar 8 '01; affected top-level classes: ManifestSection
Added method getSectionClass().

Added long description for modules

Feb 9 '01; affected top-level classes: ModuleDescription; made by: jglick
Added getLongDescription and TAG_LONG_DESCRIPTION.

Can get JavaHelp help set reference as resource rather than URL

Jan 22 '01; affected top-level classes: ModuleDescription; made by: jglick
Added getDescriptionResource. Retrieving as URL deprecated.

Display category for modules

Jan 18 '01; affected top-level classes: ModuleDescription; made by: jglick
Added getDisplayCategory and TAG_CATEGORY.

Short description for modules

Dec 21 '00; affected top-level classes: ModuleDescription; made by: jglick
Added getShortDescription and TAG_SHORT_DESCRIPTION.

Get layer as a resource, not URL

Nov 23 '00; affected top-level classes: ModuleDescription; made by: jglick
getLayerResource() added. Thus all locale variants of a layer may be merged together. Retrieval as URL is deprecated.

Permit abbreviated sample class names in package dependencies

Nov 22 '00; made by: jglick
Slight extension to package dependency syntax to allow abbreviated sample name.

Package-accessible classloader

Nov 12 '00; affected top-level classes: ModuleDescription; made by: jglick
Inner interface PackageAccessibleClassLoader added to make it easier to check package dependencies. Package dependencies which include sample classes are now permitted.

Support layer specification in a module manifest

Nov 2 '00; affected top-level classes: ModuleDescription; made by: jglick
Now also understands OpenIDE-Module-Layer tag that can specify a resource path to XMLFileSystem that is provided by the module. Also added method getLayer() that returns the URL of XML filesystem if provided.

Manipulation of classloader used by a module

Aug 27 '00; affected top-level classes: ModuleDescription; made by: jglick
Added methods getClassLoader, setClassLoader and getBadClasses.

ModuleDescription constructor may specify a classloader

Mar 28 '00; affected top-level classes: ModuleDescription; made by: jglick
Constructors may now specify a classloader to use rather than setting it later.

Nodes API

FilterNode allows controlling delegation of getValue/setValue calls

Feb 13 '04; API spec. version: 4.25; affected top-level classes: FilterNode; made by: pnejedly; issues: #31006
From this version, the FilterNode by default delegates all getValue(String) and setValue(String, Object) calls the to the original node. Also, FilterNode now exports two new constants, FilterNode.DELEGATE_SET_VALUE and FilterNode.DELEGATE_GET_VALUE, which can be used to control the delegation of the above mentioned methods.

InplaceEditor interface added to APIs, some deprecations in property sheet rewrite

Jul 16 '03; API spec. version: 4.9; affected top-level classes: PropertySet InplaceEditor PropertyEnv PropertySheet PropertySheetSettings; made by: tboudreau; issues: #29447
New interface that allows a property editor to supply an inline editor for the new property sheet added, as part of merging the new property sheet. A method, registerInplaceEditorFactory() has been added to PropertyEnv to allow modules to supply an inplace editor globally for all properties of a given type; also, Node.Property objects may supply a custom inplace editor instance via the hint "inplaceEditor" in getValue(String).

PropertySheetSettings is an old SystemOption subclass that offers settings that affect the display of the property sheet. These settings are irrelevant to the new property sheet.

In order to provide some performance optimizations, it was necessary to un-final the class PropertyEnv. However, it should be treated as final outside the package - there should never be a need to subclass it. A note has been added to its javadoc to this effect.

A non-normative hint may now be supplied by instances of Node.PropertySet to return a localized display name for a tab which the property sheet should use for displaying that and any other property sets which share the name: "tabName".

New FilterNode constructor that takes Lookup

Apr 7 '03; API spec. version: 4.4; affected top-level classes: FilterNode; made by: jtulach; issues: #32470
Allows users of FilterNode to provide own specific lookup.

Returning value of NodeOp.findActions method refined

Feb 26 '03; affected top-level classes: NodeOp; made by: pzavadsky; issues: #31476
The utility method NodeOp.findActions(Nodep[]) is changed the way it returns an empty array instead of null (for the cases there are no actions found). Also javadoc is refined in that sense.
Compatibility: In fact this is just a slight refinement of the API intoduced by 3.29 change.

Added method Node.Property.isDefaultValue

Nov 8 '02; API spec. version: 3.19; affected top-level classes: Node; made by: dstrupl
Method public boolean isDefaultValue() has been added to class Node.Property. The idea behind this is to visually mark modified properties in the property sheet. If the method returns false it means that the value has been modified by the user and visual feedback will be shown. The reason why the default impl is returning true is to make the old properties (properties using previous version of the API) look the same as they did before the change.

Node implements Lookup.Provider

Oct 3 '02; API spec. version: 3.11; affected top-level classes: Node; made by: jtulach; issues: #26790
Node has been extended to provide method getLookup that allows better querying possibilities than the old Node.getCookie method. New constructors have been provided to allow to pass a Lookup instance to newly created node. In such case Node.getCookie delegates to the provided instance, otherwise Node.getLookup delegates to Node.getCookie content.

New method setChildren() in Node

Jul 15 '02; API spec. version: 3.1; affected top-level classes: Node; made by: phrebejk
Node has new method setChildren(Children) which allows to change the Children of given Node. Node also fires new PropertyChangeEvent(PROP_LEAF) whenever changing children from non-LEAF to LEAF and vice-versa.

Added Children.getNodes(boolean optimalResult)

May 2 '02; API spec. version: 2.17; affected top-level classes: Children; made by: pnejedly
Added an additional getNodes() method when the API user can specify whether he need the most right result. The method is needed for code-based navigation through nodes, like scripting, and for testability. SPI implementors can implement it better.

Nodes can be declared through layers, manifest declaration deprecated

Apr 24 '02; API spec. version: 2.16; made by: dsimonek; issues: #19609
Added possibility to define Environment, Runtime and Root nodes through layer instead of manifest declaration. Manifest declaration is now deprecated.

It is impossible to remove CookieSet.Factory from CookieSet

Feb 28 '02; API spec. version: 2.6; affected top-level classes: CookieSet; made by: dstrupl; issues: #15373
The API for CookieSet was not symmetrical. You could add factories but there was no way to remove them.

Method changing original Node added into FilterNode and FilterNode.Children

Oct 16 '01; API spec. version: 1.39; affected top-level classes: FilterNode; made by: phrebejk; issues: #12048
Method protected final void changeOriginal( Node original, boolean ) and protected final void changeOriginal( Node original added to the class FilterNode and FilterNode.Children. The methods allow to change the Node resp. Children the FilterNode resp. FilterNode.Children delegates to. For more detailed information please see the Javadoc of the methods.

Added Index.Support.showIndexedCustomizer

Oct 11 '01; API spec. version: 1.37; affected top-level classes: Index IndexedCustomizer; made by: jglick; issues: #9323
The static method Index.Support.showIndexedCustomizer(Index) was added to provide a simpler way of displaying a dialog to reorder a set of nodes based on an index cookie. Unlike direct use of the IndexedCustomizer dialog, it interacts smoothly with the IDE's window system.
Compatibility: Code using IndexedCustomizer directly (as a dialog) should consider using the new method instead.

Method for checking PropertyChangeListeners on Node added

Oct 8 '01; API spec. version: 1.36; affected top-level classes: Node; made by: phrebejk; issues: #15495
Method protected final boolean hasPropertyChangeListeners() added to the class Node. Method returns true if at least one PropertyChangeListener is attached to the Node. At the same time changes were made to optimize the number of attached listeners so calling this method should have some information value.

AbstractNode.cookieSet protected, not public

May 19 '01; affected top-level classes: AbstractNode; made by: jglick
getCookieSet now protected, not public. Logically it should never have been public, since each object is responsible for providing its own set of cookies as it sees fit, and making it possible for anyone to retrieve and modify its cookie set without its explicit permission violates this modularity. Also setCookieSet deprecated.
Compatibility: Subclasses of the node should have the responsibility of adding or removing cookies. See further notes under MultiDataObject.
Binary-compatible

Children.Keys.createNodes can be null

Mar 15 '01; affected top-level classes: Children; made by: jtulach
createNodes(Object key) can now return null if the key should have no nodes to represent it. The purpose is to reduce the number of useless created objects.

Index.KeyChildren.createIndex protected

Mar 13 '01; affected top-level classes: Index
Method createIndex made protected.

May provide special lock for index implementations

Mar 6 '01; affected top-level classes: Index
Added method protected Index.KeyChildren.lock() which returns an object that is used as a synchronization lock when working the the list object provided in constructor.

Properties and property sets may have help

Jan 30 '01; affected top-level classes: Node; made by: jglick
Node.PropertySet and Node.Property may now have the FeatureDescriptor property helpID set on them (to a String) help ID) which may be used in the property sheet.

Creation of popup menus handle duplicate actions

Aug 9 '00; affected top-level classes: NodeOp
Changed method findContextMenuImpl. In case of constructing menu from node which for some reason has more than one occurrence of the same SystemAction no menu item was created. Now one menu item will be created for such an action, where the first occurrence is taken into account.

BeanChildren changed superclass

Jun 23 '00; affected top-level classes: BeanChildren
Changed superclass from Children.Map to Children.Keys.
Compatibility: Any subclasses which used the following methods will be broken: There were no known subclasses of BeanChildren (it is rarely used at all).

Added Index.KeyChildren

May 2 '00; affected top-level classes: Index
New class that should simplify displaying and reordering of nodes representing java.util.List. Automatically provide implementation of Index to reorder content of the list.

NodeOp.setDefaultActions removed

May 2 '00; affected top-level classes: NodeOp
setDefaultActions deprecated.
Compatibility: First removed, later re-added but deprecated in trunk and boston. Only technically incompatible: could always only be called once, otherwise a SecurityException would be thrown.

Default node handle stores only direct parent

Mar 9 '00; affected top-level classes: DefaultHandle; made by: jglick
DefaultHandle rewritten. Now stores just handle of direct parent, so that intervening nodes have the opportunity to supply their own handles.
Compatibility: It never actually worked before anyway; no module could have successfully used the previous behavior and be broken by the change.

Options API

Directly adding or removing options is deprecated

Apr 25 '01; affected top-level classes: ControlPanel
Methods ControlPanel.add(SystemOption) and ControlPanel.remove(SystemOption) are deprecated now.
Compatibility: Their functionality can be obtained by using a declaration in a manifest file.

ContextSystemOption.beanContext changed type

Feb 25 '00; affected top-level classes: ContextSystemOption
Protected field beanContext has changed type. The previous type was an inaccessible class, which was an API bug; it is now the public superclass.
Compatibility: Should be source-compatible. Binary-incompatible for subclasses of ContextSystemOption directly accessing this field; but use of this field is probably unnecessary as addOption and removeOption are the normal public methods to manipulate the children. As of May 22 '01 the field is deprecated.

Services & Lookup API

Lookups.exclude added to simplify writing of lookups that filter content of other lookups

Jan 14 '05; API spec. version: 5.4; affected top-level classes: Lookups; made by: jtulach; issues: #53058

New method that takes lookup and set of classes and return new lookup which contains everything from the original one except instances of the specified classes has been added.

CloneableEditorSupport.notifyModified is called only on first modification

Jan 14 '05; API spec. version: 5.4; affected top-level classes: CloneableEditorSupport; made by: jtulach; issues: #52493

It has been found that CloneableEditorSupport.notifyModified is called more often than it should. It used to be called after every keystroke, which is bad, as its return value could not be honored - it is not possible to prevent modification when the document is already modified. Now the method is called only on first modification of the document and if it returns false, the modification is not allowed.
This may be incompatible for clients that relied on the often calls. Such clients need to be fixed.

Added ability to order items in META-INF/services/ lookup

May 9 '04; API spec. version: 4.34; affected top-level classes: MetaInfServicesLookup; made by: dkonecny; issues: #41606
Items in META-INF/services/ lookup can be followed by advisory "position" attribute. The resulting lookup will list first items with lower position value. Items without position attribute will be listed last. See documentation for more details on format.

Support for XML settings fully modularized

Mar 19 '04; API spec. version: 4.26; made by: jglick

Some time ago (NetBeans 3.4), a module called the Settings API was created to handle persistent settings in customizable formats. The built-in support for -//NetBeans//DTD Session settings 1.0//EN (i.e., *.settings files) was moved to that module and client modules were encouraged to depend on it; but a copy remained in the core just in case. The redundant code has now been removed so anyone using *.settings files should declare in their manifest:

OpenIDE-Module-Module-Dependencies: org.netbeans.modules.settings/1 > 1.4

Failure to do so might result in the settings module being disabled or missing, which would prevent *.settings files from functioning.


Compatibility:

Modules using XML settings files should declare a dependency on the separated module in order to guarantee that the functionality will work.

New lookupItem() method in Lookups

Jul 9 '03; API spec. version: 4.8; affected top-level classes: Lookups; made by: vstejskal
New method that returns Lookup.Item implementation for given instance and key identifying that instance in the lookup. This method is useful when writing Looks which need to return some cookies (Collection of Lookup.Items).

New method Lookups.metaInfServices

Feb 5 '03; API spec. version: 3.35; affected top-level classes: Lookups; made by: dstrupl; issues: #29126
A lookup that implements the JDK1.3 JAR services mechanism and delegates to META-INF/services/name.of.class files. This lookup was (is) used by core and the core had to use reflection to create an instance. Moreover can be usefull for module authors and in standalone library.

Folder lookup may be serialized

Jan 7 '03; API spec. version: 3.27; affected top-level classes: FolderLookup AbstractLookup ProxyLookup; made by: jglick; issues: #20190
To implement lookup caching, some lookup implementations are now serializable: AbstractLookup as well as FolderLookup's lookup. ProxyLookup has a protected subclass constructor permitting subclasses to be serializable.
Compatibility: Modules which rely on a data object under Services/ gaining or losing InstanceCookie between sessions may not work correctly with the cache. This is probably very rare.

ErrorManager.isNotifiable added

Nov 3 '02; API spec. version: 3.18; affected top-level classes: ErrorManager; made by: jglick; issues: #24056
The method ErrorManager.isNotifiable was added to capture the fact that an error manager implementation might be more aggressive about displaying stack traces than log messages.
Compatibility: Existing code which assumes (incorrectly) that isLoggable can be used for this purpose, or which calls notify at a low level such as INFORMATIONAL without first checking isNotifiable for efficiency, should be revised.

New method Lookups.proxy

Sep 20 '02; API spec. version: 3.9; affected top-level classes: Lookups; made by: dstrupl; issues: #27425
Creates a lookup that delegates to another one but that one can change from time to time. The returned lookup checks every time somebody calls lookup or lookupItem method whether the provider still returns the same lookup. If not, it updates state of all Lookup.Results that it created (and that still exists).

Modules can specify the content of Lookup.getDefault in META-INF/services

Jul 22 '02; API spec. version: 3.3; made by: jtulach
The content of Lookup.getDefault() can be specified by a standard JDK registration mechanism, using JARs' META-INF/services directory. This is suitable for services that do not change, do not require user modification and that need to be ready soon during initialization of the system. For other usecases it is still better to continue to use module layer registration.

TopManager's getters deprecated

Jul 22 '02; API spec. version: 3.3; affected top-level classes: TopManager; made by: jtulach
Getters in TopManager (methods that take no arguments and return a value like getPlaces, getLoaderPool, etc.) have been deprecated in favor of using Lookup. So instead of calling TopManager.getDefault().getLoaderPool() the suggested way is to Lookup.getDefault().lookup (DataLoaderPool.class).

Added org.openide.util.lookup.Lookups

May 28 '02; API spec. version: 2.21; affected top-level classes: Lookups; made by: dstrupl; issues: #20550
New utility class added. The class cannot be instantiated and contains following static methods:

public static Lookup singleton(Object objectToLookup);
public static Lookup fixed(Object[] objectsToLookup);
public static Lookup fixed(Object[] keys, InstanceContent.Convertor convertor);
The methods return an instance of simple lookup implementation that holds the objects passed a parameter.

Enhanced usage of ProxyLookup & AbstractLookup.Content

Aug 18 '01; API spec. version: 1.31; affected top-level classes: AbstractLookup ProxyLookup; made by: jtulach
AbstractLookup.Content made public to allow its usage for objects that do not subclass AbstractLookup. ProxyLookup.beforeLookup added so subclasses can update themselves (call setLookups (...)) before the actual lookup is performed.

Changes in access protection of proxy lookup

Jul 8 '01; API spec. version: 1.19; affected top-level classes: ProxyLookup
ProxyLookup.setLookups made protected instead of public so nobody can misuse the method except the creator of the object and ProxyLookup.getLookups added. ProxyLookup made non final.
Compatibility: Changes to newly added feature.

Lookup service providers package created

Jun 1 '01; API spec. version: 1.9; affected top-level classes: AbstractLookup ProxyLookup; affected packages: org.openide.util.lookup; made by: jtulach
Package org.openide.util.lookup created, should hold SPI interfaces for lookup. Initially filled with AbstractLookup which introduces AbstractLookup.Pair and with ProxyLookup.

Added lookup items and support APIs

May 25 '01; API spec. version: 1.8; affected top-level classes: Lookup; made by: jtulach
Lookup enhanced. Interface Lookup.Item and additional methods to access it also added.

Lookup system introduced

Mar 1 '01; affected top-level classes: Lookup LookupEvent LookupListener; made by: jtulach
Better version of Lookup introduced. There is a org.openide.util.Lookup with bunch of inner classes and org.openide.util.LookupListener and org.openide.util.LookupEvent.

ServiceType.createClone added

Nov 30 '00; affected top-level classes: ServiceType
public final ServiceType createClone() added.
Compatibility: Subclasses are encouraged to implement Cloneable.

"Welcome" folder available

Jul 19 '00; affected top-level classes: Places
welcome() added to Places.Folders.

Cannot set default TopManager

Mar 16 '00; affected top-level classes: TopManager
TopManager.setDefault deprecated.
Compatibility: Mar 16 '00 removed, later re-added but deprecated in trunk and boston. An incompatible change only in the technical sense: it was called by the core implementation at startup, and any further attempts to call it would also result in a SecurityException anyway.

Instance content simplifies creation of lookups

(date unknown); API spec. version: 1.25; affected top-level classes: AbstractLookup InstanceContent; made by: jtulach
Added AbstractLookup.Content which can be passed to an abstract lookup in its constructor and used to control the contents easily. Also InstanceLookup provides the common easy implementation.

Utilities API

New method task.waitFinished(timeout) added

Nov 2 '04; API spec. version: 5.0; affected top-level classes: Task RequestProcessor; made by: jtulach; issues: #16849

It is not possible to wait for a limited amount of time for completion of any task. The RequestProcessor.Task version is optimized, the Task version ensures that the sematics will be compatible for all subclasses, even they did not know about the method at all.

Added field OS_FREEBSD to Utilities

Oct 29 '04; API spec. version: 4.50; affected top-level classes: Utilities; made by: jrechtacek

FreeBSD was not recognized as Unix OS. Utilities has been enlarged with new field OS_FREEBSD, part of OS Unix mask. Utilities.isUnix() now returns true for applications run on FreeBSD.

Added Mutex.isReadAccess() and Mutex.isWriteAcess()

Sep 30 '04; API spec. version: 4.48; affected top-level classes: Mutex; made by: jtulach; issues: #49459
A thread can now check whether read or write access on a Mutex has already been granted to it and use it to decide whether it is safe to perform certain operations or delay them.

Added SharedClassObject.reset method to allow subclasses to implement reset correctly

Sep 2 '04; API spec. version: 4.46; affected top-level classes: SharedClassObject SystemOption; made by: jtulach; issues: #20962
The new SharedClassObject.reset method is called by the infrastructure in moments when an original (at the time of start) state of an option or any other SharedClassObject is requested. Interested subclasses are free to implement any kind of clean they need. The SystemOption provides a default implementation based on fired property changed events, so its correctly written subclasses do not need to do anything.

enum package deprecated and replaced by Enumerations factory class

Jun 7 '04; API spec. version: 4.37; affected top-level classes: Enumerations; made by: jtulach; issues: #41166
enum is a keyword in JDK 1.5 and as such it should not be used. That is the reason why we had to deprecated our org.openide.util.enum package. We are providing replacements of the original classes in form of factory methods org.openide.util.Enumerations.

Added methods to HtmlBrowser

May 7 '04; API spec. version: 4.27; affected top-level classes: HtmlBrowser; made by: jglick

The methods getBrowserImpl and getBrowserComponent were added to HtmlBrowser for use by core.

Support for complicated listeners

Sep 2 '03; API spec. version: 4.12; affected top-level classes: WeakListeners; made by: jtulach; issues: #35726
Improved support for hierarchic listeners (aka NamingListener vs. ObjectChangeListener from javax.naming.event package).

Global action context as Lookup

Aug 12 '03; API spec. version: 4.10; affected top-level classes: ContextGlobalProvider Utilities; made by: jtulach; issues: #34758
As part of the work on separation of openide.jar into smaller parts a new interface ContextGlobalProvider and new method in utilities Utilities.actionsGlobalContext() had to be added in order to separate the implementation of actions like CallbackSystemAction and NodeAction from their dependency on window system.

Old WeakListener replaced by WeakListeners class

Aug 12 '03; API spec. version: 4.10; affected top-level classes: WeakListener WeakListeners FileUtil NodeOp; made by: jtulach; issues: #34758

As part of the work on separation of openide.jar into smaller parts the WeakListener had to be deprecated as it referenced too many classes around and replaced by more general WeakListeners factory class that provides a generic create method and specialized factory methods just for JDK own interfaces.

Also few factory methods were spread into appropriate packages like FileUtil.weakFileChangeListener and NodeOp.weakNodeListener.

Removal of WeakListener.operation method

Apr 2 '03; API spec. version: 4.3; affected top-level classes: WeakListener; made by: jtulach; issues: #32143
WeakListener.operation method has been removed. Instead of it one can use the generic WeakListener.create or DataLoaderPool.createWeakOperationListener.

New method to find HelpCtx

Apr 2 '03; API spec. version: 4.3; affected top-level classes: HelpCtx; made by: jtulach; issues: #32143
A new method for finding HelpCtx (HelpCtx.findHelp(Object)) has been added to replace the old InstanceSupport.findHelp that has been separated out from the openide.jar.

Retrofit of interface Cancellable into RequestProcessor.Task

Mar 14 '03; API spec. version: 4.1; affected top-level classes: RequestProcessor; made by: dsimonek
RequestProcessor.Task was made to implement util.Cancellable interface. No change of implementation at all, RP.Task already had method from interface implemented, this is just a logical retrofit.

org.openide.awt.Mnemonics added

Feb 10 '03; API spec. version: 3.37; affected top-level classes: Mnemonics Actions; made by: jglick; issues: #26640
The class org.openide.awt.Mnemonics was introduced as a centralized and convenient place to set localized text for a variety of components while properly handling mnemonics in a variety of international scripts.

Support for asynchronous init of UI components

Feb 5 '03; API spec. version: 3.36; affected top-level classes: AsyncGUIJob Cancellable Utilities; made by: dsimonek; issues: #30604

Performance related API addition, allows clients to write asynchronous initialization of UI components easily by providing AsyncGUIJob implementation. Also introduced Cancellable ability. Utilities.attachInitJob couples init job with target UI component.

Improved method for topological sort

Jan 10 '03; API spec. version: 3.30; affected top-level classes: Utilities TopologicalSortException; made by: jglick; issues: #27286
The method Utilities.topologicalSort was added. It should be faster and probably more robust than the older partialSort method, which required a Comparator; the new method requires a list of ordering constraints, which should be O(n + m) rather than O(n2) (where n is the number of nodes to sort and m the number of edges). If the graph is not a DAG a TopologicalSortException is thrown containing description of unsortable parts of the graph and the best partitial sort that fullfils as much of ordering constraints as possible. These information can be used for error reporting and recovery.

Utilities.toFile and toURL added

Dec 24 '02; API spec. version: 3.26; affected top-level classes: Utilities; made by: jglick; issues: #29711
Two new utility methods were added which permit easy interconversion between files and URLs using the file protocol. This task is easy and safe under JDK 1.4, yet JDK 1.3 lacks a single call to do these tasks which will handle unusual characters in file names, especially hash marks. The utility methods use the JDK 1.4 variants when possible, else use specially coded versions of the JDK 1.3 variants which handle hash marks.
Compatibility: Existing code which uses the JDK 1.3 method File.toURL should be examined, as it may be better to call Utilities.toURL. Similarly, code which gets the path from a URL and calls the File constructor may need to be changed to call Utilities.toFile. Such changes should improve robustness of code when used in strangely named directories.

Can load localized cached images

Dec 15 '02; API spec. version: 3.24; affected top-level classes: Utilities SystemAction; made by: jglick; issues: #22156
Added method Utilities.loadImage(String, boolean) which works like Utilities.loadImage(String) except that it will search for localized images. Also SystemAction.getIcon() will load a localized image now if there is one.

org.openide.util.Utilities.createProgressCursor added

Dec 2 '02; API spec. version: 3.23; affected top-level classes: Utilities; made by: dsimonek
Method java.awt.Cursor createProgressCursor(java.awt.Component comp) was added into Utilities class. Method creates mouse cursor suitable for components which are busy, but still reacts to the input events. (don't block UI).

Added interface HelpCtx.Provider

Nov 11 '02; API spec. version: 3.20; affected top-level classes: HelpCtx DialogDescriptor ServiceType DataObject Node SystemOption SystemAction NewType PasteType TopComponent; made by: pnejedly
An interface HelpCtx.Provider with one method getHelpCtx was added and the logic in HelpCtx.findHelp and InstanceSupport.findHelp was extended to take this interface into accout. Various classes with existing getHelpCtx method were retrofitted to implement this interface.

Utilities.activeReferenceQueue()

Oct 7 '02; API spec. version: 3.11; affected top-level classes: Utilities; made by: jtulach; issues: #27238
Active java.util.ref.ReferenceQueue that polls for all enqued instances (that should implement Runnable) and invokes their run method to do actual cleanup.

New interface Lookup.Provider

Aug 19 '02; API spec. version: 3.6; affected top-level classes: Lookup; made by: dstrupl; issues: #26275
An object can have method getLookup if there is a need to provide local loookup instance. To recognize objects with such a facility we are introducing interface Lookup.Provider with only one method: getLookup.

Deprecation of parts of MouseUtils.PopupMenuAdapter

Aug 6 '02; API spec. version: 3.4; made by: dsimonek
Constructor MouseUtils.PopupMenuAdapter(int) and public static field DEFAULT_THESHOLD are now obsoleted, performs no action. PopupMenuAdapter now delegates to isPopupTrigger crossplatform call, should be constructed via default constructor.

Added RequestProcessor.getDefault(), deprecated static methods in RequestProcessor

Apr 15 '02; API spec. version: 2.12; affected top-level classes: RequestProcessor; made by: pnejedly
Sharing of singlethreaded RequestProcessor.DEFAULT through the static methods is inherently deadlock-prone, so the methods are deprecated and their usage should phase out in the favor of using private RequestProcessors or the shared multithreaded instance available through the new static method RequestProcessor.getDefault().

Use Lookup to register HttpServer.Impl's

Apr 12 '02; API spec. version: 2.11; affected top-level classes: HttpServer; made by: rkubacki; issues: #14501
Methods HttpServer.registerServer and HttpServer.deregisterServer are deprecated. Lookup is preferred way how to find HttpServer.Impl.

Added helper methods to aid module developers to write code which works correctly with multiple monitors

Feb 26 '02; API spec. version: 2.5; affected top-level classes: Utilities; made by: ttran; issues: #20882
The added methods are

public static Rectangle getUsableScreenBounds();
public static Rectangle getUsableScreenBounds(GraphicsConfiguration gconf);
public static Rectangle findCenterBounds(Dimension componentSize);
One should use these methods instead of calling Toolkit.getScreenSize(). For the same reason Utilities.getScreenSize() is now deprecated.

Added accessibility method ErrorManager.getDefault () that always returns non-null values

Jan 17 '02; API spec. version: 2.1; affected top-level classes: ErrorManager; made by: jtulach; issues: #16854

This method allows independent libraries (nodes, filesystems, utilities) to use the ErrorManager without testing if it is really present. Just call ErrorManager.getDefault () and you can be sure that a valid instance will be returned.

Also TopManager.getErrorManager is no longer useful (see change) and is now deprecated. It is also not abstract as it just delegates. notifyException is similarly deprecated.

Permit privileged access to mutexes to avoid inner classes

Jun 27 '01; API spec. version: 1.17; affected top-level classes: Mutex
Added a new inner class and a constructor that takes an instance of that inner class as a parameter. The inner class is Privileged. Through its public methods one can enter internal states of the Mutex to which it was passed.

Method setSource made protected in WeakListener

May 12 '01; API spec. version: 1.34; affected top-level classes: WeakListener; made by: anovak; issues: #11519
This method should help in a situation when the delegated listener is gc'ed and the event source does not fire any events for a long time. If the event source will be set, then such WeakListeners will be collected on 25s basis.

Create your own toolbar pool

Apr 27 '01; API spec. version: 1.5; affected top-level classes: ToolbarPool
New constructor of ToolbarPool. Now any module can create its own ToolbarPool and use it.

More flexibility in controlling running of tasks

Apr 27 '01; API spec. version: 1.5; affected top-level classes: Task
Task has new protected constructor for subclasses and methods notifyRunning () and also non-final version of waitFinished ().

Icon & image cache manager added

Mar 9 '01; affected top-level classes: Utilities
Loading icons and images can be done through Utilities.loadImage() that uses cache to avoid duplicate loading of images. mergeImages uses the cache, too, for the results of merge.

HTML browser factory deprecated, use lookup instead

Mar 8 '01; affected top-level classes: HtmlBrowser
HtmlBrower.setFactory() is deprecated and its functionality can be obtained by registering HtmlBrowser.Impl in Lookup folder. This allows to register more browsers in IDE, create customizable browsers and switch between them.

Special exception thrown to request interaction with user

Mar 5 '01; affected top-level classes: UserQuestionException
Added the first revision. This exception is thrown when a process is about to perform some action that requires user confirmation.

Support for merging icons added

Jan 25 '01; affected top-level classes: Utilities
Added method mergeImages(Image image1, Image image2, int x, int y) for merging images.

Can get a list of localizing suffixes

Jan 1 '01; affected top-level classes: NbBundle; made by: jglick
getLocalizingSuffixes added.

Updated DEC -> Compaq OS names

Dec 15 '00; affected top-level classes: Utilities
Operating system OS_DEC changed to OS_TRU64, and added OS_VMS.

Display names for toolbars

Dec 8 '00; affected top-level classes: Toolbar
Added display name support for Toolbar class. New constructors and methods:

ErrorManager.isLoggable added

Dec 2 '00; affected top-level classes: ErrorManager
isLoggable(int severity) added to ErrorManager.

Can create custom weak listeners

Nov 1 '00; affected top-level classes: WeakListener
Added public method create for creating user specified WeakListeners, not only default ones.

Default filter enumeration accepts any non-null value

Oct 19 '00; affected top-level classes: FilterEnumeration
FilterEnumeration is no longer abstract. The default implementation accepts all non-null values.

Can find localized variants of extensionless resources

Oct 6 '00; affected top-level classes: NbBundle; made by: jglick
getLocalizedFile now accepts null extensions to suppress the addition of a dot to the resource name.

Logging and hierarchy support added to ErrorManager

Aug 18 '00; affected top-level classes: ErrorManager
getInstance(String name), log(int severity, String s), and log(String s) added to ErrorManager.

Proper break iterators used when wrapping text strings

Aug 11 '00; affected top-level classes: Utilities
Added method wrapString which uses BreakIterator instead of a flag and a heuristic solution. wrapString(String,int,boolean,boolean) deprecated.
Compatibility: Deprecated version first removed, later re-added with deprecation in the trunk.

Added search for branded variants as part of locale lookup

Jul 20 '00; affected top-level classes: NbBundle; made by: jglick
Added methods getBranding and setBranding. Normally these should only be called by the core implementation during startup, not module authors. All methods to look up localized objects may now also search for branded variants, if applicable.

Using official Apache regexp package

Jul 17 '00; affected top-level classes: CharacterArrayCharacterIterator RE ReaderCharacterIterator RECompiler RESyntaxException StreamCharacterIterator StringCharacterIterator
CharacterArrayCharacterIterator, RE, ReaderCharacterIterator, RECompiler, RESyntaxException, StreamCharacterIterator, and StringCharacterIterator removed. Preferred regexp classes are those from core/release/lib/ext/regexp.jar: org.apache.regexp.*.
Compatibility: The transition should be easy as the removed classes were based on the Apache regexp package. The Apache library will be tracked in the future (at least until the APIs standardize on JDK 1.4+ and can use java.util.regexp).

Cleaned up accidentally public members of Toolbar

Apr 19 '00; affected top-level classes: Toolbar
Several public fields removed from DnDEvent (dx, dy, name, and type); public methods serving only to implement MouseInputListener have been removed (as well as the implements-clause for this interface); BASIC_HEIGHT now final (it was static and only intended as a constant, so this is not incompatible).
Compatibility: First broken, later restored binary compatibility in trunk and boston. It is possible but unlikely that the first two changes could cause incompatibilities; normally only the core implementation uses the Toolbar class anyway.
Binary-compatible

Classloader finder for NbBundle is obsolete

Apr 11 '00; affected top-level classes: NbBundle
NbBundle.ClassLoaderFinder and NbBundle.setClassLoaderFinder have been deprecated; they were quite obsolete.
Compatibility: First removed, later re-added but deprecated in trunk and boston. No one outside of NbBundle and the core implementation should have been using these classes to begin with.

Can request to use textual icons for actions

Mar 23 '00; affected top-level classes: Actions; made by: jglick
ButtonBridge has protected method with which it is possible to specify whether or not to use textual icons rather than empty ones if an action has no icon.

SafeException is a FoldingIOException

Mar 9 '00; affected top-level classes: SafeException
Now extends FoldingIOException, meaning that it should delegate the detail message, etc. to the original.

Window System API

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 TopComponents 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: 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:

OK button in notify dialog can be turned off

Apr 11 '01; affected top-level classes: 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:

Wizard panels can refuse to go forward

Jan 15 '01; affected top-level classes: 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: 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: InputOutput
Several members of this interface were technically public before and are now deprecated: 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.

XML API

XML attribute and hexadecimal utilities modified

Oct 18 '01; API spec. version: 1.40; affected top-level classes: XMLUtil; issues: #16629
toAttribute(String, char, boolean) method replaced by toAttributeValue(String) and toContent(String, boolean) method replaced by toElementContent(String). These new simplified signatures and particular semantics should cover 99% usage of previous ones. See the original additions.
Compatibility: The original versions of these methods were not in any public release.

XML attribute and hexadecimal utilities added

Aug 8 '01; API spec. version: 1.29; affected top-level classes: XMLUtil
toAttribute(String, char, boolean), toContent(String, boolean), toHex(byte[], int, int) and fromHex(char[], int, int) methods added.

Direct registration of XML catalog entries deprecated

Mar 3 '01; affected top-level classes: XMLDataObject; made by: pkuzel
Deprecated registerCatalogEntry() methods.

Independent XML API created

Mar 3 '01; affected top-level classes: XMLUtil EntityCatalog; affected packages: org.openide.xml; made by: pkuzel
XMLUtil utility class introduced. The class provides set of static methods useful for XML processing. EntityCatalog class introduced. It provides access to entity mapping registrations provided by installed modules.

Moved XML static methods into separate inner class

Feb 16 '01; affected top-level classes: XMLDataObject; made by: pkuzel

Compatibility: XMLDataObject.Util itself deprecated on Mar 3 '01 in favor of XMLUtil.

Updated DOM to level 2 and added document writability

Jan 26 '01; affected top-level classes: XMLDataObject; made by: pkuzel

Compatibility: Any code implementing DOM interfaces could be broken by the level 2 interfaces. Clients of the DOM API should be unaffected.

Can register entity resolvers

Dec 20 '00; affected top-level classes: XMLDataObject
addEntityResolver and removeEntityResolver added. These methods allow a user to develop own implementation of functionality similar to registerCatalogEntry. E.g. a user can register EntityResolver that reads data from persistent catalog avoiding bunch of calls to the register method in module restore code.
Compatibility: Subsequently deprecated on Mar 3 '01 by EntityCatalog.

Uncategorized changes

API separation, phase II

Nov 1 '02; API spec. version: 3.17; affected top-level classes: AbstractCompileAction BuildAction BuildAllAction CleanAction CleanAllAction CompileAction CompileAllAction ExecuteAction ArgumentsCookie CompilerCookie ExecCookie FileUtil CompilerSupport ExecutionSupport IOProvider InputOutput OutputEvent OutputListener 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.

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:

Other minor changes:


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: DialogDisplayer LifecycleManager Places TopManager AddWatchAction BuildProjectAction CompileProjectAction DebugProjectAction ExecuteProjectAction FinishDebuggerAction GoAction GoToCursorAction HelpAction OpenProjectAction SaveProjectAction StartDebuggerAction StepOutAction ToggleBreakpointAction TraceIntoAction TraceOverAction HtmlBrowser StatusDisplayer DebuggerCookie ElementCookie ProjectCookie SourceCookie ChoicePropertyEditor DirectoryOnlyEditor ElementFormatEditor ExternalCompiler FileEditor FileOnlyEditor IconEditor IdentifierArrayEditor MethodParameterArrayEditor ModifierEditor StringArrayCustomEditor StringArrayCustomizable StringArrayEditor TypeEditor DataObjectFilter ExecSupport ExecutionSupport ExtensionListEditor RepositoryNodeFactory IllegalModuleException ManifestSection ModuleDescription NodeOperation ControlPanel ProjectSensitiveAction 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 May 4 2005.  |  Portions Copyright 1997-2005 Sun Microsystems, Inc. All rights reserved.