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.
release41
branch was made on Apr 03 '05 for use in the NetBeans 4.1 release.
Specification versions: 6.0 begins after this point.
release40
branch was made on Nov 01 '04 for use in the NetBeans 4.0 release.
Specification versions: 5.0 begins after this point.
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.
invokeWhenUIReady
role
parameter to TopComponent
Registration
annotation.
ExternalDropHandler
abstract class.
TopComponent.getHtmlDisplayName
,
TopComponent.setHtmlDisplayName
and
WindowManager.topComponentHtmlDisplayNameChanged
methods.
TopComponent
ability to bring their parent
Window
to front of other windows.
InputOutput
removed
These API specification versions may be used to indicate that a module requires a certain API feature in order to function. For example, if you see here a feature you need which is labelled 1.20, your manifest should contain in its main attributes the line:
OpenIDE-Module-Module-Dependencies: org.openide.windows > 1.20
invokeWhenUIReady
role
parameter to TopComponent
Registration
annotation.
ExternalDropHandler
abstract class.
TopComponent.getHtmlDisplayName
,
TopComponent.setHtmlDisplayName
and
WindowManager.topComponentHtmlDisplayNameChanged
methods.
TopComponent
ability to bring their parent
Window
to front of other windows.
org.openide.actions.AbstractCompileAction
org.openide.actions.AddWatchAction
org.openide.cookies.ArgumentsCookie
org.openide.actions.BuildAction
org.openide.actions.BuildAllAction
org.openide.actions.BuildProjectAction
org.openide.explorer.propertysheet.editors.ChoicePropertyEditor
org.openide.actions.CleanAction
org.openide.actions.CleanAllAction
org.openide.windows.CloneableOpenSupport
org.openide.windows.CloneableOpenSupportRedirector
org.openide.windows.CloneableTopComponent
org.openide.actions.CompileAction
org.openide.actions.CompileAllAction
org.openide.actions.CompileProjectAction
org.openide.cookies.CompilerCookie
org.openide.loaders.CompilerSupport
org.openide.options.ControlPanel
org.openide.loaders.DataObjectFilter
org.openide.cookies.DebuggerCookie
org.openide.actions.DebugProjectAction
org.openide.DialogDisplayer
org.openide.explorer.propertysheet.editors.DirectoryOnlyEditor
org.openide.cookies.ElementCookie
org.openide.explorer.propertysheet.editors.ElementFormatEditor
org.openide.cookies.ExecCookie
org.openide.loaders.ExecSupport
org.openide.actions.ExecuteAction
org.openide.actions.ExecuteProjectAction
org.openide.loaders.ExecutionSupport
org.openide.loaders.ExtensionListEditor
org.openide.explorer.propertysheet.editors.ExternalCompiler
org.openide.windows.ExternalDropHandler
ExternalDropHandler
abstract class.
org.openide.explorer.propertysheet.editors.FileEditor
org.openide.explorer.propertysheet.editors.FileOnlyEditor
org.openide.filesystems.FileUtil
org.openide.actions.FinishDebuggerAction
org.openide.actions.GoAction
org.openide.actions.GoToCursorAction
org.openide.actions.HelpAction
org.openide.awt.HtmlBrowser
org.openide.explorer.propertysheet.editors.IconEditor
org.openide.explorer.propertysheet.editors.IdentifierArrayEditor
org.openide.modules.IllegalModuleException
org.openide.windows.InputOutput
InputOutput
removed
org.openide.windows.IOProvider
org.openide.LifecycleManager
org.openide.modules.ManifestSection
org.openide.explorer.propertysheet.editors.MethodParameterArrayEditor
org.openide.windows.Mode
org.openide.windows.ModeSelector
org.openide.windows.ModeUtilities
org.openide.explorer.propertysheet.editors.ModifierEditor
org.openide.modules.ModuleDescription
org.openide.nodes.NodeOperation
org.openide.NotifyDescriptor
org.openide.windows.OnShowing
invokeWhenUIReady
org.openide.actions.OpenProjectAction
org.openide.windows.OutputEvent
org.openide.windows.OutputListener
org.openide.windows.OutputWriter
org.openide.Places
org.openide.cookies.ProjectCookie
org.openide.util.actions.ProjectSensitiveAction
org.openide.loaders.RepositoryNodeFactory
org.openide.windows.RetainLocation
org.openide.actions.SaveProjectAction
org.openide.cookies.SourceCookie
org.openide.actions.StartDebuggerAction
org.openide.awt.StatusDisplayer
org.openide.actions.StepOutAction
org.openide.explorer.propertysheet.editors.StringArrayCustomEditor
org.openide.explorer.propertysheet.editors.StringArrayCustomizable
org.openide.explorer.propertysheet.editors.StringArrayEditor
org.openide.actions.ToggleBreakpointAction
org.openide.windows.TopComponent
role
parameter to TopComponent
Registration
annotation.
TopComponent.getHtmlDisplayName
,
TopComponent.setHtmlDisplayName
and
WindowManager.topComponentHtmlDisplayNameChanged
methods.
TopComponent
ability to bring their parent
Window
to front of other windows.
org.openide.windows.TopComponentGroup
org.openide.TopManager
org.openide.actions.TraceIntoAction
org.openide.actions.TraceOverAction
org.openide.explorer.propertysheet.editors.TypeEditor
org.openide.windows.WindowManager
TopComponent.getHtmlDisplayName
,
TopComponent.setHtmlDisplayName
and
WindowManager.topComponentHtmlDisplayNameChanged
methods.
TopComponent
ability to bring their parent
Window
to front of other windows.
org.openide.windows.WindowSystemEvent
org.openide.windows.WindowSystemListener
org.openide.WizardDescriptor
org.openide.windows.Workspace
Mode
ModeUtilities
WindowManager
; made by: phipma
Plugin implementors can save and restore individual Modes providing scope for custom TopComponent layouts.
ModeSelector
; made by: sdedic
Plugin implementors can direct to-be-opened TopComponents to appropriate Modes or prevent them to open in inappropriate Modes.
CloneableOpenSupport
; made by: vv159170; issues:
#241991
The method is called when CloneableOpenSupportRedirector found another instance of CloneableOpenSupport to open instead the current. It is possible to override afterRedirect in derived classes and handle this situation.
It is possible to override boolean window system properties defined in resource bundle org/netbeans/core/windows/Bundle.properties
with system properties prefixed with "NB.WinSys.". For example property
Mix.Editors.And.Views.Enabled
can be overriden with a command-line switch
-J-DNB.WinSys.Mix.Editors.And.Views.Enabled=false
.
CloneableOpenSupportRedirector
; made by: igor_nikiforov; issues:
#230126
Version of CloneableEditorSupportRedirector which will be called only during opening of document when algorith tries to understand if file is in list of already opened TCs or not. SPI implementers to setup filter on specific requests only... This could minimize number of redirect() calls.
TopComponent
; made by: theofanis; issues:
#228448
The new methods can be used in conjunction with split multiview window, where e.g. the pallette needs to know which two of the available subcomponents are showing and query their lookup.
TopComponent
WindowManager
; made by: saubrecht; issues:
#217509
New method setAttentionHighlight(boolean) in TopComponent class can be used to permanently highlight TopComponent's tab until user activates it.
WindowManager
; made by: saubrecht; issues:
#214854
New methods in WindowManager class:
isTopComponentMinimized()
setTopComponentMinimized()
isTopComponentFloating()
setTopComponentFloating()
invokeWhenUIReady
OnShowing
; made by: jtulach; issues:
#200636
In case you want to execute a code as soon as main window is visible, consider using OnShowing annotation.
There's a new branding property WinSys.CtrlTabSwitching.In.JTable.Enabled
to disable Ctrl+Tab window switching when JTable or JTabbedPane has input focus.
TopComponent
; made by: saubrecht; issues:
#209051
The new method can be used to access for example inner tabs in a multiview window.
TopComponent
; made by: saubrecht; issues:
#209059
The new method can be used to retrieve a short version of TopComponent's display name, i.e. display name that does no include the name of activated Node.
WindowManager
TopComponent
; made by: saubrecht; issues:
#208026
The new method can be used to inform user that some (possibly lengthy)
process is being run in given TopComponent.
By branding of core.windows module it is possible to use plain JTabbedPane
component to display window tabs instead of the custom TabbedContainer.
The property name is WinSys.TabControl.SimpleTabs.Enabled
TopComponent
; made by: saubrecht
PROP_DND_COPY_DISABLED
.
When set to Boolean.TRUE
on a CloneableTopComponent
then
it is not possible to perform copy drag and drop operation with it.
role
parameter to TopComponent
Registration
annotation.
TopComponent
; made by: saubrecht; issues:
#199452
WindowManager
WindowSystemListener
WindowSystemEvent
; made by: saubrecht; issues:
#198859
NbMainWindow.showCustomBackground
in javax.swing.UIManager
. When the property value is TRUE
then the window system will turn off opacity for most of the main window
components - menu bar, toolbars, status bar, sliding bars and the main
desktop area component. That means that the main window background will
be showing through these components. It can be used to paint some watermark
or logo or gradient on the main window background, especially when using
custom main window implementation, see change id reuse.existing.frame.as.the.main.window
TopComponent
; made by: jtulach; issues:
#191407
RetainLocation
; made by: tboudreau; issues:
#168060
org.openide.windows.RetainLocation
which can be applied to TopComponents whose
persistence type is PERSISTENCE_NEVER. There has been a long-term
problem that such components can be defined as singleton components,
and the first time they are opened, they appear in the correct place.
However, on restart or after the first time they are closed, their
persistence information, including the containing Mode, is lost, and
thereafter they open in the editor area.
This patch does not affect the current behavior of such components.
However, if you add this annotation to the component, it will remember
(storage in NbPreferences) the ID of its last known parent mode. A
minor patch to the window system's code for deciding if a Mode should
be persistent causes it to now interpret any Mode containing a
TopComponent annotated with RetainLocation
as being one
it should persist, so that if the user creates a transient Mode by
dragging the window to a new location on screen, the data about that
location is not lost on shutdown.
WindowManager
; made by: saubrecht; issues:
#168060
TopComponent
.
There is a set of new properties defined in resource bundle which platform developers can use to customize the behavior of NetBeans' window system:
The features above can be turned on/off simply by branding of core.windows module.
WindowManager
; made by: saubrecht; issues:
#102174
TopComponent
WindowManager
; made by: dsimonek; issues:
#94604
WindowManager
; made by: saubrecht; issues:
#96338
WindowManager
; made by: dsimonek; issues:
#87009
WindowManager
; made by: dsimonek; issues:
#65431
ExternalDropHandler
abstract class.
ExternalDropHandler
; made by: saubrecht; issues:
#50129
Lookup
to get an
instance of ExternalDropHandler
class. If such an instance
is available then it will be used to check whether the drop can be accepted
(methods canDrop
) and eventually to handle the dropped
object(s) as well - method handleDrop
- for example open
dropped files in editor.
DropTargetListener
s
(for example Projects view or Files view) therefore the ExternalDropHandler
will not be used when dragging over these components.
TopComponent.getHtmlDisplayName
,
TopComponent.setHtmlDisplayName
and
WindowManager.topComponentHtmlDisplayNameChanged
methods.
TopComponent
WindowManager
; made by: dsimonek; issues:
#66777
TopComponent.getHtmlDisplayName
and TopComponent.setHtmlDisplayName
methods was added to allow TopComponent
s to have display
name that contains html tags differentiated from regular display name.
Regular display name should be used for tasks like alphabetical sorting
while html display name is used for labels and titles that support html,
like editor tabs. WindowManager.topComponentHtmlDisplayNameChanged
was also added to let window system implementation know about html
display name change.
TopComponent
ability to bring their parent
Window
to front of other windows.
TopComponent
WindowManager
; issues:
#56277
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()
.
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.
TopComponent
; made by: jtulach; issues:
#38475
TopComponent.associateLookup
to allow
late (in middle of constructor) association of Lookup with
component. This is especially useful in
org.openide.explorer.ExplorerUtils
.
TopComponent
; made by: mslama; issues:
#36916
TopComponent
; made by: jtulach; issues:
#38185
TopComponent
s to provide
their own Lookup and still maintain their contract with
getActivatedNodes
.
WindowManager
; made by: mslama; issues:
#37199
CloneableTopComponent
TopComponent
TopComponentGroup
WindowManager
Workspace
; made by: pzavadsky; issues:
#29836
TopComponent
CloneableTopComponent
; made by: jtulach; issues:
#32143
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
; made by: pzavadsky; issues:
#25824
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.
org.openide.WizardDescriptor
; made by: dkonecny; issues:
#28466
TopComponent
WindowManager
; made by: pzavadsky; issues:
#21618
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).
TopComponent
; made by: dsimonek; issues:
#20153
WindowManager
; made by: dsimonek; issues:
#20942
TopComponent
WindowManager
public void TopComponent.requestVisible()
public void WindowManager.Component.requestVisible()
org.openide.NotifyDescriptor
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.
TopComponent
WindowManager
protected void TopComponent.openNotify()
protected void TopComponent.closeNotify()
protected void WindowManager.componentOpenNotify(TopComponent tc)
protected void WindowManager.componentCloseNotify(TopComponent tc)
org.openide.WizardDescriptor
WizardDescriptor.Panel.readSettings
can throw
IllegalStateException
. This can be used to indicate that data
provided by the previous panels are not OK and that the panel wants the
wizard to go back one panel.
org.openide.WizardDescriptor
((JComponent)WizardDescriptor.current().getComponent()).putClientProperty()
or WizardDescriptor.putProperty()
.
InputOutput
removed
org.openide.windows.InputOutput
InputOutput.Null
InputOutput.NullOutputWriter
InputOutput.nullReader
InputOutput.nullWriter
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.
org.openide.actions.AbstractCompileAction
org.openide.actions.BuildAction
org.openide.actions.BuildAllAction
org.openide.actions.CleanAction
org.openide.actions.CleanAllAction
org.openide.actions.CompileAction
org.openide.actions.CompileAllAction
org.openide.actions.ExecuteAction
org.openide.cookies.ArgumentsCookie
org.openide.cookies.CompilerCookie
org.openide.cookies.ExecCookie
org.openide.filesystems.FileUtil
org.openide.loaders.CompilerSupport
org.openide.loaders.ExecutionSupport
org.openide.windows.IOProvider
org.openide.windows.InputOutput
org.openide.windows.OutputEvent
org.openide.windows.OutputListener
org.openide.windows.OutputWriter
; affected packages: org.openide.compiler
org.openide.execution
; made by: jglick; issues:
#19443
Three sections of the Open APIs were split into new autoload modules.
The module org.openide.compiler
(version 1.0) contains
the Compiler API and some other classes directly related to it.
The module org.openide.execution
(version 1.0) contains
the Execution API and some other classes directly related to it.
The module org.openide.io
(version 1.0) contains
InputOutput
and related classes (formerly part of the
Window System API, and still physically in the
org.openide.windows
package).
New modules wishing to use these APIs must declare regular module dependencies on them. Future changes in these APIs will be documented separately.
Furthermore, modules wishing to use certain services must
OpenIDE-Module-Require
them if appropriate:
org.openide.compiler.CompilationEngine
, in order to
call CompilationEngine.getDefault()
, or safely use
AbstractCompileAction
or one of its subclasses, or
call CompilerJob.start()
, or use
BeanInfo
s for Compiler API classes, etc.
org.openide.execution.ExecutionEngine
, in order to
call ExecutionEngine.getDefault()
, or safely use
ExecuteAction
, or call
Executor.execute(...)
, or use BeanInfo
s
for Execution API classes, etc.
org.openide.windows.IOProvider
, in order to call
IOProvider.getDefault()
.
Other minor changes:
Registration of URL stream handler factories using
NbfsStreamHandlerFactory.register(...)
is deprecated.
Simply create an instance of URLStreamHandlerFactory
and add it to Lookup instead.
The method FileUtil.nbfsURLStreamHandler
was added,
but is not intended for use by modules.
All uses of ExecInfo
are deprecated as they abuse the
distinction between Filesystems and the user classpath. Use and
override only Executor.execute(DataObject)
. Similarly,
ThreadExecutor
is deprecated for the time being
because it suffers from similar problems.
Direct use of NbfsURLConnection
is deprecated in favor
of the more general URLMapper
from the Filesystems
API.
Package dependencies on
org.netbeans.lib.terminalemulator
must be replaced
with module dependencies on a new autoload module
org.netbeans.lib.terminalemulator
(version 1.0).
Several static convenience methods have been added to
AbstractCompileAction
. Of most interest is
prepareJobFor
. Module code should no longer assume
that DataFolder
has a CompilerCookie
which recursively compiles the folder and subfolders (according to
depth); while it is still true, for reasons of compatibility, new
code should use prepareJobFor
to create a compiler job
from a folder.
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.
org.openide.DialogDisplayer
org.openide.LifecycleManager
org.openide.Places
org.openide.TopManager
org.openide.actions.AddWatchAction
org.openide.actions.BuildProjectAction
org.openide.actions.CompileProjectAction
org.openide.actions.DebugProjectAction
org.openide.actions.ExecuteProjectAction
org.openide.actions.FinishDebuggerAction
org.openide.actions.GoAction
org.openide.actions.GoToCursorAction
org.openide.actions.HelpAction
org.openide.actions.OpenProjectAction
org.openide.actions.SaveProjectAction
org.openide.actions.StartDebuggerAction
org.openide.actions.StepOutAction
org.openide.actions.ToggleBreakpointAction
org.openide.actions.TraceIntoAction
org.openide.actions.TraceOverAction
org.openide.awt.HtmlBrowser
org.openide.awt.StatusDisplayer
org.openide.cookies.DebuggerCookie
org.openide.cookies.ElementCookie
org.openide.cookies.ProjectCookie
org.openide.cookies.SourceCookie
org.openide.explorer.propertysheet.editors.ChoicePropertyEditor
org.openide.explorer.propertysheet.editors.DirectoryOnlyEditor
org.openide.explorer.propertysheet.editors.ElementFormatEditor
org.openide.explorer.propertysheet.editors.ExternalCompiler
org.openide.explorer.propertysheet.editors.FileEditor
org.openide.explorer.propertysheet.editors.FileOnlyEditor
org.openide.explorer.propertysheet.editors.IconEditor
org.openide.explorer.propertysheet.editors.IdentifierArrayEditor
org.openide.explorer.propertysheet.editors.MethodParameterArrayEditor
org.openide.explorer.propertysheet.editors.ModifierEditor
org.openide.explorer.propertysheet.editors.StringArrayCustomEditor
org.openide.explorer.propertysheet.editors.StringArrayCustomizable
org.openide.explorer.propertysheet.editors.StringArrayEditor
org.openide.explorer.propertysheet.editors.TypeEditor
org.openide.loaders.DataObjectFilter
org.openide.loaders.ExecSupport
org.openide.loaders.ExecutionSupport
org.openide.loaders.ExtensionListEditor
org.openide.loaders.RepositoryNodeFactory
org.openide.modules.IllegalModuleException
org.openide.modules.ManifestSection
org.openide.modules.ModuleDescription
org.openide.nodes.NodeOperation
org.openide.options.ControlPanel
org.openide.util.actions.ProjectSensitiveAction
org.openide.windows.IOProvider
; affected packages: org.openide.debugger
org.openide.src
org.openide.src.nodes
; made by: jglick; issues:
#19443
#20898
Many classes were moved to a separate module, openide-deprecated.jar, not available to modules by default. Uses of these classes in modules should be cleaned up whenever possible.
Additionally, the entire contents of org.openide.src.*
and
org.openide.src.nodes.*
, as well as
org.openide.cookies.SourceCookie
and some associated
property editors, were moved to a separate module.
The most common apparent symptom for module authors will be the absence
of TopManager
. Most methods in this class have been
replaced by newer utility classes in a straightforward manner. See the
Upgrade Guide.
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.