Allow to add/remove relative classpath entries.
API review of Sharable Libraries requested using URI for relative paths instead of URL.
Added LibraryCustomizerContext class to provide richer
context to libraries customizer.
project.license for templates using scripting language.
In order to speedup, or remove the load of initialization of kit in AWT during startup, the initialization is done outside of AWT thread as much as possible. This provides new API for editor kits, one component and one system property.
Added new method VisibilityQuery.isVisible(File). It queries all VisibilityQueryImplementation instances found in global lookup. If such instance implements VisibilityQueryImplementation2, it's isVisible(File) method is used directly. If not, it attempts to delegate to the isVisible(FileObject) method. That might not work for non-existing files. All implementations of VisibilityQueryImplementation are encouraged to upgrade to VisibilityQueryImplementation2.
ClassPath.toString(PathConversionMode) and
ClassPathSupport.createClassPath(String)
can be used to easily convert between traditional string classpaths
and NetBeans' internal representation.
Added methods urlForArchiveOrDir and archiveOrDirForURL
to FileUtil to make it easier to work with classpaths.
Added support base class for SourceForBinaryQueryImplementation2 which delegates to other SourceForBinaryQueryImplementations.
It is possible for the SouceForBinaryQuery provider to specify whether the java module should prefer sources or binaries. In general sources should be preferred for projects where user can make modification. The binaries should be preferred for libraries and platforms where sources may not be complete or correct.
The AntEvent methods getProperty and
getPropertyNames can now work with Ant references
as well as plain properties. This is critical for loggers which
wish to inspect e.g. the runtime value of a classpath given as:
<classpath refid="my.cp"/>
which otherwise would be inaccessible.
Added FoldOperation.owns(Fold) to check whether fold was produced by a particular FoldOperation.
ContextProvider is now properly generified, and implemented also by:
DebuggerEngine
DebuggerInfo
DebuggerManager
Session
The new method DebuggerManager.join can be used to merge lookup lists easily.
Several new constants were added to EditorStyleConstants to
support drawing rectangular boxes around text in the editor.
public static FileObject addFileChangeListener (final FileChangeListener fcl) to receive
FileEvents from FileSystems providing instances
of FileObject convertible to java.io.File
public static FileObject removeFileChangeListener (final FileChangeListener fcl) to no longer receive
FileEvents from FileSystems providing instances
of FileObject convertible to java.io.File
public static FileObject refreshAll () to refreshes all FileObject that represent files File.listRoots()
and their children recursively.Packages supplied in a module which overlap those in the JRE or its extensions will normally be ignored (as usual, the JRE takes precedence). Modules which wish to specifically suppress loading of some packages from the classpath can now request the class loader to do so by specifying:
OpenIDE-Module-Hide-Classpath-Packages: javax.lang.model.*, com.sun.source.**
(The syntax is analogous to that of OpenIDE-Module-Public-Packages.)
Such a declaration affects not just this module, but any other modules declaring a direct
dependency on it (OpenIDE-Module-Module-Dependencies). The module is now free to bundle
its own versions of these classes and be sure they will be used by it and its clients.
Be aware that as with all changes to the normal class loading scheme,
careless usage could result in LinkageErrors.
Now it's possible to close the palette window while e.g. editing an HTML file and the palette will still show up when designing a form.
Whenever possible the editor support and editor components will use the underlying FileObject's mimetype (as resolved by the mimetype resolvers).
Modules used to be able to obtain their own entries as file objects, e.g.:
FileObject f = URLMapper.findFileObject(ThisClass.class.getResource("something.xml"));
This is no longer supported. Client code should either use module classpath entries directly as URLs; or register files of interest in the XML layer and refer to them using the system filesystem.
The CodeTemplateDescription.getMimePath and a new
constructor were added to accomodate a mime path where a code
template was registered.
void CompletionResultSet.setHasAdditionalItemsText(String text) was added
to allow for customization of the text displayed in a completion popup whenever
a CompletionProvider indicates that additional items could be added to the result set.
A new utility class for helping project types create UI for sharable Libraries.
An additional protected method for use in ProjectClassPathModifierImplementation subclasses named
performSharabilityHeuristics(URL,AntProjectHelper) that takes classpath roots and tries to find the best way to reference that jar/folder.
A new XML schema
(
http://www.netbeans.org/ns/ant-project-libraries/1
),
several new API methods
(AntProjectHelper.getProjectLibrariesPropertyProvider,
AntProjectHelper.isSharableProject,
AntProjectHelper.getLibrariesLocation,
AntProjectHelper.setLibrariesLocation,
ProjectGenerator.createProject(FileObject, String, String),
ReferenceHelper.createForeignFileReferenceAsIs,
ReferenceHelper.createExtraForeignFileReferenceAsIs,
ReferenceHelper.copyLibrary,
ReferenceHelper.getLibraryChooserImportHandler,
ReferenceHelper.createLibraryReference,
ReferenceHelper.getProjectLibraryManager,
ReferenceHelper.findLibrary) and
custom file chooser (FileChooser)
provide support for collocated library definitions
referred to from Ant-based projects.
There is a new API and SPI for project libraries
(or, more generally, libraries with specific storage locations).
ArealLibraryProvider,
and LibraryStorageArea are new, as are methods
Library.getManager,
Library.getRawContent(String)
LibraryManager.getDisplayName,
LibraryManager.getLocation,
LibraryManager.createLibrary,
LibraryManager.forLocation, and
LibraryManager.getOpenManagers.
(LibraryProvider was also generified.)
LibrariesSupport has few additional helper methods.
There's also new methods and classes for UI customizations of Libraries, eg.
LibrariesCustomizer.showCreateNewLibraryCustomizer(LibraryManager),
LibrariesCustomizer.showCustomizer(Library, LibraryManager),
LibrariesCustomizer.showSingleLibraryCustomizer(Library),
and LibraryChooser class.
ExtraSourceJavadocSupport.createExtraSourceQueryImplementation() and
ExtraSourceJavadocSupport.createExtraJavadocQueryImplementation()
create instances to be added to project's Lookup.LookupMergerSupport.createSFBLookupMerger() and LookupMergerSupport.createJFBLookupMerger()
provide simple implementations of lookup mergers for respective query implementations.
A typical project implementation will put the lookup merger and the Extra*Support's instance in the project's lookup.EditJarSupport.showEditDialog() is a facotry method for creating editing UI. To be added to Project's properties dialog
preferably the "Libraries" panel. Client code (project type owner) is assumed to write down the ant properties
source.reference.__name__ and javadoc.reference.__name__ in the same manner as file.reference.__name__ is persisted.
Added helper method for refreshing all necessary filesystems, to get
refreshed all instances of FileObject representing
passed files and their children recursively.
To support performance and functional improvements in module class loading,
module resources are now loaded using a custom URL protocol, nbjcl.
This can be observed e.g. using ThisClass.class.getResource("file.xml").
As before, the exact nature of the URL produced by a module class loader
is formally left unspecified as this is specific to the module system implementation.
Simple way to run atomic action without having a fileobject is ensured by
adding two methods: FileUtil.runAtomicAction.
All events about filesystem changes (related to events on all affected instances of FileSystem)
are postponed after the whole code runned in atomic block is executed.
Added new constructor Mutex(Privileged, Executor) that allows creators of the mutex to intercept and wrap all actions running inside the mutex with custom code.
rt. The type of the field was a package private class.
As such the field was inaccessible to API users. Because this is not
checked as an error with our new
signature test infrastructure,
we made the type of the field visible.