Introduction

This document lists changes made to the Project UI API.


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-Module-Dependencies: org.netbeans.modules.projectuiapi/1 > 1.20

Changes by affected class

org.netbeans.spi.project.ui.support.BuildExecutionSupport

org.netbeans.spi.project.ui.support.CommonProjectActions

org.netbeans.spi.project.ui.support.FileActionPerformer

org.netbeans.spi.project.ui.support.FileSensitiveActions

org.netbeans.spi.project.ui.LogicalViewProvider

org.netbeans.spi.project.ui.support.NodeFactory

org.netbeans.spi.project.ui.support.NodeFactorySupport

org.netbeans.spi.project.ui.support.NodeList

org.netbeans.api.project.ui.OpenProjects

org.netbeans.spi.project.ui.PathFinder

org.netbeans.spi.project.ui.PrivilegedTemplates

org.netbeans.spi.project.ui.support.ProjectCustomizer

org.netbeans.api.project.ui.ProjectGroup

org.netbeans.api.project.ui.ProjectGroupChangeEvent

org.netbeans.api.project.ui.ProjectGroupChangeListener

org.netbeans.spi.project.ui.ProjectProblemResolver

org.netbeans.api.project.ui.ProjectProblems

org.netbeans.spi.project.ui.ProjectProblemsProvider

org.netbeans.spi.project.ui.support.ProjectProblemsProviderSupport

org.netbeans.spi.project.ui.templates.support.Templates

org.netbeans.spi.project.ui.support.UILookupMergerSupport


Details of all changes by API and date


Project UI API

Provide last runing item from BuildExecutionSupport. Listen on changes of it.

Jul 15 '14; API spec. version: 1.78; affected top-level classes: BuildExecutionSupport; made by: tstupka; issues: #245350

BuildExecutionSupport makes it so far posible to register a running build/run/debug task. It would be also usefull to provide the last run item and to be notified about changes of it.

Split the api into a desktop (swing, awt) and NetBeans dependent and independent part.

May 26 '14; API spec. version: 1.78; made by: tstupka

The following classes were moved into the org.netbeans.modules.projectuiapi.base module:


Compatibility:

Runtime compatibility remains, compile time compatibility is mostly preserved too. It is however recommended to upgrade dependencies of client modules. Try running ant fix-dependencies in your Ant module.

Allow creating ProjectProblemsProvider.ProjectProblem without a ProjectProblemResolver

Oct 7 '13; API spec. version: 1.74; affected top-level classes: org.netbeans.spi.project.ui.ProjectProblemsProvider; made by: mkleint; issues: #236325

ProjectProblemsProvider.ProjectProblem has so far required a ProjectProblemResolver effectively making all problems resolvable, however a few places emerged where an automated resolution is not at hand and still we want to report the error/warning. 2 new factory methods introduced.

Moved CustomizerProvider2 from java.api.common

May 13 '13; API spec. version: 1.71; made by: psomol; issues: #229161

CustomizerProvider2 has been available so far in java.api.common but requests have been made to move it to projectuiapi, where its parent CustomizerProvider resides, before CustomizerProvider3 is defined. For reasoning see Issue 229161.

Project system related file templates can include shared license header file

Feb 27 '13; API spec. version: 1.69; made by: mkleint; issues: #193981

When including license headers into templates, the only license templates from IDE's configuration were accessible. Now templates can include new expression to set a path to a license template within the project's own space. The new way to include license headers is <#include "${project.licensePath}">. Project types need to provide their own way of defining the license template location and mapping it to project.licensePath item in their CreateFromTemplateAttributesProvider implementation.

Added BuildExecutionSupport.ActionItem extension to BuildExecutionSupport.Item

Feb 22 '13; API spec. version: 1.69; affected top-level classes: BuildExecutionSupport; made by: mkleint; issues: #193873

Implementing BuildExecutionSupport.ActionItem allows creating execution history lists at various places, currently the toolbar for Run action.

Added CommonProjectActions.PROJECT_PARENT_FOLDER constant

Jan 24 '13; API spec. version: 1.67; affected top-level classes: CommonProjectActions; made by: psomol; issues: #217087

Added CommonProjectActions.PROJECT_PARENT_FOLDER constant that is respected by the CommonProjectActions.newProject() action and the project's parent directory can be set that way.

Added Close listener to ProjectCustomizer.Category.

Nov 10 '12; API spec. version: 1.65; affected top-level classes: ProjectCustomizer; made by: psomol; issues: #219827

Added a Close listener to ProjectCustomizer.Category to enable correct memory management when specific project properties are to be maintained while Project Properties dialog is displayed, containing various, possibly extended, categories. This is the case with JWSProjectProperties and JFXProjectProperties, where cleanup is needed at the time of dialog closing. The introduction of a Close listener here actually enables to deprecate J2SECustomPropertySaver interface and thus make the same mechanism available even outside J2SE projects.

Added a support class for ProjectProblemsProvider.

Oct 2 '12; API spec. version: 1.63; affected top-level classes: org.netbeans.spi.project.ui.support.ProjectProblemsProviderSupport; made by: tmysik; issues: #219313

Added support class for provider of project metadata problems.

API to get current active project group and listen to project groups switching

Aug 25 '12; API spec. version: 1.61; affected top-level classes: org.netbeans.api.project.ui.OpenProjects org.netbeans.api.project.ui.ProjectGroup org.netbeans.api.project.ui.ProjectGroupChangeListener org.netbeans.api.project.ui.ProjectGroupChangeEvent; made by: mkleint; issues: #91031

Added methods to OpenProjects to figure the currently active project group, access preferences related to it and listen to changes in currently active group.

Added an SPI to provide project metadata problems.

Jul 24 '12; API spec. version: 1.60; affected top-level classes: ProjectProblems org.netbeans.spi.project.ui.ProjectProblemsProvider org.netbeans.spi.project.ui.ProjectProblemResolver; made by: tzezula; issues: #215628

Added a SPI allowing project to provide project metadata problems. These problems are shown in the Resolve Project Problems Customizer, project with project problems are annotated by broken project badge.

Extracted findPath method into a new interface PathFinder

Jul 13 '12; API spec. version: 1.59; affected top-level classes: PathFinder; made by: tzezula; issues: #208241

Extracted findPath method from LogicalViewProvider into a new interface PathFinder. A new PathFinder simplifies delegation of findPath method.

Programmatically setting main project deprecated

Mar 19 '12; API spec. version: 1.56; affected top-level classes: org.netbeans.api.project.ui.OpenProjects org.netbeans.spi.project.ui.templates.support.Templates; made by: jglick; issues: #166780

Setting a main project programmatically is now deprecated. Checking for a main project set explicitly by the user is still common.

Adding ability to create a file sensitive action with custom performer

Jan 13 '12; API spec. version: 1.56; affected top-level classes: FileSensitiveActions FileActionPerformer; made by: yardus; issues: #51571

Added FileSensitiveActions.fileSensitiveAction(performer, name, icon) method for creating file sensitive actions with custom performers. This method is a logical counterpart to ProjectSensitiveActions.projectSensitiveAction(performer, name, icon)

Will open project notification

Dec 12 '11; API spec. version: 1.55; affected top-level classes: org.netbeans.api.project.ui.OpenProjects; made by: jtulach; issues: #203220

A new friend contract added for benefit of ide.ergonomics module.

Added definesMainProject property to wizards

Apr 21 '10; API spec. version: 1.47; affected top-level classes: Templates; made by: jglick; issues: #184213

Added official way to specify whether a New Project wizard should set a main project.


Compatibility:

Internally, an unspecified wizard property is used to store this information, which was previously hard-coded in certain modules. All modules using the magic constant should switch to using the new methods instead.

Added Templates.buildSimpleTargetChooser

Apr 13 '10; API spec. version: 1.45; affected top-level classes: Templates; made by: jglick; issues: #141886

Added a builder for simple target choosers. freeFileExtension() permits the user to pick a file extension for the new file distinct from that of the template.

Added CommonProjectActions.forType

Apr 1 '10; API spec. version: 1.43; affected top-level classes: CommonProjectActions; made by: jglick; issues: #182488

Added a standard way for the context menu of a project's root node to be defined declaratively.


Compatibility:

Project types which LogicalViewProvider's root node currently implements getActions with a hard-coded list are encouraged to switch to declarative registration.

Added public static ProjectCustomizer.encodingModel(String) and public static ProjectCustomizer.encodingRenderer()

Mar 25 '10; API spec. version: 1.42; affected top-level classes: ProjectCustomizer; made by: tboudreau; issues: #182711

Added factory methods to ProjectCustomizer, for creating a ComboBoxModel of Charsets for all available character encodings with an initial selection, and a ListCellRenderer for Charset objects, for use in combo boxes.

Customizer panel registrations using annotations

Sep 10 '09; API spec. version: 1.38; affected top-level classes: ProjectCustomizer; made by: jglick; issues: #171029

@CompositeCategoryProvider.Registration may be used to register project customizer panels.

Globally registered ActionProviders

Jul 23 '09; API spec. version: 1.37; affected top-level classes: FileSensitiveActions; made by: jglick; issues: #102081

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.

OpenProjects.open() supports visual progress

May 6 '09; API spec. version: 1.35; affected top-level classes: org.netbeans.api.project.ui.OpenProjects; made by: ovrabec; issues: #162588

OpenProjects.open has now new overloaded variant that supports visual indication of the open progress.

Utility method OpenProjects.isProjectOpen

Apr 7 '09; API spec. version: 1.34; affected top-level classes: org.netbeans.api.project.ui.OpenProjects; made by: jtulach; issues: #161120

It came to our attention that often users of OpenProjects want to find out if their project is opened or not. To simplify such code we offer a handy utility method.

Add annotation @NodeFactory.Registration

Nov 20 '08; API spec. version: 1.33; affected top-level classes: NodeFactory; made by: mkleint; issues: #153015

Add annotation @NodeFactory.Registration to replace registration in layer files.

Pluggable Repeat/Stop build actions

Oct 23 '08; API spec. version: 1.32; affected top-level classes: BuildExecutionSupport; made by: mkleint; issues: #110465

Added spi for plugging into the Repeat Build/Run and Stop Build/Run actions that were previously accessible by ant based projects only.

Project root nodes automatically badged

Jun 9 '08; API spec. version: 1.31; affected top-level classes: LogicalViewProvider; made by: jglick; issues: #135399

Project root nodes will now automatically be badged according to VCS status of contained files.

Adding template attribute project.encoding

Mar 26 '08; API spec. version: 1.29; made by: abadea; issues: #129685
Added the template attribute project.encoding for templates using scripting language.

PrivilegedTemplates instance in global action context is preferred

Mar 21 '08; API spec. version: 1.28; affected top-level classes: org.netbeans.spi.project.ui.PrivilegedTemplates; made by: mkleint; issues: #122942
The previous scope of PrivilegedTemplates was the whole project. Now the selected Node (active context) can also provide an instance in it's lookup and it will be used instead of the default one from project's lookup. In this case the last used templates will not be considered.

Added ways to track projects opening and closing

Feb 6 '08; API spec. version: 1.27; affected top-level classes: org.netbeans.api.project.ui.OpenProjects; made by: mkubec; issues: #124980
Added a method to track progress of projects opening and closing. As the opening of a project may take long time, and as there can be multiple projects open at once, it may be necessary to be notified that the process of open project list modification started or that it has finished.

Added methods for creating customizer UI with additional listener for saving outside of AWT EQ

Jan 9 '08; API spec. version: 1.26; affected top-level classes: ProjectCustomizer; made by: mkubec; issues: #91291
New methods were added to allow to use additional listener for saving data after user presses OK button on Project Customzer UI. The listener will be executed after all OkListeners and will be executed off the AWT Event Queue. During save operation modal dialog with progress bar is displayed.

Add LookupMergerimplementation for ProjectOpenedHook

May 10 '07; API spec. version: 1.24; affected top-level classes: org.netbeans.spi.project.ui.support.UILookupMergerSupport; made by: mkleint; issues: #103106
New method UILookupMergerSupport.createProjectOpenHookMerger(ProjectOpenedHook) creates an instance of LookupMerger that ensures that from the ProjectOpenedHook instances in project's lookup, the project's own is always called first.

Adding template attribute project.license

Mar 26 '07; API spec. version: 1.23; made by: jpokorsky; issues: #95399
Added the template attribute project.license for templates using scripting language.

Added a way how to define UI component for non-leaf category node in project customizer

Jan 5 '07; API spec. version: 1.22; affected top-level classes: ProjectCustomizer; made by: mkubec; issues: #91276
Allow to define UI component for non-leaf category node in project customizer by setting name of the file in folder on layer filesystem. If there is a category with some subcategories and UI component is needed for the category, the folder that defines the category in layer needs to contain file with name 'Self.instance'. Instance of the file will be used to create customizer component for the category.
Compatibility: Semantic change of handling files according to location and name on layer filesystem - File of particular filename under category folder is handled differently.

Ability to attach a ok button listener on single customizer category.

Oct 23 '06; API spec. version: 1.21; affected top-level classes: ProjectCustomizer; made by: mkleint; issues: #85405
Allow to attach a listener to ProjectCustomizer.Category that will notify the Category and it's panel that the changes ought to be applied. This is generally useful as a fallback, general solution for 3rd party plugging into the project customizer in case the given project type doesn't provide model-driven project updating mechanism.
Compatibility:

Added OpenProjects.PROPERTY_MAIN_PROJECT property

Oct 16 '06; API spec. version: 1.20; affected top-level classes: org.netbeans.api.project.ui.OpenProjects; made by: mkleint; issues: #64491
Added OpenProjects.PROPERTY_MAIN_PROJECT property and firing changes in main project property value to listeners attached to OpenProjects.
Compatibility:

Added LookupMerger implementations for PrivilegedTemplates and RecommendedTemplates

Oct 5 '06; API spec. version: 1.19; affected top-level classes: org.netbeans.spi.project.ui.support.UILookupMergerSupport; made by: mkleint; issues: #83343

Related to 1.12 change in Project API. LookupMerger implementation for PrivilegedTemplates and RecommendedTemplates added.


Compatibility:

Ability to construct project node's children from multiple sources.

Sep 18 '06; API spec. version: 1.18; affected top-level classes: NodeFactory NodeList NodeFactorySupport; made by: mkleint; issues: #72441
Added way to declaratively layout the subnodes of the project node, allowing 3rd party contributions to project's Logical/Projects View. The project's node is constructed based on layer folder content. This api change provides just the infrastructure, the actual extension point location is up to the project type implementations.
Compatibility:

Added CommonProjectActions.setProjectConfigurationAction

Sep 8 '06; API spec. version: 1.17; affected top-level classes: CommonProjectActions; made by: jglick; issues: #49652

Added method CommonProjectActions.setProjectConfigurationAction() to permit projects supporting configurations to include a context menu item in their logical view to change the active configuration.

Ability to construct a project customizer from panels declared in layers.

Apr 11 '06; API spec. version: 1.15; affected top-level classes: ProjectCustomizer; made by: mkleint; issues: #74373
Added createCustomizerDialog(String, Lookup, String, ActionListener, HelpCtx) method to ProjectCustomizer. That allows to construct project customizer from a layer folder content. It assumes to find instances of ProjectCustomizer.CompositeCategoryProviderin the layer and constructs the UI from them. The context is passed into the panel via a Lookup instance. What is in the lookup, is up to the individual project implementations.
Compatibility:

Ability to get and set main project

Aug 26 '05; API spec. version: 1.11; made by: jlahoda; issues: #58461
Added getMainProject and setMainProject methods to OpenProjects.
Compatibility:

Project Delete/Copy/Rename/Move Support Added, Support for Default Project Delete/Copy/Rename/Move Added

Aug 22 '05; API spec. version: 1.10; made by: jlahoda; issues: #61546
Introduced:

Added ability to set an error message for project customizer's categories.

Jul 28 '05; API spec. version: 1.9; affected top-level classes: ProjectCustomizer; made by: mkrauskopf; issues: #61036

Added ProjectCustomizer.Category.setErrorMessage and ProjectCustomizer.Category.getErrorMessage methods. With those methods client can set an error message for individual categories. Also the default implementation of a customizer dialog uses these methods for showing a message on the bottom of category views and to mark category nodes for invalid categories (similar to the error message in wizards).

Added ability to set whether a project customizer's categories are valid.

Jul 28 '05; API spec. version: 1.9; affected top-level classes: ProjectCustomizer; made by: mkrauskopf; issues: #58457

Added ProjectCustomizer.Category.setValid and ProjectCustomizer.Category.isValid methods. With those methods client can affect whether the OK button of the Customizer dialog is enabled.

New Project Wizard Action

May 17 '05; API spec. version: 1.3; affected top-level classes: CommonProjectActions Templates; made by: pkuzel; issues: #58489
Introduced:

The projectOpened and projectClosed methods are called on all ProjectOpenedHook instances in the lookup.

May 12 '05; API spec. version: 1.3; made by: jlahoda; issues: #57025

The projectOpened and projectClosed methods are called on all ProjectOpenedHook instances found in a project's lookup.


Compatibility:

This change is incompatible because a project type can return a lookup with several ProjectOpenedHooks and depend on only first one being notified on open/close. Such a code should be rewritten using org.openide.util.lookup.Lookups.exclude.

Ability to extend project context menus

May 5 '05; API spec. version: 1.7; made by: pkuzel; issues: #57874
Defined a folder Projects/Actions/ which may hold actions to be added to the context menu of any project type.
Compatibility:

Existing project types need to add support for the new folder in order to comply with the guideline.

Added support class for creating standard project customizer dialogs

Jan 16 '05; API spec. version: 1.4; affected top-level classes: ProjectCustomizer; made by: phrebejk; issues: #49647

Added org.netbeans.spi.project.ui.support.ProjectCustomizer containing support methods for creating standard looking project customizer dialogs.

Switched to major release version 1

Dec 22 '04; API spec. version: 1.3; made by: jglick; issues: #51468

To indicate that this is now considered a stable API, the major release version was incremented to 1 from 0.


Compatibility:

Clients should begin requesting the new version to avoid a warning at startup.

Added open and close methods into OpenProjects class

Dec 14 '04; API spec. version: 1.2; affected top-level classes: org.netbeans.api.project.ui.OpenProjects; made by: tzezula

Added open and close methods to org.netbeans.api.project.ui.OpenProjects. The open method opens the specified projects. The close method closes the specified projects.


Built on December 21 2014.  |  Portions Copyright 1997-2014 Oracle. All rights reserved.