NetBeans Plugins at Kenai

Do you still remember the plug in, I created last year to revamp the way hyperlink navigation was taking place for HTML files? Do you know there isn’t any such plug in yet bundled into the NetBeans IDE?

Yes/No.. Don’t say “Can’t say” 😉

Anyways, answers are Yes and No. There has never been any out-of-the-box support, that provides hyperlink navigation amongst HTML documents in the NetBeans IDE.

October 03, 2007

Geertjan Wielenga (prolific NetBeans blogger) created one, although its still not bundled with the NB, which did provide required support. There’s also a NetBeans Platform Tutorial for this plug in, you may give it a read. Although, its target release was NetBeans 6.0!

July 24, 2008

This month, I showed interest in upgrading the plug in by completing some of the tasks, specified in Next Steps section of the tutorial. You may read this blog entry for complete history and hence, I created another one. I got nice feedback from some of the community members and Geertjan, so I decided to write a tutorial for this revamped plug in.

January 09, 2009

Since, I got 2 plugins (uploaded to Plugin Portal) published into NetBeans 6.0 Update Center.. I thought why not contribute the code to the community’s codebase, i.e. contrib repository..  After interacting with the Technical Community Manager, NetBeans Dream Team and related personnel, I decided to setup a project at Project Kenai.


I decided to let you know how you can access the source code of the plug in and upgrade it according to your preferences/requirements. I am very late to notify this as I was busy with my internship program, which commenced on January 19th and culminated on 24th May (this year).

Revamped Hyperlink Navigation

…hosted at Project Kenai, you may access the source code from the SVN repository and you may also discuss about this plug in on the decidated forums. I will soon add the NBM in the downloads section, till then either you can download it from Plugin Portal (stable release) OR if you want to access it from within the NetBeans.


Then, goto Tools | Plugins and select the Settings tab. Now, click Add button and Update Center Customizer pops up. Enter Name as NetBeans UC 6.0 and URL as Wait for a while as NetBeans configures your new Update Center. Once done, select Available Plugins tab and you would find my plug in there. Hope this helps!

Stay tuned for more updates..


Building Pizza with Lookup | #2

Continuing from the last post, I will present you the code and pointers to the SVN repository at Project Kenai where the project resides..

Last time, I said I have ported the sample code to NetBeans Platform in the form of 4 modules getting plugged into the NetBeans Platform Application and I named it PizzaBeans. Today, we will just setup the service provider API and its service providers…

Service Provider Interfaces

Pizza Center Services (

This module contains Builder and Product classes inside a package which is not exported by default, so I had to go the Project Properties and select API Versioning to make that package public, which would then be used by service provider modules to implement the desired functionality, i.e. to build the specific type of Pizza.

Service Providers

To quote from one of the John O’ Conner’s articles (see References);

“Define a service provider by implementing the service provider API. Usually, you will create a JAR file to hold your provider. To register your provider, you must create a provider configuration file in the JAR file’s META-INF/services directory.”

Here the Lookup API will come to the rescue, you will soon get to know how it enables loose-coupling amongst our modules and facilitates high cohesion. Although, I am creating probably the easiest of examples..

“The configuration file name should be the fully qualified binary name of the service’s type. The binary name is simply the fully qualified class name in which each component of the name is separated by a . character, and nested classes are separated by a $ character.”

The following two modules does the same and hence, through Lookup API one can get to know what all pizzas can be built…

Hawaiian Pizza (pizzacenter.spone)

This module contains a ConcreteBuilder class as the service provider class (the implementation of Builder class). So, this will be registered as quoted above;

Create the configuration file with a name as that of the service provider API class (i.e. Builder class) inside the “META-INF/services/” and add the fully qualified name of the above ConcreteBuilder class to the file.

Spicy Pizza (pizzacenter.sptwo)

Similarly, this module contains a ConcreteBuilder class as the service provider class (the implementation of Builder class). So, this will be registered in the similar way, as done for the Hawaiian Pizza module.


John O’ Conner‘s article on Creating Extensible Applications With the Java Platform is a must read, also refer to the resources I had earlier pointed to.

To be continued…

Project with Kenai and I

You all must have seen, I rarely post code on my blogs… 😮 However, during recent blog series I felt that there was indeed a need to write some code to complement my postings..

What sort of blog series?

I have been learning concepts of NetBeans Rich Client Platform for quite some time and last year, I studied RCP rather inconsistently.. So, recently focusing on design patterns, I thought of giving RCP another try and I am glad to have devoted some time to learn the popular modular framework..

What about coding?

Well, as I had blogged few months back about 2 plugins (uploaded to Plugin Portal) getting published into NetBeans 6.0 Update Center.. So, I thought why not contribute the code to the community’s codebase, i.e. contrib repository..

So, I emailed the concerned authority and after few weeks or so, got the access to the Mercurial Repository, however I had stopped working on RCP and was not able to devote much time to it..

Project (with) Kenai

I was actually thinking of setting up a project at, so whenever I get time I will commit code to the SVN repository there and link to the files from blogs wherever necessary..

Also, I can have code of multiple projects committed to single project setup at However, recently few Dream Team Members were discussing about Project Kenai on the mailing list and soon after I started exploring it.

and I

I found it interesting, so finally I have setup a project at Project Kenai and have started to commit some code..

Currently, I have stored code for my GoF and Lookup based blog series and for my Revamped Plug-in for HTML Hyperlink Navigation, I would soon add NBM’s to the downloads section..

See Also