Revision as of 11:25, 6 April 2012 by Ovrabec (Talk | contribs)


Local Tasks in NetBeans IDE

This document describes the use cases, requirements and UI of a special task repository in the IDE - Local Tasks. The document is not final and will most probably change in the future as the discussion about local tasks evolves.


NetBeans IDE is slowly turning into a task-driven IDE where users work on their tasks, the IDE behaves differently depending on the active task. The task can come from various different bug trackers but what we're missing at the moment is the ability to create a local task, invisible to others but the one person who created it, add private comments to the task, schedule it for some time in future or add dependencies in other tasks (even from other bug trackers).

Use Cases

Create Task

Joseph Geek would like to implement a new awesome feature for his favorite IDE but his manager did not allow him to do that at work because he did not care about the feature at all and considered it useless. Instead of creating 100 user accounts voting for the issue in Bugzilla Joseph Geek decided to implement the feature in his free time as a Friday afternoon project. He's developing the feature locally on his machine and would like to track progress of the development but because he's unsure how far he's gonna get, he does not want to expose the progress to public (by using a bugtracker) but instead would like to make his notes have them stored locally.

So he goes to the new Task Dashboard, selects the always available Local Tasks repository and from its menu invokes Create New Task. A form for new local task opens in the editor area, Joe enters its summary New awesome feature.
Then he fills the description of the task into the Private Notes text area. He's planning to track the progress of the development and fill all his private thoughts into the field later so when he activates the task next Friday he would know where to continue. For the meantime he enters Prepare UI specification for the feature into the field.
Because he would like to finish his work until the feature-freeze for the next release he also fills the Due date field and enters the date of the freeze.
After that he saves the task (either by clicking on the Save button in the toolbar or by hitting the keyboard shortcut he associated with the global Save action) and the task is immediately added into the Task Dashboard under the Local Tasks repository node.

Reviewing Opened Tasks

Joseph decides he would like to review and check what tasks await him in the upcoming future so he opens the Task Dashboard, expands the Local Tasks repository node and quickly reviews id and summary of all his opened local tasks that display directly under the repository node.


  • We decided not to implement the heavy-weight query table (as Bugzilla or Jira have in the IDE) but to display the tasks only in the Dashboard. We do not see any reason to have the tasks also in the editor area especially when a local task usually contains only id and summary values displayable in a table and there will always be just the single query.

Editing Tasks and Adding Dependencies

Joseph Geek, our workaholic developer just finished his Friday work and because he's not yet ready to go home to bath his two babies and read them fairy-tales he instead stays at work and starts working on his project. He opens the task from the dashboard and reviews its current progress he tracks in the Private Notes field.
He realizes that the last note was about creating the UI specification so he creates a new local task called UI spec for Awesome feature and this time enters the id of the first task into the new task's Parent task field. Thus he creates a relation between those tasks so he does not forget about the UI spec task. He saves the new task and switches back to its parent.
He makes some notes about his current feelings into the private notes area and saves the changes.

After some time of working on the new feature Joseph Geek suddenly realizes he cannot continue because he's blocked by missing features in another area of the IDE. However he's aware that his college the debugger guy Martin is currently working on the missing feature and there's already a RFE in the team bugzilla for the feature. So he opens his local task in editor and clicks on the Add subtask button. A dialog is opened where Joseph Geek selects the public team bugzilla repository and the RFE Martin is working on. By clicking on the OK button, the RFE task is added as a subtask of the local task and another relation between tasks - this time between local task and a task from another repository - is added. Joseph Geek saves his changes and closes the edited task.


  • A subtask could be removed (the relation between the tasks) by simply clicking on a remove icon (in the subtasks area) in the editor. Will be specified in the UI spec.

Closing Task

Next Friday our developer finishes work on the UI specification for his awesome feature. He opens the subtask in editor (by dbl-clicking on it in the dashboard), selects Completed from the Status field and saves his changes. Immediately the subtask disappears from the Dashboard (because it is no longer opened) and is marked as completed in the parent task.


  • Inverse action (reopening) would work the same way. One selects Open status and saves the task

Deleting Task

After many many Fridays spent at work Joseph Geek's wife gives him an ultimatum and tells him that he really needs to work less and care about his family more. So Joe sadly decides to abandon his work on his project and because he does not want to be reminded about his unfinished work he deletes the task from his local repository. He selects Delete Task from the contextual menu on the task in the Dashboard and after confirming his determination the task is permanently removed from the local repository.

Attaching Files

Continuous discussion

  • will it be possible to add attachments to local tasks?
  • if so, where will the files be stored? In a central storage or will a task simply track only paths to files scattered allover the disk?

Other Use Cases

Local Repository is planned to be a special case of a task/issue tracking repository but all task-related use cases will apply to them as well. So scheduling, activating/deactivating and switching, categorizing in the dashboard, working with context and others described in Use Cases are also valid.

Repository Specific Limitations and Requirements

Although a kind of task/issue repository (as bugzilla or jira repository) the Local Task repository is unique and in some ways specific. Follows the list of specific requirements on the bugtracking SPI and the repository's behavior.


  • it is the only instance of local tracker
    It makes sense to have only one single instance of the repository that all local tasks belong to.
  • it is available by default
    It is available out-of-the-box, no setup is needed, automatically displayed under the Repositories node in the Task Dashboard. It can be hidden/closed however in the dashboard the same way as other repositories.
  • it does not display in the Services tab.
  • it does not show in the Connector list in the Create New Tracker dialog
    Because it is a singleton, it is not allowed to add a new instance
  • it cannot be edited
    either in the services tab or in the dashboard
  • it cannot be removed
    either in the services tab or in the dashboard
  • Search should be disabled
    In the Dashboard there is a Search action available in the repository's popup. Should be disabled if the only place to display query results was in the Dashboard (i.e. there was no query table)
  • similarly the repository should not be displayed in the Find Issues query.
  • the repository is considered inferior and secondary when repository ownership comes in question
    that is if a file is linked to a full-featured bug tracker repository (such as BZ) the Local Tasks repository will claim its ownership of the file (if you e.g. committed something and updated a local task via the commit hook) as the last and will not precede any other repository.


  • there is only one predefined query, however its node is not displayed in the Dashboard and tasks from the query are displayed directly under the repository node.
  • it is not editable
    if for some reason is displayed somewhere
  • its results are displayed only in the Dashboard and directly under the repository node
  • cannot be removed
    if for some reason is displayed somewhere
  • it is not allowed to add/create another query


  • A task can be closed from a commit dialog the same way as tasks from other bug trackers
    the task's status will be changed to Completed (see Closing Tasks) and a comment will be added at the end of the Private Notes field.
  • A task should be able to allow attaching a patch via the Attach Patch panel
    depends on whether or not the attachment support is implemented (see Attaching File UC).
Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo