Česky   |  Deutsch   |  English   |  Español   |  Français   |  Indonesia   |  日本語   |  한글   |  Polski   |  Português (BR)   |  Türkçe   |  中文   |  正體中文   |  Your Language  
Planet NetBeans is an aggregation of NetBeans related musings from all over the Blogosphere.
[RSS 1.0 Feed] [RSS 2.0 Feed]
[FOAF Subscriptions] [OPML Subscriptions]
Do you blog about NetBeans ? Add your blog to PlanetNetBeans.
Feed Subscriptions
NetBeans Zone - The social network for developers (feed)
APIDesign - Blogs (feed)
Pandaconstantin (feed)
blogtrader - Blog (feed)
J. O'Conner » NetBeans (feed)
David R. Heffelfinger (feed)
Carsten Zerbst's Weblog (feed)
Winston Prakash's Weblog (feed)
ProNetBeans (feed)
Paulo Canedo » NetBeans English (feed)
Need to find a title (feed)
Category: NetBeans | Software and Science (feed)
Roger Searjeant's blog (feed)
Optonline Webmail (feed)
Michael's blog » NetBeans (feed)
Allan Lykke Christensen » NetBeans (feed)
Inspiration and Expression » Netbeans (feed)
Adam Bien (feed)
Ignacio Sánchez Ginés » NetBeans (feed)
Bernhard's Weblog (feed)
Michel Graciano's Weblog (feed)
Ramon.Ramos (feed)
Ozone and Programming » netbeans (feed)
NetBeans Ruminations » NetBeans (feed)
Tiplite » netbeans (feed)
Bistro! 2.0 (feed)
Arun Gupta, Miles to go ... (feed)
Geertjan's Blog (feed)
.JARa's Bilingual Weblog (feed)
JavaFX Composer (feed)
The Java Jungle (feed)
Jesse Glick (feed)
Martin Grebac (feed)
The NetBeans Community Podcast (feed)
NetBeans Profiler (feed)
NetBeans for PHP (feed)
NetBeans Web Client (feed)
Rechtacek's (feed)
Virtual Steve (feed)
My First Blog - Satyajit Tripathi (feed)
The Aquarium (feed)
Tinuola Awopetu (feed)
Insert Witty Irony Here (feed)
mkleint (feed)
Anuradha (feed)
Netbeans6/6.5 my best practices (feed)
Java Evangelist John Yeary's Blog (feed)
Neil's Dev Stuff (feed)
Computer says null; (feed)
NetBeans Adventures, Java and more (feed)
NetBeans Community Docs Blog (feed)
The Netbeans Experience (feed)
NbPython/ jpydbg / pymvs (feed)
Wade Chandler's Programming Blog (feed)
Big Al's Blog (feed)
Code Snakes (feed)
In perfect (spherical) shape (feed)
Van Couvering Is Not a Verb (feed)
Diego Torres Milano's blog (feed)
Vroom Framework (feed)
Messages from mrhaki (feed)
Jeff's Blog (feed)
Manikantan's Netbeans (feed)
Oliver Wahlen's Blog (feed)
Shuttle between Galaxies (feed)
Shanbag's Blog (ರಜತ ಲೋಕ) (feed)
Welcome to my live... (feed)
Netbeans IDE Blog by Tushar Joshi, Nagpur (feed)
Devel Blog (feed)
diamond-powder (feed)
Antonio's blog (feed)
Where's my Blog?!

Powered by:    Planet

Last updated:
July 25, 2014 02:34 PM
All times are UTC

Sponsored by
sponsored by Oracle

visit NetBeans website
Geertjan's Blog - July 25, 2014 09:16 AM
Grunting in NetBeans IDE

Grunt tasks are to JavaScript what Ant targets and Maven goals are to Java.

You can "grunt" on the command line, but also directly in NetBeans IDE.

Here I'd like to take a look at where the feature set in NetBeans IDE is going with Grunt.

Let's say we've got hold of the AngularJS Seed template. Doing this is simple in NetBeans IDE via the New HTML5 Project wizard, which gives you an option to let NetBeans IDE download the AngularJS Seed template as the basis of the new application.

Once you have your application, hop over to the New File dialog and create your Grunt file:

Next, here's a handy Grunt definition that creates three tasks, for copying to a 'build' directory, for cleaning that directory, and for combining the two tasks, thanks to this article:

module.exports = function (grunt) {
        pkg: grunt.file.readJSON('package.json'),
        'Compiles all the assets and copies the files to the build directory.',
       [ 'clean', 'copy' ]

Copy the above into your Grunt file. The above means that in the 'package.json' file that is already part of the AngularJS Seed template, you need to add two new dependencies, shown in bold below:

"devDependencies": {
"karma": "~0.10",
"protractor": "~0.20.1",
"http-server": "^0.6.1",
"bower": "^1.3.1",
"shelljs": "^0.2.6",
"karma-junit-reporter": "^0.2.2",


Then right-click on the project and choose "Npm install", which is new in the upcoming NetBeans IDE 8.0.1, though the development builds are already available:

Then, also new in NetBeans IDE 8.0.1, right-click on the project and notice that you have access to the tasks via the new "Grunt Tasks" menu item:

Also, again new in NetBeans IDE 8.0.1, you can map your Grunt tasks to project commands:

Now, when you right-click your project and choose "Build", "Clean", and "Clean and Build", you automatically delegate the handling of the action to the underlying Grunt task.

The icing on the cake is that the project commands "Build", "Clean", and "Clean and Build" can be mapped to keyboard shortcuts. For example, map "Build" to a keyboard shortcut and then, when it is pressed, the related Grunt task of the currently active project will be invoked.

Grunt could almost not be integrated more snugly into NetBeans IDE. Maybe an enhancement could be to provide some predefined templates as examples of what can be done with Grunt, to really get you up and running quickly.

Related reading:

Java Evangelist John Yeary's Blog - July 25, 2014 08:00 AM
JSF 1.2: Project Woodstock Multiple Selection Table Example

Multiple Selection Table

This is another example of a Project Woodstock project that was converted from Project Rave and Sun Studio Creator 2. This example details a multiple selection table, and was originally created by Winston Prakash.

I have updated the project using NetBeans 6.5.1 and tested on GlassFish 2.1.1.

The updated project can be found on BitBucket here: MultipleSelectionTable

Java Evangelist John Yeary's Blog - July 25, 2014 01:53 AM
JSF 1.2: Project Rave Single Selection Table

Single Selection Table
Here is another example Project Rave/Woodstock project originally written by Winston Prakash for Sun Studio Creator 2. It has been updated using NetBeans 6.5.1 and tested on Glassfish 2.1.1.

The project can be found on BitBucket here: SingleSelectionTable

Java Evangelist John Yeary's Blog - July 25, 2014 01:52 AM
JSF 1.2: Woodstock Collapsible Group Table Example

Collapsible Group Table Example
Here is another example of a Project Rave data table converted to Project Woodstock. Project Woodstock was a great idea and the implementation with Visual JSF was the right path to go with JSF development. It is a shame that the project was canceled by Sun. I met a lot of great people who worked on the projects, and are still friends today. The code for this project was originally developed by Winston Prakash at Sun.

The code was developed using NetBeans 6.5.1 and can be downloaded from BitBucket here: CollapsibleGroupTable

Geertjan's Blog - July 24, 2014 08:43 AM
Bower and Node.js in NetBeans IDE

With more and more HTML5/JavaScript/CSS3 frameworks using packaging solutions provided by Bower and Node.js, it can become a bit tricky for you to set up projects... hard to see the forest for the trees sometimes with so many different solutions striving valiantly to help you but tripping each other up in the process. Despite their innovations, it also becomes slightly cumbersome to share projects with team members because each of them need to run Bower and/or Node.js on the command line, before beginning with their programming tasks. Finally, it becomes difficult for NetBeans IDE to bundle HTML5 sample projects efficiently, as described in my earlier blog entry AngularJS Seed, Bower, and NetBeans IDE 8.

However, in the upcoming NetBeans IDE 8.0.1 release, there's a very elegant mechanism that helps bridge the flexibility offered to frameworks by Bower and Node.js with the assumptions one has when getting started with predefined project structures and when working with shared projects.

Let's go through the process, using a daily development build of the pure HTML5/PHP distribution of NetBeans IDE. First, create a new HTML5 application:

Give it a name and location:

Choose the Angular Seed Template:

The above means that a connection is made to the on-line repository where the HTML5 Angular Seed template is found. The team responsible for that template can change it anytime they like, which is exactly what they're doing now and then, by changing the structure of the seed template as well as the libraries it depends on.

On completing the wizard, notice (for the first time in NetBeans IDE 8.0.1) the error badge in the project icon and the project name is in red:

That tells you that some of the dependencies declared by Bower or Node.js or both have not been satisfied.

Right-click and notice 'Npm install' and 'Bower install' can be called directly from here, as well as 'Resolve Project Problems':

When you select that menu item, NetBeans IDE tells you 'hey, there's a bunch of stuff missing, based on analysis of the Bower and Node.js definitions in your project':

When you click "Resolve" above, all the stuff that needs to be added to the project is automatically added, below a very small segment of all the stuff that happens in the background for you is shown:

Now that's pretty cool. Whenever you open any HTML project into NetBeans IDE, i.e., straight via a template like the above, or by opening a project with existing sources on disk, NetBeans IDE will tell you whether Bower or Node.js should be run, and it will then run it for you, and thereby resolve project dependency problems for you... so that you can begin coding really quickly without having to worry about all these messy set up details. 

Also, this makes sharing projects between team members nice and easy. Define your dependencies via Bower or Node.js, pass the project to your team members however you like, and then let NetBeans IDE access the dependencies and add them to the project for you. 

In short, this really feeds in very well to the concept of "Integrated AngularJS Development".

Geertjan's Blog - July 23, 2014 10:11 AM
Distinct Icons per Java Type in NetBeans IDE

Especially useful in the editor tabs, where you could have multiple documents open at the same time, often not with names that reveal the type, and now you can quickly ascertain the type via each tab, i.e., here you can immediately see which one is the interface:

For details:

Many thanks Hermien Pellissier from South Africa for raising this issue! It will be available from NetBeans IDE 8.0.1 onwards.

NetBeans Zone - The social network for developers - July 22, 2014 01:16 PM
NetBeans Weekly News (Issue #649 - July 22, 2014)

Project News Centigrade: New NetBeans Partner Centigrade, with its NetBeans BizLaf plugin, is the latest addition to the NetBeans Partners page. Does your company also add value to NetBeans IDE? Let us know at netbeans dot webmaster at gmail dot com! Preview Text:  In this issue: Centigrade joins the NetBeans Partner Program; Monet, a new plugin...

NetBeans Zone - The social network for developers - July 22, 2014 08:02 AM
Joachim Arrasz: My Five Favorite NetBeans IDE Features!

Following on from Ciprian Turcu, 

Geertjan's Blog - July 22, 2014 07:00 AM
World's Simplest NetBeans Node/TopComponent Implementation

In 2008, here, I documented the world's simplest NetBeans Node implementation. Here's the updated implementation, using ChildFactory, together with the code needed for connecting it into a TopComponent:

public final class ViewerTopComponent extends TopComponent implements ExplorerManager.Provider {
    private ExplorerManager em = new ExplorerManager();
    public ViewerTopComponent() {
        setLayout(new BorderLayout());
        add(new BeanTreeView(), BorderLayout.CENTER);
        Children kids = Children.create(new SystemPropertyChildFactory(), true);
        AbstractNode rootNode = new AbstractNode(kids);
        associateLookup(ExplorerUtils.createLookup(em, getActionMap()));
    public ExplorerManager getExplorerManager() {
        return em;
    class SystemPropertyChildFactory extends ChildFactory<Object> {
        protected boolean createKeys(List<Object> list) {
            return true;
        protected Node createNodeForKey(Object key) {
            BeanNode node = null;
            try {
                node = new BeanNode(key);
            } catch (IntrospectionException ex) {
            return node;

Here are the class annotations for registering the above in the Window System:

        preferredID = "ViewerTopComponent",
        persistenceType = TopComponent.PERSISTENCE_ALWAYS
        mode = "explorer",
        openAtStartup = true)
        category = "Window",
        id = "org.demo.viewer.ViewerTopComponent")
        path = "Menu/Window" /*, position = 333 */)
        displayName = "#CTL_ViewerAction",
        preferredID = "ViewerTopComponent"
    "CTL_ViewerTopComponent=Viewer Window"

And here are the import statements:

import java.awt.BorderLayout;
import java.beans.IntrospectionException;
import java.util.List;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.explorer.ExplorerManager;
import org.openide.explorer.ExplorerUtils;
import org.openide.explorer.view.BeanTreeView;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.BeanNode;
import org.openide.nodes.ChildFactory;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.openide.util.Exceptions;
import org.openide.windows.TopComponent;
import org.openide.util.NbBundle.Messages;

NetBeans Zone - The social network for developers - July 21, 2014 10:10 AM
NetBeans in the Classroom: Mandatory Methods for Beans (Part 3)

Ken Fogel is the Program Coordinator and Chairperson of the Computer Science Technology program at Dawson College in Montreal, Canada. He is also a Program Consultant to and part-time instructor in the Computer Institute of Concordia University's School of Extended Learning. Preview Text:  Regular NetBeans education columnist Ken Fogel, the Program...

Geertjan's Blog - July 21, 2014 07:00 AM

The recently held NetBeans Platform course in Leipzig has resulted in a very nice enhancement for the NetBeans Platform community. It can be read about here, by its author Daniel Koll, from Aachen:

TopComponentGroup mit Annotation

No worries if you don't understand German. All you need to understand is Java! 

To get started with this enhancement, do a checkout:

svn checkout svn://svn.code.sf.net/p/topcomponentgroupregistration/code/ topcomponentgroupregistration-code

You'll end up with a NetBeans module that defines a @TopComponentGroupRegistration, as follows.

public @interface TopComponentGroupRegistration
   * The module where the {@link TopComponent} is placed in, and where the Group will 
   * be placed in if it doesn't exist.
   * @return 
  public String module();
   * The specification Version of the {@link #module()}.
   * @return 
  public String specVersion() default "1.0";
   * The name of the Group, where this {@link TopComponent} will be placed.
   * @return 
  public String group();
   * Value of the open Flag, in the Group Configuration.
   * @return 
  public boolean open() default true;
   * Value of the close Flag, in the Group Configuration.
   * @return 
  public boolean close() default true;
   * Flag, if the Group should be opened at startup.
   * The real state of the group is calculated via an or to all 
   * of these Items.
   * @return 
  public boolean groupOpenState() default false;

There's also a LayerGeneratingProcessor included in the NetBeans module, to process the above. 

Copy both into a core module in your NetBeans Platform application, set the required dependencies (just copy them from the project.xml in the module) and then annotate your TopComponents as needed, as described by Daniel Koll.

Many thanks, this is very useful, and has qualified Daniel Koll as a NetBeans Platform Certified Engineer. This is a certification that is part of the NetBeans Platform Certified Training Course. Not only that, but Daniel has created another new feature, available as a plugin, ImportantFiles 4 JavaSE. Congratulations Daniel, looking forward to many more enhancements to NetBeans IDE!

NetBeans Zone - The social network for developers - July 18, 2014 12:17 PM
NetBeans Podcast 70 - Community Satisfaction

Podcast Guests: Ashwin Rao (NetBeans-Oracle), Ken Fogel (Dawson College, Montreal) Download mp3: 31 minutes – 26 mb Subscribe on iTunes Preview Text:  Senior Group Manager for NetBeans Product Management Ashwin Rao discusses how NetBeans satisfaction surveys benefit the community. Ken Fogel, creator of the popular "NetBeans in the...

Geertjan's Blog - July 18, 2014 07:00 AM
French, Polish, Dutch Updated Translations of NetBeans Platform

Mixing existing translations from the community translation project with new supplemental translations, as described here, we now have NetBeans Platform translations updated to Polish, French, and Dutch during the last few days:

French, by Constantin Drabo:

Polish by Sławek Mikuła:

Dutch by me:

If you want these translations as the basis of your own work, let me know in the comments to this blog entry. We're collecting the translations at https://java.net/projects/localized-netbeans, which is currently only accessible if you're a member of the project. We'll open the site soon so anyone can access it.

Even the above are not complete translations yet, we're just focusing on the visible texts that we see as we look through the menus, dialogs, etc, of the NetBeans Platform. It's a slightly haphazard process but better than nothing. Translators who complete the 'platform' translation, then start working on the 'ide' translation, which is a separate application on top of 'platform', followed by 'javase', etc, etc, one step at a time, until all of the IDE is translated.

Adam Bien - July 17, 2014 07:43 AM
Nashorns, Strange Practices, DI in FX and No Hallway Conversations--An Interview About my (=Adam Bien) JavaOne Activities

In the interview I said: "The JavaOne is the only conference, which I attend as a speaker" what I meant was: "...as an attendee". Sorry, but it was late :-).

Thanks Reza https://twitter.com/reza_rahman for the interview!

See also other screencasts at: http://tv.adam-bien.com or subscribe to http://www.youtube.com/user/bienadam.

See you at Java EE Workshops at MUC Airport or on demand and in a location very near you: airhacks.io!

Real World Java EE Workshops [Airport Munich]>

APIDesign - Blogs - July 17, 2014 06:51 AM
Japanese Translation is Real

Cover of Japanese translation of TheAPIBook. I am amazed, the book is about 30% shorter, yet is seems to contain all the content of the original one!


Great work Yoshiki!

--JaroslavTulach 06:51, 17 July 2014 (UTC)

NetBeans Zone - The social network for developers - July 17, 2014 05:15 AM
NetBeans 8 — Shortcut to Remote Platforms (Part 3): Remote Platform Debugging

I created a series of quick intros to the NetBeans 8 Remote Platform feature. This clip shows how to remotely deploy, execute and debug an JavaFX application on a Raspberry Pi with NetBeans 8. Preview Text:  This article and video is part of a series of quick intros to the NetBeans 8 Remote Platform feature. This clip shows how to remotely...

Geertjan's Blog - July 16, 2014 09:16 AM
NetBeans Translation Tip #1: Page Setup Dialog

No matter what you do, you're unable to translate the "Page Setup" dialog, which is accessed from "File | Page Setup..." in the main menu of the NetBeans Platform. 

The reason for the problem is that the strings that you see above do not come from the NetBeans Platform. Instead, they come from the JDK, specifically, from rt.jar, where you'll find the following:

The above screenshot shows which languages are supported for the Page Setup dialog. Therefore, if you switch locale to "pl" for Polish or "nl" for Dutch or some other language not listed above... the English texts will be shown and nothing you do with properties files in the 'branding' folder in your NetBeans Platform application is going to change that.

But there is a solution.

  1. Get the source. Go here, i.e., the source of sun.print.resources.serviceui, and copy that source file into the NetBeans module for your language. Change the name of the class to include your locale, e.g., "serviceui_nl_NL.java" and, to help yourself later to understand why it's there, put it into the same package structure as the other files in rt.jar.

  2. Translate the texts. Then translate all those texts, e.g., the key "radiobutton.portrait" currently has the value "Portrait". Translate that word "Portrait" and replace the value with your translated word. Do the same for all the values in the file, of which there are about 150, I guess.

  3. Install the translation. Then create this class in your language module:
    import java.lang.reflect.Field;
    import java.util.Locale;
    import java.util.ResourceBundle;
    import org.openide.windows.OnShowing;
    public class PageSetupTranslator implements Runnable {
        public void run() {
            ResourceBundle bundle = 
                            new Locale("nl", "NL"));
            try {
                Class cl = Class.forName("sun.print.ServiceDialog");
                if (cl != null) {
                    Field fld = cl.getDeclaredField("messageRB");
                    if (fld != null) {
                        fld.set(cl, bundle);
            } catch (ClassNotFoundException ex11) {
            } catch (NoSuchFieldException ex11) {
            } catch (SecurityException ex11) {
            } catch (IllegalArgumentException ex11) {
            } catch (IllegalAccessException ex11) {
    Reference: https://community.oracle.com/thread/1287832

  4. Check the module structure. You should now see the following structure in your language module:

Now, when you start the application, your "serviceui" class will be picked up and applied to the Page Setup dialog. Of course, when there are multiple such classes, as will be the case in the "LocalizeNetBeans" project, there'll be a problem because multiple of these files will be applied to the Page Setup dialog. Just disable all of them by commenting the @OnShowing annotation for all of them except your own during development and in production the user will only be using one language anyway and, if they need more, they'll switch to a different locale, restart their application, and then the class applicable to the locale will be applied to the Page Setup dialog.

Adam Bien - July 16, 2014 07:23 AM
Late Summer Java (SE,FX,EE) Hacks

  1. Munich Airhacks: From Java EE to HTML 5, 21st to 25th July: http://workshops.adam-bien.com
  2. Virtual: 5th, 6th and 7th Airhacks Q & A (each first Monday of the month at 6 P.M. (CET): http://www.ustream.tv/channel/adambien Temporary questions repo: https://gist.github.com/AdamBien/e1855469d4c507427ef9
  3. Hamburg: "Java EE Patterns and Best Practices", 11th-13th August, http://www.oose.de/training/java-ee-6-patterns-und-best-practices/
  4. Rapperswil: Java EE 7 + Java 8 Good Practices, 9th September, http://www.ch-open.ch/wstage/workshop-tage/2014/programm-2014/ws-1-java-ee-7-java-8-good-practices/
  5. San Francisco: JavaOne, 28th September, 9th October, "Enterprise Nashorn", Productive Java FX 8, Unorthodox Enterprise Practices and Java EE 8 Community Update and Panel"
  6. Munich Airhacks: "Java 8 with Java EE 7 or The Impact of Java 8 on Java EE Applications" http://workshops.adam-bien.com/java8.htm

Enjoy the summer of Java!

Real World Java EE Workshops [Airport Munich]>

NetBeans Zone - The social network for developers - July 16, 2014 05:15 AM
NetBeans 8 — Shortcut to Remote Platforms (Part 2): JavaFX on Raspberry Pi

I created a series of quick intros to the NetBeans 8 Remote Platform feature. This clip shows how an JavaFX application is deployed on a Raspberry Pi and remotely executed from NetBeans. Preview Text:  Intro to the NetBeans 8 Remote Platform feature: How an JavaFX app is deployed on a Raspberry Pi and remotely executed from NetBeans. This...

NetBeans Zone - The social network for developers - July 15, 2014 11:44 PM
NetBeans Weekly News (Issue #648 - July 14, 2014)

Community NetBeans Community Podcast 70 In this Summer edition, meet Ken Fogel, creator of the popular "NetBeans in the Classroom" article series; find out how to get NetBeans web content in other languages; and discover how the biannual satisfaction surveys conducted by the NetBeans team benefit the community. Preview Text:  In this issue: The...

Geertjan's Blog - July 15, 2014 07:05 AM
Lightweight Process for Translating NetBeans IDE

To me, the problem with translating NetBeans IDE over the years has been that the process has always been very complicated with all kinds of tools that need to be set up.

Wouldn't it be cool if there was a simple, lightweight process. One that anyone can follow, in between doing other work, i.e., quickly dedicate half an hour every day to translating NetBeans IDE, whilst doing other work? No new tools to set up, no new and complex processes to learn? Everything done from within NetBeans IDE itself?

Here's how that can be achieved. Some steps have small YouTube clips to illustrate points made. These YouTube clips are silent, the idea is to watch and learn from the process.

  1. Get Set Up. Download and unzip the last community translation distribution, i.e., the one that contains more than the official translations, e.g., Russian, but the community translations, e.g., German and French. They're found here and I started with the netbeans-7.3-201302261559-javase.zip.

    Then get hold of the "Localized NetBeans" project. This is a project I have created on java.net and isn't public yet. That will happen soon. If you want to participate, let me know (leave a comment at the end of this blog entry with your java.net username included), I will add you as a member to the project, which will give you access to the project sources. The location is https://java.net/projects/localized-netbeans though, again, without being a member you will not be able to get to the project site.

  2. Set Up the Translation Module. As described in a recent blog entry, here, a NetBeans Platform application can provide modules with translated texts for UI elements in the application, which can be enabled via the --locale switch. Therefore, if it doesn't already exist, create a new module for your language in the "LocalizedNetBeans" project and move the JARs from step 1 that already provide translations into the module.

    Small overview for adding Korean:

    If you're doing a language for which no JARs already exist, just skip this step and go straight to the next one, i.e., for Serbian you'll start by writing down some texts that you want to translate, then look for them in the Branding dialog after selecting the Serbian locale, and have NetBeans IDE create properties files automatically for you. See the next step for the details.

  3. Start Translating. Any missing translations? Look around, identify what's missing, look for the texts in the Branding tool in NetBeans IDE, and add them.

    Small overview for translating to Korean:

    Remember, when searching for texts in the Branding tool, that if a text has an underline, e.g., "Options" with the "O" underlined (to create an accelerator key), you need to look for "&Options".

  4. Move to the Next Level. Once the "LocalizedNetBeans" has been translated, i.e., the lowest level of NetBeans IDE, which is the NetBeans Platform, move to the next level, which is already available, i.e., "LocalizedIDE". The focus here is on the "ide" cluster, e.g., the project system, and other tools that related to an IDE created on top of the NetBeans Platform.

    Small overview for moving from "platform" to "ide":

    "LocalizedIDE" depends on the cluster of "LocalizedNetBeans", so that those translations are automatically included.

    After the above is done, the next level would be "LocalizedJavaSENetBeans", where the focus is to provide the missing translations for your language in the community distribution for the Java SE distribution of NetBeans IDE, i.e., the Java Editor and related tools. "LocalizedJavaSENetBeans" will depend on the cluster of "LocalizedIDE".

  5. Check In. At the end of the previous steps, you'll possibly have one or more new modules, if your language wasn't supported yet, and you'll definitely at least have new properties files in the 'branding' folder of "LocalizedNetBeans", "LocalizedIDE", etc. Check those in. When there are enough of them, or when you say you're done, or at some stage when at least all the visible texts have been translated, I will put those properties files together into one or more new NetBeans modules. There'd be one module for the 'platform' translation of Korean, one for the 'ide' translation, etc, because not everyone will want all the translations, e.g., if you're creating an application on the NetBeans Platform, you don't want the Java Editor translations, so best to keep them separated per 'level'. Those various modules will be uploaded together to the NetBeans Plugin Portal. Anyone can download and install them and use the --locale switch to activate them. So we'll end up with language packs for each language, available on the Plugin Portal.

On the 'platform' level, i.e., the level of "LocalizedNetBeans", most things are already translated for most supported community languages. I.e., if you're using the NetBeans Platform, German and French and Spanish and Italian translations are mostly complete already, a few gaps here and there which won't take much work to add by a native speaker. And the above approach can also be used to add new modules, for Serbian, for example.

The process is simple and completely integrated into NetBeans IDE so that anyone can, in between programming, do a little bit of translation work.

Want to participate? Leave a comment that includes your java.net username so that you can be added to the project and so that you can start following the steps described above.

Adam Bien - July 15, 2014 05:00 AM
Starting With Java FX, Maven and afterburner.fx

Very first steps (minutes) with maven, igniter and afterburner:

See also other screencasts at: http://tv.adam-bien.com or subscribe to http://www.youtube.com/user/bienadam.

See you at Java EE Workshops at MUC Airport, particularly at the Java EE User Interfaces workshop!

Real World Java EE Workshops [Airport Munich]>

Java Evangelist John Yeary's Blog - July 15, 2014 12:46 AM
JSF 1.2: Project Woodstock Button Facet Table

I was going through some old code examples. I found one created with Sun Studio Creator. Yes, it was very old.

The original example was developed by Winston Prakash.

I did some updates to Project Woodstock from the original Project Rave, and came up with a pretty new example page.

The project can be downloaded here: ButtonHeaderTable

Note: You will need to use NetBeans 6.5.1, or 6.7.1 to run it.

Geertjan's Blog - July 14, 2014 03:24 PM
Monet: Tight JavaFX Scene Builder Integration in NetBeans IDE

With an appropriate sense of flair, Sven Reimers has published his JavaFX Scene Builder/NetBeans integration module under the name "Monet", i.e., in the same series of project names as "Matisse", the NetBeans Swing GUI Builder.

Get it here:


Small silent movie by me highlighting a subset of its features:

Be aware that I am using BizLaf, hence my IDE looks pretty different to the standard NetBeans IDE.

And note that Monet is far from done:


The NetBeans Community Podcast - July 14, 2014 12:31 PM
NetBeans Podcast 70

Podcast Guests: Ashwin Rao (NetBeans-Oracle), Ken Fogel (Dawson College, Montreal)

Download mp3: 31 minutes – 26 mb
Subscribe on iTunes

NetBeans Community News with Geertjan and Tinu

  • Take the NetBeans IDE 8.0 Satisfaction Survey! There's still time to tell the NetBeans team what you think about the release and what you'd like to see in future versions.
  • Would you like to have NetBeans documentation and web content be available in your local language? Then volunteer to be a translator for the NetBeans Community Localization project.
  • In our ongoing article series, find out what aspects of NetBeans IDE users from around the world think are really awesome: My Five Favorite NetBeans Features.
    •  Do you want to contribute to the series? Send a note to netbeans dot webmaster at gmail dot com

07:42 / Ashwin Rao - How Satisfied Are You with NetBeans?

Since NetBeans 7.0, the NetBeans team has sent out a satisfaction survey after each release to determine if it is meeting release objectives, innovating and improving the product, and addressing user concerns. Ashwin Rao, Senior Group Product Manager for the NetBeans Product Management team, shares how past survey responses have impacted the IDE and the community; he also discusses what the surveys reveal about NetBeans users and their expectations.

21:10 / Ken Fogel - Teaching Java Programming with NetBeans IDE

There are many reasons why NetBeans IDE is a great tool for teaching Java Programming; through his "NetBeans in the Classroom" article series on NetBeans Zone Ken Fogel, an educator in Canada, has been documenting all the reasons that he knows of. He joins the podcast to discuss his methodologies, why he prefers NetBeans, and plans to involve more people in the teaching community to grow awareness of NetBeans as a great tool for education.

*Have ideas for NetBeans Podcast topics? Send them to ">">">">nbpodcast at netbeans dot org.
*Subscribe to the official NetBeans page on Facebook! Check us out as well on Twitter, YouTube, and Google+.

Adam Bien - July 14, 2014 05:11 AM
Hosted WatchDock(er) Available

watchdock is also available from: http://watchdock.org

Watchdock is an offline docker monitoring and management (coming soon) HTML 5 app. watchdock will directly connect to your local docker installation without using any backend service.

I will also use watchdock as one of the examples during the regular airhacks.

Real World Java EE Workshops [Airport Munich]>

Java Evangelist John Yeary's Blog - July 13, 2014 08:50 PM
JSF 1.2: Visual Web Pack (Project Woodstock) Java Persistence API Example

Master-Detail Example
This is some example code that I have for a Visual Web Pack (VWP) project that demonstrates some complex data table examples.

I often fantasize about being able to get the band back together and make Woodstock 2.0. Here is an example of why. This was complex for JSF 1.2.

The code can be downloaded from: vwpjpaexamples

I would strongly recommend using NetBeans 6.5.1 to build and run the example project.

Geertjan's Blog - July 12, 2014 09:40 AM
How to Bundle Localized NetBeans Modules with Ant Based NetBeans Platform Applications (Part 2)

After learning the basics of bundling localized JARs in Ant based NetBeans Platform applications, yesterday, let's now provide support for a language that is not officially supported by NetBeans IDE, i.e., a language other than English, Brazilian Portuguese, Japanese, Russian, and Simplified Chinese. Timon Veenstra's team working on the AgroSense project have done us all a big service by creating the NetBeans Maven Libraries project on java.net. (How to integrate that into a Maven NetBeans Platform application is described here.)

We're going to go there and get the localized JARs we need. They're from NetBeans Platform 7.2, which isn't actually much of a problem because on the level of the NetBeans Platform, which is what most NetBeans Platform developers use (i.e., most developers build on the NetBeans Platform and not on the NetBeans IDE on top of it) not much has changed in terms of UI and strings in general, since most changes over the past few releases have been focused on the level of new and enhanced APIs, not new and enhanced GUI components and other string-bearing-stuff. We'll download the ones we want and put them into the same structure as in yesterday's blog entry.

The requirement we imagine we have is that we want to provide a Spanish translation of our NetBeans Platform application. In the first stage, we're going to get the Spanish JARs we need from Timon Veenstra's project and, after that, for any missing translations, you're going to learn how to supplement the project with your additional localizations.

  1. Go to https://java.net/projects/nb-library-wrappers/sources/core/show/lib-platform-l10n/nb72_platform_l10n/platform.

  2. For the language of your choice, download the JARs you need. I.e., go to 'core', 'lib' and 'modules', find all 'es' JARs, download them (by right-clicking on the JAR and saving it or by checking out the entire project). As described yesterday, create a new module for each language you want to support, switch to the Files window, and create a 'release' folder, on the same level as 'nbproject' and 'src' and then populate that folder with the relevant JARs that you downloaded.

    Brief description of the strings found in each of the above JARs:

    JAR Description
    core_es.jar Strings such as error messages and module loading/installation messages, e.g., MSG_load_layers=Cargando servicios de módulo...
    boot_es.jar Strings such as the question to show the user to find out whether to start a second instance of the application or not.
    org-netbeans-api-search_es.jar Strings for Search Results window, e.g., title of Output tab, as well as "Find in Projects", "Replace in Projects", etc.
    org-netbeans-core-execution_es.jar String for processes, such as external processes, e.g., CTL_PendingExternalProcess2=Proceso: {0}.
    org-netbeans-core-io-ui_es.jar Strings for Output window, e.g., Menu/Window/Output=&Salida.
    org-netbeans-core-multiview_es.jar Strings for working with multiview components, e.g., CTL_Save=Guardar.
    org-netbeans-core-output2_es.jar Strings for windows related to Output window, e.g., LBL_Find_Title=Buscar and Output window tab, e.g., LBL_Close=Cerrar Separador.
    org-netbeans-core-ui_es.jar Strings for the menubar, e.g., Menu/Edit=&Editar and many actions, e.g., OpenAsAction.name=Abrir como...
    org-netbeans-core-windows_es.jar Strings for the window system, e.g., CTL_CloneDocumentAction=C&lonar Documento and Actions/Window=Ventana.
    org-netbeans-core_es.jar Strings related to the About Box, e.g., About=&Acerca de and Exit, e.g., Exit=&Salir.


    Strings related to the Plugin Manager and the update mechanism, such as install=Instalar de todos modos and InstallUnitWizard_Title=Installer de Plugins.
    org-netbeans-modules-favorites_es.jar Strings for the Favorites window, such as Favorites=Favoritos and ACT_Add=&Agregar a Favoritos.


    Strings related to the Options window, such as CTL_Options_Dialog_Title=Opciones and CTL_Export=Expor&tar and CTL_Keymap_Options=Asi&gnación de Teclas.
    org-netbeans-modules-print_es.jar Strings for the Print and Page Setup features, such as MNU_Print_Action=Im&primir...
    org-netbeans-modules-progress-ui_es.jar Strings for the progress bar, such as Cancel_Question_Title=Cancelar Tarea en Ejecución.
    org-openide-actions_es.jar Strings for many generic actions, such as cut, copy, paste, and delete.
    org-openide-loaders_es.jar Strings relating to files, such as SaveAsTemplate=Guardar como Plantilla...

    As far as I am (currently) aware, the above are the only JARs you need to think about including (if you are creating a generic NetBeans Platform application, as opposed to one that is based on NetBeans IDE and/or uses various kinds of editors, e.g., the NetBeans XML Editor), there are several other JARs in the 'platform' folder, but these don't have strings in them. (One other one to remember is modules/ext/locale/updater.jar.) Also remember that in each case, the above are JARs that contain nothing more than a few properties files, i.e., they're tiny JARS with almost no content at all, aside from the properties files with the translated strings in them.

    Of course, all the other languages are the same as the above, to the extent that they have been translated. I.e., the keys are the same for all languages, but the values are different, obviously since they're all different languages, and the extent to which they have been translated is also different.

  3. Run the application with --locale es or -J-Duser.language=es. Lots of Spanish texts everywhere now, as you can see in the screenshot below. However, not everything has been translated, for various reasons, e.g., the "Show Only Editor" menu item is new in NetBeans IDE 7.4, and hence didn't exist when the 7.2 localization JARs were created:

  4. Right-click the application and choose Branding. Go to the "Internationalization Resource Bundles" tab. Then choose the locale you're interested in, which in this case, since we're working on Spanish, is "es". After that use the search field to look for your string.

    Be very careful if the string, as in the case of "Show Only Editor" has an underline in it, as in this particular case under the "O", which is caused by an ampersand prior to that letter, resulting in the NetBeans Platform creating an accelerator so that the user can use the keyboard to get to that menu item. Therefore, when you do your search for a string that includes an underline, replace the underline with an ampersand prior to the underlined letter, as shown below:

    Once you've found your string, right-click on it in the dialog above, choose "Add to Branding", and then type the, in this case, Spanish translation of the string.

    What's also really cool about the above dialog is that, as you can see above, you now have a pretty good idea in which module the string is found, i.e., which JAR is going to be overridden: 'org-netbeans-core-windows' in this case, with the 'actions' being a package in that JAR.

  5. Now switch to the Files window. Expand the 'branding' folder in the application. You'll notice that, after doing the previous step, NetBeans IDE has automatically created a folder for you named 'org-netbeans-core-windows.jar'. That's a folder. Continue expanding it and in the 'actions' folder you'll find your translated string.

  6. Run the application again and you'll see your translated texts automatically merged with the localization JARs that you downloaded from Timon Veenstra's project.

It would be pretty cool if anyone who supplements the localization JARs with their own translations for any language would let the NetBeans team know, e.g., at the end of this blog entry, or at netbeans dot webmaster at gmail dot com, that you've done a translation and then those translations can be added together and published as a whole for everyone to benefit from.

Adam Bien - July 11, 2014 09:44 AM
WatchDock(er) v0.0.1 Released

watchdock is a simple, but useful http://www.docker.com monitoring application.

watchdock presents you the relevant container information on one page and saves you several CLI keystrokes.

There is no server side installation necessary, you can just launch the application by opening the index.html directly with a modern browser and point to the docker demon. Because watchdock is a web page and it has to communicate with the docker remote services, you will have to enable CORS and expose the monitoring via IP at the docker demon level: -H tcp:// -api-enable-cors

Installation: git clone https://github.com/AdamBien/watchdock.git


cd watchdock
open public_html/index.html

I will use watchdock as one of the sample applications during the Java EE 7 and HTML 5 http://airhacks.com workshops.

Real World Java EE Workshops [Airport Munich]>

Geertjan's Blog - July 11, 2014 07:01 AM
How to Bundle Localized NetBeans Modules with Ant Based NetBeans Platform Applications (Part 1)

Let's figure out a solid approach to including localization bundles in our Ant-based NetBeans Platform application. (For Maven, go here.)

  1. Go to https://netbeans.org/downloads. Find the drop-down "IDE Language" at the top right of the page. Choose your language. Click Download under the Download Bundle you need, which is most likely to be "Java SE".

  2. Install the download bundle. If you already have NetBeans IDE 8.0 installed, you'll need to first uninstall it because the download bundle will discover, right at the start of the installation procedure, that NetBeans IDE 8.0 is already installed. So uninstall your NetBeans IDE and then reinstall using the new download bundle.

  3. Start up NetBeans IDE. Open your NetBeans Platform project into it.

  4. For each language for which you want to provide support, create a new module. That's a modular solution, each language in its own module. Switch to the Files window and there, at the same level as 'nbproject' and 'src', create a folder 'release/core/locale' and a folder 'release/modules/locale', containing all the JARs from the download bundle that you'd like to include in the module:

    The above entails that you need to look in your NetBeans IDE installation folder, in the 'locale' folder of the 'platform' folder for the JARs applicable to your language that are relevant to your application. Note that 'core' and 'modules' above match the 'core' and 'modules' subfolder of 'platform' where the JARs above are found:

  5. Continue doing the above until you have all the JARs that you need. Make as many modules as there are languages that you'd like to support for which translated JARs exist.

  6. Bear in mind that if you have a locale like "pt_BR", then this is the way you specify the second part, in the 'run.args.extra' line and/or in the default_options line in the .conf file of the application.
    run.args.extra=--laf Nimbus -J-Duser.language=pt -J-Duser.region=BR 
  7. Run the application and see, for example, the following, i.e., below the fact that org-netbeans-core-ui_pt_BR.jar is included means that the menubar, among other UI pieces, is now in Portuguese (Brazil):

That's it. Interested to know what NetBeans Platform developers out there think of this. It's all pretty nice except for the fact that you need to figure out in which JAR the texts are found that are of interest to your application. In another blog entry I'll suggest some approaches for that, though the simplest approach is to simply include all the localized JARs for your language from the 'platform' folder. They don't contain anything other than properties files, i.e., they're really small.