ProgressUtils class with runOffEventDispatchThread methods
was added. These methods allow movement of operations out of AWT thread while blocking UI.
Introduced an annotation to register URL protocols.
GeneratorUtilities.copyComments method, which
copies comments from one tree to another tree.
A new boolean attribute can be set on palette's root node or on palette's root folder in XML layer to hide the palette window by default when a document the palette is associated with is activated. User then must open the palette window manually for the first time. The attribute's name is "paletteDefaultVisible" and the default value is "true".
Added JavaRunner.PROP_RUNTIME_ENCODING property to allow project types
to pass the runtime encoding to jvm.
Class org.netbeans.api.java.classpath.JavaClassPathConstants is created to hold java specific classpath constants. org.netbeans.api.java.classpath.JavaClassPathConstants.PROCESSOR_PATH constant is created as a key for Java processor path.
Add ability to create bootclasspath with given endorsed libraries.
Added IndexingManager.refreshAllIndices(boolean fullRescan, boolean wait, File... filesOrFolders),
<T> T IndexingManager.runProtected(Callable<T> operation)
Add CloneableEditorSupport.asynchronous to control if CloneableEditorSupport.open opens document synchronously or not. If CloneableEditorSupport.asynchronous return true then CloneableEditorSupport.open opens document synchronously and handles UserQuestionException. If CloneableEditorSupport.asynchronous return false then CloneableEditorSupport.open does not open document. Document is then opened during initialization of CloneableEditor form non AWT thread and UserQuestionException is handled there. Implementation of method asynchronous in CloneableEditorSupport returns false ie. it keeps original behavior of CloneableEditorSupport.open. Subclasses can overwrite method asynchronous to return true to avoid blocking AWT thread by call CloneableEditorSupport.open which calls CloneableEditorSupport.openDocument.
Adding ability to listen on changes of document base or WEB-INF folder. WebModuleImplementation2 was introduced in this release so I'm taking advantage of it and adding requested methods.
One can register a recursive listener on a file object by calling FileObject.addRecursiveListener(FileChangeListener).
Introduced three annotations inside OptionsPanelController
to register Options dialog panels declaratively.
New overload of instanceFile makes it easier to create
instances for use with lazy factories.
An Evaluator interface is introduced, with
evaluate() method. It's implementation should be registered
for the desired language that compiles into bytecode.
@CompositeCategoryProvider.Registration may be used
to register project customizer panels.
Now possible to create empty folders from layer-generating processors.
ImageUtilities.createDisabledIcon now can be used
to create low color saturation icon for disabled buttons. Also
ImageUtilities.createDisabledImage was added.
Added refreshAllIndices(boolean fullRescan, boolean wait, FileObject... folders).
Added two convenience methods permitting modules with nonstandard editor-like windows to use the regular modified and read-only status annotations.
Added methods IndexingSupport.createDocument(FileObject) and IndexResult.getIndexable()
in order to allow CustomIndexers and BinaryIndexers to use
IndexingSupport.
Added classes:
org.netbeans.spi.viewmodel.ModelEvent.SelectionChanged,
For convenience from unit tests, the system filesystem will now always
process annotations such as displayName in its FileSystem.Status.
FileEvent.runWhenDeliveryOver(Runnable) method added to support easier processing of batch sets of events.
Added a method for checking an index validity. The method should be called by IndexerFactories to check the index integrity and prevent exceptions during the run on the IDE when the index is broken (for example the IDE was killed during write to the index).
<attr name="PreferencesKey" stringvalue="boolean-key-name"/>
together with <attr name="PreferencesNode" stringvalue="prefstype:/nodepath"/>
where prefstype can be
Preferences.systemRoot()
Preferences.userRoot()
NbPreferences.root()
Preferences instance or it can be a Lookup
with the Preferences instance in it.
The action will be represented by check box menu item in both menu and popup menu automatically.
New operation type - OperationSupport.OperationType.INTERNAL_UPDATE is introduced.
This operation can be used to find out elements which have updates and
which the particular element has the dependency on.
Added scanStarted and scanFinished methods for notifying indexers about start and finish of the indexing of given root. Refactored EmbeddingIndexerFactory and CustomIndexerFactory to move up common methods into super class SourceIndexerFactory.
TreeUtilities.isEnumConstant() method, which
determines whether tree represents an enum constant.
CompilationInfo.getSourceVersion() to return the SourceVersion used by the javac compiler.
Modified CustomIndexerFactory, EmbeddingIndexerFactory and BinaryIndexerFactory
to have a method rootsRemoved(Iterable<? extends URL>).This method is used to notify indexers about unused roots.
Indexers may do a clean up of memory caches or close indexes.
One can provide fallback
content of system filesystem by
returning Boolean.TRUE from call
to fs.getRoot().getAttribute("fallback").
Add NbDocument.findRecentEditorPane to allow non blocking retrieval of recently selected editor pane. Method returns null when editor pane initialization is not finished. Client is notified about finished pane initialization by property change event EditorCookie.Observable.PROP_OPENED_PANES. NbDocument.findRecentEditorPane is replacement for EditorCookie.getOpenedPanes which waits till all editor panes are initialized. It is nonblocking only when EditorCookie is instanceof CloneableEditorSupport.
Adding MimeTypeInitializer providing init(mimeType)
method. SideBarFactory implementations
can use this to perform time-consuming operations (ie. lookups) outside AWT.
Task List API and user interface has been extended to support a generic URL as the resource the task is associated with. This allows for example bug tracking issues to be displayed in Task List window.
NbBundle.getMessage now has a varargs overload that
permits you to specify four or more format arguments without
explicitly constructing an array.
<attr name="asynchronous" boolvalue="true"/>
attribute. This extends these new factories with capabilities
already present in old SystemAction, thus makes
it easier to migrate from old to new while retaining compatible
behaviour.
EditableProperties now available in Utilities API
so it can be used more broadly.
Adding class for color printing.
IOColorPrint,
ActionProviders may now be registered in global
lookup so as to enable certain file-sensitive actions on certain
selections without the support of any project.
Added ProjectUtils.getCacheDirectory to complement
the SPI interface CacheDirectoryProvider.
Adding EditorSettings.PROP_MIME_TYPES to notify about changes in mimetypes returned
from EditorSettings.getAllMimeTypes() and EditorSettings.getMimeTypes().
Can now use LifecycleManager.markForRestart to cause
the application to restart after exiting. Formerly needed to
create special files in the userdir or use similar tricks.
Modified CustomIndexerFactory and EmbeddingIndexerFactory
to have methods filesDeleted(Iterable<? extends Indexable> deleted, Context context);
and filesDirty(Iterable<? extends Indexable> deleted, Context context);.
These two methods supersede thier older version, which accepted Collection rather
than Iterable. The new methods allow the infrastructure to optimize files crawling
and improve the overall performance of scanning.
New method requiresWebXml added. Framework specifies via this method if it reqires web.xml DD or not.
Two new factory methods for creating context and callback actions and bunch of context interfaces.
As part of introduction of the context interfaces, several already existing interfaces (usually carrying Cookie suffix in their name) were retrofitted to extend these new alternatives. This is binary and semantically compatible (as the methods closure remains the same) and the module providing cookies already had a runtime dependency on org.openide.awt module. However this change can cause problems during compilation. Those who compiled against Nodes API only and implemented one of the cookie interfaces need to add (compile time) dependency on org.openide.awt as well.