Revision as of 10:04, 25 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.

Attaching Files

On Saturday when Joe's family goes to the playground in the neighborhood he effectively spends the quietness and free time working on the UI specification. When he finishes the first 20 pages of the spec and the first 10 images of the UI he packs everything in a zip archive and saves it on disk. After a while he thinks: "Hey, where did i save the zip to? And will i remember the location of the zip next weekend when i continue working on it?". He's playing with an idea of mentioning the location in the Private Notes field when he realizes a Local Task has this cool feature of attaching files and adding external resources to it. He rejoices, clicks on the Add Attachment button in the Attachments area of the local task and from a displayed dialog selects the zip file. Immediately after that a click-able link to the file is added to the Attachments area. By clicking on that he can easily open the file and by clicking on a remove icon next to it he can remove the link from the task. Joe saves the task and goes relieved to see his family in the playground.

  • let's make this as lightweight as possible. The attachments will be simple links to the external location, no central storage will be managed and files will not be copied anywhere when an attachment is added.

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.

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
    we have to solve saving the file, because the intention is to have no central storage of attached files (see Attaching File UC).

Local Task Editor

This window allows the user to review and edit task attributes along with setting schedule dates and adding private notes. Work in Progress

| 182540 - AIOOBE at TaskList.clear()                                                                                       [A/D icon]|[Ref icon]
| [-] My Private Task Details
|                   +-----------------+-+
|    Category:      |(none)           |v|
|                   +-----------------+-+
|                   +-----------------+-+               +-----------------+-+                       +---+
|    Start date:    |Sun, 11/30/2012  |v|     Due date: |Wed, 23/30/2012  |v|     Estimate[hours]:  | 2 |
|                   +-----------------+-+               +-----------------+-+                       +---+
|    Notes:
|    +-------------------------------------------------------------------------------------------------------------------------------+
|    ||                                                                                                                              |
|    |                                                                                                                               |
|    |                                                                                                                               |
|    |                                                                                                                               |
|    +-------------------------------------------------------------------------------------------------------------------------------+
|        (task specific actions toolbar)
|        (task specific attributes panel)

Toolbar items:

  • [A/D icon] - IconButton - Activates/Deactivates the task
  • [Ref icon] - IconButton - Refreshes the task
  • (Task specific actions) - Actions specific to the task/repository type, e.g. Bugzilla, JIRA
  • TODO - do we want notification setting in this window?

My Private Task Details

  • private panel contains private attributes of the task, these attributes are common for all types of tasks
  • Category - The user can add the task to the dashboard by setting the category using this combo-box. Setting the category as "(none)" removes the task from the dashboard.
  • Start date - The user sets the schedule date using date picker.
  • Due date - The user sets the due date using date picker.
  • Estimate - The user set estimate time (in hours) in the text field.
  • Notes - The user can add notes using this text area.

Task specific attributes panel

  • the content of this panel depends on a type of the task, in general it contains few (most likely collapsible) blocks of attributes
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