]> &api-questions;

This is a framework for Task List window that shows tasks (errors, warnings, todos) generated by plugable modules for selected files/folders.

Unit-tests will be provided to ensure code quality.

Prototype is already available, 2-3 more man/days required to finish the implementation.

The main feature of the Task List SPI is the ability to 'plug-in' additional task providing modules that generate tasks for the task list window. Such a module must extend class org.netbeans.spi.tasklist.TaskProvider. The provider instance is registered in XML layer in folder "/TaskList/Providers".

The task list framework maintains a list of these providers. When task scanning is triggered - either upon user's request (e.g. active editor window has changed) or upon a file event (e.g. a modified file have been saved) each task provider will be asked to create tasks (org.netbeans.spi.tasklist.Task) for each file/folder under the current scanning scope (see below).

Scanning scope defines which files/folders will be scanned for tasks. The default implementation includes scopes for currently edited file, scope for files and folders in the main project and projects that depend on it and scope for all opened projects.

Additional scopes may be provided by extending org.netbeans.spi.tasklist.TaskScanningScope class and registering instances in folder "/TaskList/ScanningScopes" in XML layer.

Tasks are organized into Groups according to their importance. Each task can be in one group only. The default implementation includes "Error", "Warning" and "TODO" groups. Additional groups can be registered in XML layer in folder "/TaskList/Groups".

This module provides SPI for third parties that want to display some sort information for the user in the Task List / Problems window. A typical example are Java errors, warnings, TODOs etc.

Part of the integration are several implementation modules that provider task list user interface, TODO task scanning, Java integration.

No APIs will be deprecated.

Please note that the previous API/SPI for Suggestions framework will be still available. However part of the integration of the new Task List/Problem List SPI is a 'TODO' integration module that will provide user's TODO tasks from source file comments. This will replace the current 'To Do' window.

yes

no standards

yes

JRE 1.5 or better is required.

JRE is enough

The SPI has no non-NetBeans dependencies. Integration modules (task providers) may use some external libraries.

no platform dependencies

no special dependency declarations

just module jar file

yes

One package is exported as public, the rest are private ones.

Install location does not matter

no

no

no

no introspection

no

no

no

no

A separate thread is started for the actual task scanning. Synchronization objects are used to ensure thread-safe access from the user interface.

none

none

none

no

no

no

no

no

no

no idea

no

The implementation module starts a new Thread where the source files are scanned. This is indicated to the user in the global progress bar and the scanning process is user-cancellable.

XXX no answer for perf-scale

XXX no answer for perf-spi

no

no

no

The task list SPI adds folder "/TaskList/Providers" where the task provider instances are searched for, folder "TaskList/ScanningScopes" where the scanning scope implementations are searched for and folder "TaskList/Groups" where the module looks for task group definitions.

'TODO' integration module will hide the current 'To Do' window action.

The task list framework (the UI implementation) uses NbPreferences to remember user settings between sessions (selected scanning scope, table column widths etc) and user defined filters.

The task list frameworks reads from XML layer the list of task providers, scanning scopes and task groups.

no

no