4 posts

Concentrating on Task in Hand (similar to Mylyn) in NetBeans IDE

Often we work on fixing a bug or developing an enhancement for an open source project maintained over a period of many years and having hundreds of source code files.  usually we need a handful of 5 to 10 source files to fix the bug or to add new enhancement.  The project explorer provided by IDE's like NetBeans IDE show us all the files at once and we may have to scroll many times to open those files.

Now comes another situation where we have to switch our focus to some other task, may be a trivial bug fix which has to go into this week's release.  This time we have to close all those files we are working on and work on some other files for this newly arrived trivial issue.  Once this trivial issue is done, we want to go back to our usual bug fix or enhancement addition work, but now the problem is we have to figure out all the files which were open that time.

This switching of context is a part and parcel of a developer's life.  Task-focused interface concept was introduced for such situations and is now a fairly established concept of working with large projects.  Let us see how to use this task-focused way of working in NetBeans IDE.

For this we will need a module named NBTaskFocus which is available at Java.net as an open source project.

Installing the NBTaskFocus modules

This article assumes that you are using latest stable release ofNetBeans IDE and that is 7.0.1. 

1. Open the NetBeans IDE and choose the menu Tools > Plugins to open the Plugins dialog box. 
2. Click on the Settings tab and click on the Addbutton top add update center for NBTaskFocus, this will show anUpdate Center Customizer dialog box

Adding NBTaskFocus Update Center

3. In the Name field typeNBTaskFocus and in the URL field typehttp://java.net/downloads/nbtaskfocus/nb70/updates.xml, click the Ok button which will close this dialog box

NBTaskFocus Modules available

4. Click the Available Plugins tab, four NBTaskFocus modules will be available for installation there.  Click on the checkbox on the left of the available modules to check them for installation.  You should check all the four modules available with name NBTaskFocus, click the Installbutton which will take you through the process of installation of the modules.  You may have to click Next on the License page and also on the warning page which says that the modules are not signed.

Opening NBTaskFocus panels

1. Make sure you open the panels provided by NBtaskFocus modules

Available Panels in NBTaskFocus

a. Task Explorer - this is a panel where Tasks will be shown as nodes
b. Task Details - this is a panel where individual open files will be shown as part of task context
c. Project Context - this panel is similar toProjects panel but with a difference that it will highlight the currently opened files and also provides two modes to visualize the Projects, viz Grayed mode and Focused mode.

Concentrating on your Task

Coming back to the example task we discussed in the start of this ariticle, we have one enhancement task to work on.  TheTask Explorer panel will allow us to add Task which will be our context for working on the enhancement work.

Adding a Task

1. Right click on the Task List node of theTask Explorer panel and choose Add Task option, a Task with name Task1 will be added as a node in the panel.  A dialog box showing the name and description of this task will also be shown in the Task Editor in the editor area of NetBeans IDE.

Adding new Task

2. Let us change the name of this task to "Fix issue #29" by updating the name of the task in the Task Editor.  We can close this Task Editor when the change in name is done.

Changing Task Name

3. We can add many Tasks in the list.  Let us add one more task named "Work on Enhancement #45" by following the same procedure we did in step #1 and #2 above.
4. When we have to work on a task and we want the IDE to remember our task context, that means all the files we open to work on that task, we will activate a task.  Task can be activated by right clicking on the Task and choosing Activate Taskoption.

Activating Task

What is a Task Context?

When we open source files to work on them they are added to theTask Context automatically.  This can be seen in the Task Details panel as well as theProject Context panel.  In Task Details panel all the open files are shown as a list and in Project Context panel the files which are open are shown in a highlighted way.  When the files are closed by us they are automatically removed from the active Task Context.

The files opened in the editor will be shown in highlighted mode in the Project Context panel.  All other files which are not part of the task context will be shown as grayed in the Grayed Mode of the Project Context panel.  The Project Context panel has two icons at the top toolbar.  Those buttons can be used to change the mode of the Project Context panel.

Grayed Task Context
(Grayed Context shown in Project Context panel)

Focused Mode of Project Context

The Project Context panel provides a focused mode by pressing the second button in the toolbar which will show only those files which are open in a Project hierarchy like in Projects panel.  This makes us concentrate on the files we are concerned with by making all other files hidden.  This was all the destractions are gone and we do not have to scroll many times to see the files we are working on.

Focused Task Context
(Focused Context shown in Project Context panel)

Switching Tasks

When we want to work on some other task we just activate another task and all the opened files which were part of the earlier task will be closed for us and also will be remembered for us.  We can either activate another task or double click on the active task to make it deactive to work in usual way we are used to work in the IDE.

When we want to come back to the earlier task we can activate the task again and all the files which were part of the context will be automatically opened for us again.

This way of working in IDE was first introduced to the worls by Mik Kerksen through the Mylyn plugins for Eclipse IDE.  Using the NBTaskFocus project we can implement task-focused working pattern on NetBeans IDE.


Project NBTaskFocus makes the automatic tracking of your opened editor files available in its alpha version.  It provides two panels named 'Task Explorer' to see your tasks and the activation state of the task, and 'Task Details' to see your tracked opened file context.  As soon as you open any file in editor of NetBeans IDE it is added to the activated task as its context.  If you close an opened file it is automatically removed from the context.

The article on NetBeans Zone describes steps how to use the NBTaskFocus project.

Panels with Task and context

Java User Group Nagpur, JUGNagpur started in Jul 2008 with the mailing list http://groups.google.com/group/jugnagpur

Inception of the JUG
When I wanted to join local Java User Group and found no JUG available in my city, Nagpur I started one.  Now we also have a home page at http://www.jugnagpur.com and a collaboration wiki at http://jugnagpur.wikispaces.com

Why I joined a User Group:
I believe that when users of a service of product come together and share knowledge, synergy builds between them and new ideas and new concepts come out of this association.  I wished to get acquainted with all the professional people who are passionate about Java.  A user group sounds the exact answer to this wish.  The point to note is this objective has not been achieved till now when I look back to all the activities we have done through this group.

Achievement since 2008 to 2010

In Java User Group Nagpur from 2008 to 2010 we have 162 members and low activity email traffic on the mailing list.  We had three events where we met and had Java related sessions.  Through this group discussions a new NetBeans User Group Nagpur got started which is a focused group for people passionate about NetBeans IDE and NetBeans Platform.

Student's participation
Our JUG has most of the participation from students studying in undergraduate schools and colleges.  They want t interact with people working with Java and people having mor eexperience, so they get guidance. 

Java professional's participation
I assumed that the people who are working in software development companies and product companies in and around Nagpur will join this Java User Group.  The expectation was that, these people will discover the user group from Internet and then will join by their own.  If I take my example as I tried to search for a User Group, I assumed that there may be many people who will also do the same and then will join the group and then we will have a steady flow of mails with discussions on Java and trends in Java.  After examining the data of the members we have I found that most of the members have joined the group when they were students.  The members who currently work with Java are too few. 

There may be multiple reasons for working people not joining the group:

  • The group may not be visible to people easily and as they don't know they have not joined.
  • They know there is a Java user Group in Nagpur but they feel joining a User Group is a waste of time and energy
  • They may be having impression that the User Group is only for students and advanced professionals shall not join such groups
  • They may have the desire to join but they may be so occupied with their work tasks that they have almost assumed that joining a User Group will not be feasible in their busy schedule
  • They may feel the User Group is not worth joining as it does not have any popular person to represent.

My observation is, as soon as these points are written I can add action items to overcome these points and keep going on to build the community of people passionate for Java.  I believe this group will get representation from Java professionals gradually.

Objectives of JUG Nagpur
* Spread Java Awareness
* Provide forum for people interested in Java to collaborate
* Reach local schools and colleges and conduct sessions for Java
* Spread awareness for Open Source software Arrange group meetings
* Arrange expert sessions for current trends and new techniques in Java
* Identify local experts and provide recognition to them

with regards
Tushar Joshi, Nagpur

Java was the language I used to enter the Open Source world.  That made Java my medium to learn how Open Source project works.  Java covers most of the areas of the programming world starting from desktop applications to server applications.  This range is enough for a newcomer to start with.

I wish to write more about the Java platform and the open source world through this blog.  This is my first post on java.net and first step into writing something about Java. 


with regards
Tushar Joshi, Nagpur