SlideShare a Scribd company logo
#80
 Get More Refcardz! Visit refcardz.com


                                         CONTENTS INCLUDE:
                                         n	
                                              About NetBeans Platform
                                              Getting Started
                                                                                           Essential NetBeans Platform
                                         n	


                                         n	
                                              Main Benefits
                                         n	
                                              NetBeans Platform Modules
                                         n	
                                              NetBeans Platform APIs
                                         n	
                                              NetBeans Platform Gotchas and more...                                      By Heiko Böck, Anton Epple, Miloš Šilhánek,
                                                                                                                 Andreas Stefik, Geertjan Wielenga, and Tom Wheeler
                                                                                                                                                        Window System       Most serious applications need more than one window. Coding good
                                                      ABOUT NETBEANS PLATFORM                                                                                               interaction between multiple windows is not a trivial task. The NetBeans
                                                                                                                                                                            window system lets you maximize/minimize, dock/undock, and drag-and-
                                                                                                                                                                            drop windows, without you providing the code.
                                               The NetBeans Platform is a generic framework for commercial                                              Standardized UI     Swing is the standard UI toolkit and is the basis of all NetBeans Platform
                                                                                                                                                        Toolkit             applications. A related benefit is that you can change look & feels very easily,
                                               and open source desktop Swing applications. It provides the                                                                  and add internationalization and Java 2D effects to your applications
                                               “plumbing” that you would otherwise need to write yourself,                                              Generic             With the NetBeans Platform, you’re not constrained by one of the typical
                                               such as the code for managing windows, connecting actions                                                Presentation        pain points in Swing: the JTree model is completely different than the JList
                                                                                                                                                        Layer               model, even though they present the same data. Switching between them
                                               to menu items, and updating applications at runtime. The                                                                     means rewriting the model. The NetBeans Nodes API provides a generic
                                                                                                                                                                            model for presenting your data. The NetBeans Explorer & Property Sheet
                                               NetBeans Platform provides all of these out of the box on top                                                                API provides several advanced Swing components for displaying Nodes.
                                               of a reliable, flexible, and well-tested modular architecture.                                           Advanced Swing      In addition to a window system, the NetBeans Platform provides many other
                                                                                                                                                        Components          UI-related components, such as a property sheet, a palette, wizards, complex
                                               In this refcard, you are introduced to the key concerns of the                                                               Swing components for presenting data, a Plugin Manager, and an Output
                                                                                                                                                                            window.
                                               NetBeans Platform, so that you can save years of work
                                                                                                                                                        JavaHelp            The JavaHelp API is an integral part of the NetBeans Platform. You can
                                               when developing robust and extensible applications.                                                      Integration         create help sets in each of your modules and the NetBeans Platform will
                                                                                                                                                                            automatically resolve them into a single helpset. You can also bind help
                                                                                                                                                                            topics to UI components to create a context-sensitive help system for your
                                                      GETTING STARTED                                                                                                       application.



                                               To get started with the NetBeans Platform:
                                                                                                                                                            NETBEANS PLATFORM MODULES
                                                Approach         How to Get Started

                                                IDE              Download NetBeans IDE, which includes NetBeans Platform development
                                                                 tools such as templates, wizards, and complete NetBeans Platform samples              The NetBeans Platform consists of a large set of modules. You
                                                                 out of the box.
                                                                                                                                                       do not need all of them. In fact, you only need 5. You also do
 www.dzone.com




                                                Maven            Use the Maven archetypes for NetBeans Platform development:
                                                                                                                                                       not need to have a user interface, meaning that you can create
                                                                 NetBeans Platform archetype:
                                                                 - GroupId: org.codehaus.mojo.archetypes                                               server/console applications on the NetBeans Platform.
                                                                 - ArtifactId: netbeans-platform-app-archetype
                                                                 NetBeans Module archetype:                                                            The complete list of NetBeans Platform modules is provided
                                                                 - GroupId: org.codehaus.mojo.archetypes
                                                                 - ArtifactId: nbm-archetype                                                           below. Items in red are mandatory, items in green are optional.
                                                Ant              Download the NetBeans Platform ZIP file, which includes a build harness.               Module                                             Description
                                                                 The build harness includes a long list of Ant targets for compiling, running,
                                                                 testing, and packaging NetBeans Platform applications.                                 boot.jar                                           Provides the runtime container.
                                                                                                                                                        core.jar
                                                                                                                                                        org-openide-filesystems.jar
                                               Join the NetBeans Community mailing lists!                                                               org-openide-modules.jar
                                                                                                                                                        org-openide-util.jar

                                                                                                                                                        org-netbeans-core.jar                              Provides the basic UI components provided by
                                                      MAIN BENEFITS                                                                                     org-netbeans-core-execution.jar                    the NetBeans Platform, together with related
                                                                                                                                                        org-netbeans-core-ui.jar                           infrastructure.
                                                                                                                                                        org-netbeans-core-windows.jar
                                               The following are the main features of the NetBeans Platform,
                                               showing you the benefits of using it rather than your homegrown
                                               Swing framework.
                                                Feature          Description

                                                Module System    Modularity offers a solution to “JAR hell” by letting you organize code into
 Essential NetBeans Platform




                                                                 strictly separated and versioned modules. Only modules that have explicitly
                                                                 declared dependencies on each other are able to use code from each other’s
                                                                 exposed packages. This strict organization is of particular relevance to large
                                                                 applications developed by engineers in distributed environments, during the
                                                                 development as well as the maintenance of their shared codebase.

                                                Lifecycle        Just as application servers such as GlassFish provide lifecycle services to web
                                                Management       applications, the NetBeans runtime container provides services to Swing
                                                                 applications. Application servers understand how to compose web modules,
                                                                 EJB modules, and so on, into a single web application, just as the NetBeans
                                                                 runtime container understands how to compose NetBeans modules into a
                                                                 single Swing application.

                                                Pluggability     End users of the application benefit because they are able to install modules
                                                                 into their running applications via an update center, since NetBeans modules
                                                                 can be installed, uninstalled, activated, and deactivated at runtime.

                                                Service          The NetBeans Platform provides an infrastructure for registering and
                                                Infrastructure   retrieving service implementations, enabling you to minimize direct
                                                                 dependencies between individual modules and enabling a loosely coupled
                                                                 architecture with high cohesion and low coupling.

                                                File System      Unified API providing stream-oriented access to flat and hierarchical
                                                                 structures, such as disk-based files on local or remote servers, memory-based
                                                                 files and even XML documents.



                                                                                                                                   DZone, Inc.     |   www.dzone.com
2
                                                                                                                                                    Essential NetBeans Platform



 org-netbeans-core-output2.jar                  Provides an Output window for displaying                Module System
 org-openide-io.jar                             processing messages. It also exposes an API
                                                that you can use to write to the window and             A module is a JAR file with special attributes in its manifest file.
                                                change text colors.
                                                                                                        This is a typical NetBeans Platform manifest file:
 org-netbeans-core-multiview.jar                Provides a framework for multi-tab windows,
                                                such as used by the Matisse GUI Builder in               Manifest-Version: 1.0
                                                NetBeans IDE.                                            Ant-Version: Apache Ant 1.7.1
                                                                                                         Created-By: 11.3-b02 (Sun Microsystems Inc.)
 org-openide-windows.jar                        Provides the API for accessing the window
                                                system.                                                  OpenIDE-Module-Public-Packages: -
                                                                                                         OpenIDE-Module-Module-Dependencies: org.openide.util > 7.31.1.1
 org-netbeans-modules-autoupdate-services.jar   Provides the Plugin Manager together with                OpenIDE-Module-Java-Dependencies: Java > 1.5
 org-netbeans-modules-autoupdate-ui.jar         the functionality for accessing and processing           OpenIDE-Module-Implementation-Version: 091216
                                                update centers where NetBeans modules are                AutoUpdate-Show-In-Client: true
                                                stored.                                                  OpenIDE-Module: org.demo.hello
 org-netbeans-modules-favorites.jar             Provides a customizable window which can                 OpenIDE-Module-Layer: org/demo/hello/layer.xml
                                                be used as a filechooser, enabling the user to           OpenIDE-Module-Localizing-Bundle: org/demo/hello/Bundle.properties
                                                select and open folders and files.                       OpenIDE-Module-Specification-Version: 1.0
                                                                                                         OpenIDE-Module-Requires: org.openide.modules.ModuleFormat1
 org-openide-actions.jar                        Provides a number of configurable system
                                                actions, such as “Cut”, “Copy”, and “Paste”.

 org-openide-loaders.jar                        Provides an API that lets an application                These are the most important NetBeans-related manifest
                                                recognize file types.
                                                                                                        attributes.
 org-openide-nodes.jar                          Provides the API for modeling business objects
 org-openide-explorer.jar                       and displaying them to the user.                         Type                                         Description
 org-netbeans-swing-outline.jar
                                                                                                         OpenIDE-Module                               The identifier of a module, providing a unique
 org-netbeans-modules-javahelp.jar              Provides the JavaHelp runtime library and                                                             name used for recognition by the module system.
                                                enables JavaHelp sets from different modules                                                          This is the only required entry in a manifest file
                                                to be merged into a single helpset.                                                                   for a module.
 org-netbeans-modules-mimelookup.jar            Provides an API for discovery and creation of            OpenIDE-Module-Layer                         The location and name of the module’s layer.
 org-netbeans-modules-editor-mimelookup.jar     settings specific to file types.                                                                      xml file, if any.
 org-netbeans-modules-masterfs.jar              Provides a central wrapper file system for your          OpenIDE-Module-Public-Packages               By default, all packages in a module are hidden
                                                application.                                                                                          from all other modules. Via this attribute, you
                                                                                                                                                      expose packages to external modules.
 org-netbeans-modules-options-api.jar           Provides an Options window for user
                                                customizations and an API for extending it.              OpenIDE-Module-Localizing-Bundle             The location and name of a properties file
                                                                                                                                                      providing a display name and the like.
 org-netbeans-api-progress.jar                  Provides support for asynchronous long
 org-openide-execution.jar                      running tasks and integration for long running           OpenIDE-Module-Module-Dependencies           Modules can request general or specific versions
 org-netbeans-modules-progress-ui.jar           tasks with the NetBeans Platform’s progress bar.         OpenIDE-Module-Java-Dependencies             of other modules (|OpenIDE-Module-Module-
                                                                                                                                                      Dependencies|), Java packages (|OpenIDE-
                                                                                                                                                      Module-Package-Dependencies|), or Java itself
 org-netbeans-modules-queries.jar               Provides an API for getting information about                                                         (|OpenIDE-Module-Java-Dependencies|).
                                                files and an SPI for creating your own queries.
                                                                                                         OpenIDE-Module-Provides                      Modules can specify dependencies without
                                                                                                         OpenIDE-Module-Requires                      naming the exact module to depend on. A
 org-netbeans-modules-sendopts.jar              Provides an API and SPI for registering your                                                          module may /provide/ one or more /tokens/.
                                                own handlers for accessing the command line.                                                          These are strings of conventional meaning, in the
                                                                                                                                                      format of a Java package or class name.
 org-netbeans-modules-settings.jar              Provides an API for saving module-specific               OpenIDE-Module-Specification-Version         In line with the Java Versioning Specification,
                                                settings in a user-defined format.                       OpenIDE-Module-Implementation-Version        modules can indicate two pieces of version
                                                                                                                                                      information about themselves using the
 org-openide-awt.jar                            Provides many helper classes for displaying UI                                                        |OpenIDE-Module-Specification-Version| and the
                                                elements such as notifications.                                                                       |OpenIDE-Module-Implementation-Version| tags.
 org-openide-dialogs.jar                        Provides an API for displaying standard and              AutoUpdate-Show-In-Client                    This attribute determines whether the mod-
                                                customized dialogs.                                                                                   ule is shown in the Plugin Manager.
 org-openide-text.jar                           Provides an extension to the javax.swing,text
                                                API.                                                    For details on these and other attributes, see
 org-netbeans-api-visual.jar                    Provides a widget & graph library for modeling          http://bits.netbeans.org/6.8/javadoc/org-openide-modules.
                                                and displaying visual representations of data.

 org-netbeans-spi-quicksearch.jar               Provides the infrastructure for integrating items
                                                                                                                          To influence the lifecycle of a module, extend
                                                into the Quick Search field.
                                                                                                                Hot       org.openide.modules.ModuleInstall, and register it in
 org-netbeans-swing-plaf.jar                    Provides the look and feel and the display                      Tip
 org-netbeans-swing-tabcontrol
 org-jdesktop-layout.jar
                                                of tabs and a wrapper for the Swing Layout
                                                Extensions library.
                                                                                                                          the manifest under the OpenIDE-Module-Install key.

Some of the items in the list above can be used outside of                                              Window System
the NetBeans Platform. In these cases, you can put the JAR                                              The window system handles the display of JPanel-like
on the classpath of a standard Swing application and use the                                            components and integrates them with the NetBeans Platform.
related functionality there: org-openide-filesystems.jar (to use                                        The main classes are listed below.
the virtual filesystem), org-openide-util.jar (to use the Lookup
                                                                                                         Type                   Description
class), org-openide-nodes.jar & org-openide-explorer.jar (to
                                                                                                         TopComponent           A JPanel that provides a new window in your application. The window
use Nodes and explorer views), org-netbeans-swing-outline.                                                                      comes with many features for free, such as maximize/minimize and
                                                                                                                                dock/undock.
jar (to use a Swing treetable component),  org-netbeans-api-
visual.jar (to use the  widget library).                                                                 Mode                   A container in which TopComponents are docked. You do not need to
                                                                                                                                subclass this class to use it. Instead, it is configured in an XML file.

     NETBEANS PLATFORM APIs                                                                              TopComponentGroup      A group of windows, which should behave in concert. For example,
                                                                                                                                windows within a group can be opened or closed together. As
                                                                                                                                with Modes, these are defined in an XML file, not by subclassing
                                                                                                                                TopComponentGroup.
The NetBeans Platform provides a large set of APIs. You do not
                                                                                                         WindowManager          Controls all the windows, modes, and window groups. You can request
need to know or use all of them, just those that make sense                                                                     the WindowManager for its windows, modes, and groups. You can also
                                                                                                                                cast it to a JFrame and then set the title bar and anything else that you
in your specific context. Below are the main API groupings,                                                                     would do with JFrames.
together with the most important information related to the
grouping, such as their most important configuration attributes                                         A mode, that is, a window position, is defined in an XML file,
and API classes.                                                                                        which is contributed to the System FileSystem via registration

                                                                                   DZone, Inc.      |   www.dzone.com
3
                                                                                                                                                               Essential NetBeans Platform



entries in the layer.xml file. The NetBeans Platform provides                                              of your application, but also into the context of NetBeans UI
a set of default modes, the most important of which are as                                                 components, such as windows and Nodes.
follows:                                                                                                   These are the most important Lookups to be aware of:
 Type                      Description                                                                      Type                               Description
 editor                    main area of application (not necessarily an actual editor)
                                                                                                            Global lookup, provides            The Lookup that gives you access to the currently selected UI
                                                                                                            selection management               component, most commonly the focused Node.
 explorer                  left vertical area, such as for a Projects window
                                                                                                                                               Lookup lkp = Utilities.actionsGlobalContext();
 properties                right vertical area, typically for a Properties window
                                                                                                            Local lookup, provides             The local context of a specific NetBeans Platform UI object.
 navigator                 left lower vertical area                                                         lookup of NetBeans objects         //For Windows components:
                                                                                                            such as windows and
 output                    horizontal area at base of application                                           Nodes                              Lookup lkp = myTopComponent,getLookup();
 palette                   right vertical area for items to drag into a visual pane                                                            //For Nodes:
 leftSlidingSide           minimized state in left sidebar                                                                                     Lookup lkp = myNode.getLookup();
 rightSlidingSide          minimized state in right sidebar                                                 Default lookup                     The application’s context, comparable to the JDK 6 ServiceLoader
                                                                                                                                               class, provided via the META-INF/services folder.
 bottomSlidingSide         minimized state in bottom status area
                                                                                                                                               Lookup lkp = Lookup.getDefault();
A TopComponent is registered in a mode as follows, note
                                                                                                           These are typical tasks related to Lookup and how to code them:
especially the lines in bold below:
                                                                                                            How do I...                            Description
 <folder name=”Windows2”>                                                                                   Register a service?                    Annotate a service provider with the
   <folder name=”Components”>                                                                                                                      @ServiceProvider class annotation, at compile time the META-
       <file name=”MyTopComponent.settings” url=”MyTopComponentSettings.xml”/>                                                                     INF/services folder is created, registering the implementation.
   </folder>
   <folder name=”Modes”>                                                                                    Find the default service               MyService svc = Lookup.getDefault().lookup(MyService.class)
       <folder name=”editor”>                                                                               implementation?
         <file name=”MyTopComponent.wstcref” url=”MyTopComponentWstcref.xml”/>
                                                                                                            Find all service                       Collection<? extends MyService> coll = Lookup.getDefault().
       </folder>
                                                                                                            implementations?                       lookupAll(MyService.class)
   </folder>
 </folder>
                                                                                                            Listen to changes in a Lookup?         Lookup.Result lkpResult = theLookup.lookupResult(MyObject.
                                                                                                                                                   class);
The XML files referred to above are small settings files that                                               Tip: Keep a reference to the           lkpResult.addLookupListener(
                                                                                                            result object, otherwise it will          new LookupListener() {
NetBeans IDE can generate for you.                                                                          be garbage collected.                      @Override
                                                                                                                                                       public void resultChanged(LookupEvent e)(
                                                                                                                                                          Result res = (Result) e.getSource();
Though the default modes should be sufficient for most                                                                                                    Collection<? extends MyObject>
                                                                                                                                                          coll = res.allInstance();
business scenarios, you might like to adjust them. In that case,                                                                                          //iterate through the collection
you are creating your own mode definitions. A mode definition                                                                                         }
                                                                                                                                                   );
must follow the related DTD, which is as follows:
                                                                                                                                                   lkpResult.allInstances(); // first call is needed
http://netbeans.org/dtds/mode-properties2_1.dtd
                                                                                                            Create a Lookup for an object?         //Lookup for single object:
                                                                                                                                                   Lookup lkp = Lookups.singleton( myObject );

                                                                                                                                                   //Lookup for multiple objects:
        Hot         Hide the existing modes and create your own, if the                                                                            Lookup lkp = Lookups.fixed(myObject, other);

        Tip         existing ones are really not sufficient for you.                                                                               //Lookup for dynamic content:
                                                                                                                                                   InstanceContent ic = new InstanceContent();
                                                                                                                                                   Lookup lkp = new AbstractLookup(ic);
                                                                                                                                                   ic.add(myObject);
The window manager handles the display of the windows in                                                    Merge Lookups?                         Lookup commonlkp = new ProxyLookup( dataObjectLookup,
                                                                                                                                                   nodeLookup, dynamicLookup);
the application’s main frame. Aside from being able to access
its main Frame, you can also query it for information, as listed                                            Provide a Lookup for my                //In the constructor of TopComponent:
                                                                                                            TopComponent?                          associateLookup(myLookup);
below:
                                                                                                            Provide a Lookup for a subclass        new AbstractNode(myKids, myLookup);
                                                                                                            of AbstractNode?
 How do I...                          Description

 Find a specific                      WindowManager.getDefault().findTopComponent(“id”)                    Central Registry (System FileSystem)
 TopComponent?
                                                                                                           The central registry is organized as a virtual file system
 Find a specific mode?                WindowManager.getDefault().findMode(“id”)
                                                                                                           accessible by all the modules in a NetBeans Platform
                                      Once you have found a mode, you can use Mode.dockInto(tc)
                                      to programmatically dock a TopComponent into a specific              application. NetBeans Platform APIs, such as the Window
                                      mode.
                                                                                                           System API, make available extension points enabling you
 Find a specific                      WindowManager.getDefault().findTopComponent                          to declaratively register your components. A module’s
 TopComponentGroup?                   Group(“id”)
                                                                                                           contributions to the system are provided by specialized XML
 Ensure that the application is       WindowManager.getDefault().invokeWhenUIReady(Runnable)
 fully started up?                                                                                         files, called “layer files”, normally named “layer.xml”.
 Get the active                       WindowManager.getDefault().getRegistry().
 TopComponent?                        getActivated()                                                       Below are the most important extension points provided out
 Get a set of opened                  WindowManager.getDefault().getRegistry().getOpened()                 of the box by the NetBeans APIs, represented by folders in a
 TopComponents?
                                                                                                           layer file:
 Get the main frame of the            WindowManager.getDefault().getMainWindow()
 application                                                                                               Actions, Menu, Toolbars, Navigator/Panels, OptionsDialog, Services,
                                                                                                           Shortcuts, TaskList, and Windows2.
Lookup                                                                                                     The NetBeans Platform helps you to register items correctly
Lookup is a data structure for loosely coupled communication.                                              in the file system by letting you, in some cases, annotate your
It is similar to but more powerful than the ServiceLoader                                                  classes instead of requiring you to manually type XML tags
class in JDK 6 (for example, Lookup supports event                                                         in the layer.xml file by hand. The current set of annotations
notifications) enabling you to load objects into the context                                               impacting the layer.xml is listed below:

                                                                                         DZone, Inc.   |   www.dzone.com
4
                                                                                                                                                 Essential NetBeans Platform



@AntBasedProjectRegistration, @CompositeCategoryProvider.Registration,                                       actions (AbstractAction, ActionListener, etc) in any way.
@EditorActionRegistration,@LookupMerger.Registration, @LookupProvider.
                                                                                                             Instead, you need to bind them to one of the classes listed
Registration, @NodeFactory.Registration, @OptionsPanelController.
ContainerRegistration, @OptionsPanelController.SubRegistration,                                              above, using the layer.xml file to do so.
@OptionsPanelController.TopLevelRegistration, @ProjectServiceProvider,                                       Actions.alwaysEnabled:
@ServiceProvider, @ServicesTabNodeRegistration
                                                                                                              <file name=”your-pkg-action-id.instance”>
The registry makes use of the FileSystem API to access the                                                       <attr name=”instanceCreate”
                                                                                                                      methodvalue=”org.openide.awt.Actions.alwaysEnabled”/>
registered data.                                                                                                 <attr name=”delegate”
FileSystem API                                                                                                        methodvalue=”your.pkg.YourAction.factoryMethod”/>
                                                                                                                 <attr name=”displayName” bundlevalue=”your.pkg.Bundle#key”/>
The FileSystem API provides stream-oriented access to flat                                                       <attr name=”iconBase” stringvalue=”your/pkg/YourImage.png”/>
                                                                                                                 <!-- if desired: <attr name=”noIconInMenu” boolvalue=”false”/>
and hierarchical structures, such as disk-based files on local or                                                <!-- if desired: <attr name=”asynchronous” boolvalue=”true”/>
                                                                                                              </file>
remote servers, memory-based files and even XML documents.
Items within the folders in the layer.xml file are not java.io.Files,                                        Actions.context:
but org.openide.filesystems.FileObjects. The differences                                                      <file name=”action-pkg-ClassName.instance”>
                                                                                                               <attr name=”instanceCreate”
between them are as follows:                                                                                        methodvalue=”org.openide.awt.Actions.context”/>
 java.io.File                           org.openide.filesystems.FileObject                                     <attr name=”type” stringvalue=”org.netbeans.api.actions.Openable”/>
                                                                                                               <attr name=”selectionType” stringvalue=”ANY”/> (or EXACTLY_ONE)
 Create with a constructor              Get from the FileSystem                                                <attr name=”delegate” newvalue=”action.pkg.YourAction”/>
                                                                                                               <attr name=”key” stringvalue=”KeyInActionMap”/>
 Can represent something that           Typically represents something that exists                             <attr name=”surviveFocusChange” boolvalue=”false”/>
 doesn’t exist, such as new                                                                                    <attr name=”displayName” bundlevalue=”your.pkg.Bundle#key”/>
 File(“some/place/that/doesnt/                                                                                 <attr name=”iconBase” stringvalue=”your/pkg/YourImage.png”/>
 exist”)
                                                                                                               <!-- if desired: <attr name=”noIconInMenu” boolvalue=”false”/>
 Cannot listen to changes               FileChangeListener listens to changes to FileObject, as well           <!-- if desired: <attr name=”asynchronous” boolvalue=”true”/>
                                        as anything beneath the FileObject                                    </file>

 Represents a file on disk              Not necessarily a file on disk, could be in a database, FTP          Actions.callback:
                                        server, virtual, or anywhere else
                                                                                                              <file name=”action-pkg-ClassName.instance”>
 No attributes                          Can have attributes, which are key-value pairs associated
                                                                                                                 <attr name=”instanceCreate”
                                        with a FileObject
                                                                                                                    methodvalue=”org.openide.awt.Actions.callback”/>
                                                                                                                 <attr name=”key” stringvalue=”KeyInActionMap”/>
Converting between common data types:                                                                            <attr name=”surviveFocusChange” boolvalue=”false”/>
                                                                                                                 <attr name=”fallback” newvalue=”action.pkg.DefaultAction”/>
 How do I get...                              Description
                                                                                                                 <attr name=”displayName” bundlevalue=”your.pkg.Bundle#key”/>
 a java.io.File for a FileObject?             FileUtil.toFile(FileObject fo)                                      <attr name=”iconBase” stringvalue=”your/pkg/YourImage.png”/>
                                                                                                                  <!-- if desired: <attr name=”noIconInMenu” boolvalue=”false”/>
 a FileObject for a File?                     FileUtil.toFileObject(File f)                                       <!-- if desired: <attr name=”asynchronous” boolvalue=”true”/>
                                                                                                              </file>
 a DataObject for a FileObject?               DataObject.find (theFileObject)

 a FileObject for a DataObject?               theDataObject.getPrimaryFile()
                                                                                                             For all the details, see http://bits.netbeans.org/6.8/javadoc/
 a Node for a DataObject?                     theDataObject.getNodeDelegate()                                org-openide-awt/org/openide/awt/Actions.html
 a DataObject for a Node?                     DataObject dob = (DataObject) theNode.
                                              getLookup().lookup (DataObject.class);                         An action is registered in the layer.xml file in the “Actions”
                                              if (dob != null) {
                                               //do something                                                folder, within a folder reflecting its place in the action pool.
                                              }

 a reference to the System FileSystem?        //Get the root:                                                 <folder name=”Actions”>
                                              FileUtil.getConfigRoot()                                              <folder name=”Window”>
                                              //Get a specific folder:                                                 <file name=”your-pkg-action-id.instance”>
                                              FileUtil.getConfigFile(“path/to/my/folder”)                                  ...
                                                                                                                       </file>
The NetBeans Platform provides a number of custom URLs for                                                         </folder>
                                                                                                              </folder>
accessing things.
 jar             For representing entries inside JARs and ZIPs, including the root directory entry
                                                                                                             Depending on your business requirements, once you have
 nbres           A resource loaded from a NetBeans module, e.g.
                 nbres:/org/netbeans/modules/foo/resources/foo.dtd
                                                                                                             actions registered in the layer.xml file, you need to bind them
                                                                                                             to menu items, toolbar buttons, and keyboard shortcuts.
 nbresloc        Same, but transparently localized and branded according to the usual conventions,
                 e.g. nbresloc:/org/netbeans/modules/foo/resources/foo.html may actually load the
                 same thing as nbres:/org/netbeans/modules/foo/resources/foonbja.html.                       Menu Items
 nbinst          Loads installation files using InstalledFileLocator in installation directories, e.g.        <folder name=”Menu”>
                 nbinst:///modules/ext/some-lib.jar may load the same thing as file:/opt/netbeans/                  <folder name=”Window”>
                 ide4/modules/ext/some-lib.jar.                                                                         <file name=”your-pkg-action-id.shadow”>
                                                                                                                            <attr name=”originalFile” stringvalue=”Actions/Window/
 nbfs            Refers to a file object in the System FileSystem (XML layers). For example, nbfs:/                           your-pkg-action-id.instance”/>
                 SystemFileSystem/Templates/Other/html.html refers to an HTML file template
                 installed in the IDE                                                                                       <attr name=”position” intvalue=”50”/>
                                                                                                                        </file>
Actions                                                                                                             </folder>
                                                                                                              </folder>
Actions are pieces of code that are invoked when the user
presses a menu item, toolbar button, or keyboard shortcut.                                                   Toolbar Buttons
 Type                          Description                                                                    <folder name=”Toolbars”>
                                                                                                                    <folder name=”Window”>
 Actions.alwaysEnabled         An action that is always enabled. Typically, use this for “File > Open”
                                                                                                                        <file name=”your-pkg-action-id.shadow”>
                               actions, for example.
                                                                                                                            <attr name=”originalFile” stringvalue=”Actions/Window/
 Actions.context               An action that is bound to a context. If an action should only be                              your-pkg-action-id.instance”/>
                               enabled under certain conditions, use this action.                                           <attr name=”position” intvalue=”50”/>
                                                                                                                        </file>
 Actions.callback              An action with an assigned key used to find a delegate in the                        </folder>
                               ActionMap of the active component.                                             </folder>

When porting your existing application to the NetBeans
Platform, you do not need to change your standard JDK

                                                                                         DZone, Inc.     |   www.dzone.com
5
                                                                                                                                                          Essential NetBeans Platform



Shortcuts                                                                                                 LayerWidget                Provides a transparent surface, comparable to a JGlassPane.
 <folder name=”Shortcuts”>                                                                                ComponentWidget            Provides a placeholder widget for AWT/Swing components.
    <file name=”M.shadow”>
        <attr name=”originalFile”
           stringvalue=”Actions/Edit/org-netbeans-modules-                                                ImageWidget                Provides images to the scene.
             some-MyAction.instance”/>
     </file>                                                                                              LabelWidget                Provides a label as a widget.
     <file name=”D-M.shadow”>
         <attr name=”originalFile”
           stringvalue=”Actions/Edit/org-netbeans-modules                                                 IconNodeWidget             Provides an image and a label.
             some-CtrlMyAction.instance”/>
     </file>                                                                                              ConnectionWidget           Provides connections between widgets, with anchors, control poins,
     <file name=”O-M.shadow”>                                                                                                        and end points.
         <attr name=”originalFile”
           stringvalue=”Actions/Edit/org-netbeans-modules
                                                                                                          ConvolveWidget             Provides coil/twist effect, i.e., a convolve filter to a child element.
             some-AltMyAction.instance”/>
     </file>
 </folder>                                                                                                LevelOfDetailsWidget       Provides a container for widgets, with visibility and zoom features.

                                                                                                          ScrollWidget/              Provides a scrollable area, with/ without JScrollBar as scroll bars.
As key code, use KeyEvent.VK_keycode without VK_                                                          SwingScrollWidget
prefix, as described in Javadoc of org.openide.util.Utilities                                             SeparatorWidget            Provides a space with thickness and orientation.
stringToKey() and keyToString() methods.
                                                                                                         For all the details, see http://bits.netbeans.org/6.8/javadoc/
Nodes
                                                                                                         org-netbeans-api-visual.
A Node is a generic model for a business object, which it
visualizes within an Explorer View. Each Node can have visual                                            Dialogs
attributes, such as a display name, icon, and actions. The list of                                       The NetBeans Dialogs API provides a number of standard
Nodes is below, which you can use as is or extend as needed:                                             dialogs for displaying standard messages for information,
 Type                Description
                                                                                                         questions (such as “Are you sure?”, when saving), input, and
 Node                Base class for representing business objects to the user.
                                                                                                         error messages to the user. Each dialog comes with a standard
                                                                                                         appearance, buttons, and icons.
 AbstractNode        The usual base class for Node implementations.
                                                                                                          Type                    Description
 DataNode            Specialized Node class for wrapping a file and displaying it as a Node to the
                     user.                                                                                Information Dialog      NotifyDescriptor d = new NotifyDescriptor.Message(“Text”);

 BeanNode            Specialized Node class that wraps a JavaBean and presents it to the user as a        Question Dialog         NotifyDescriptor d = new NotifyDescriptor.Confirmation(“Title”, “Text”);
                     Node. It also provides simplistic access to property sheets.
                                                                                                          Input Dialog            NotifyDescriptor d = new NotifyDescriptor.InputLine(“Title”, “Text”);
 FilterNode          Specialized Node class that decorates an existing Node by adding/removing
                     features to/from it.
                                                                                                         Add the Dialogs API to your module and then use the table
A Node is a container for its own child Nodes. These classes                                             above to create dialogs as follows (in the example below, we
create child Nodes:                                                                                      display an information dialog):
 ChildFactory            Factory for creating child Nodes. Optionally, these can be created               NotifyDescriptor d = new NotifyDescriptor.Message(“Text”);
                         asynhronously, that is, when the user expands the Node.                          DialogDisplayer.getDefault().notify(d);
 Children.Keys           Older version of ChildFactory. You should be able to replace any
                         implementation of Children.Keys with ChildFactory.
                                                                                                         For all the details, see http://bits.netbeans.org/6.8/javadoc/
Children.Array, Children.Map, Children.SortedArray,                                                      org-openide-dialogs.
Children.SortedMap:   These classes are less frequently used
and are no longer well supported.

Explorer Views                                                                                                   Hot          The Dialogs API also provides a group of Wizard
Explorer views are Swing components that display Node                                                            Tip          classes for multipage dialogs!
hierarchies.
 BeanTreeView               JTree for displaying Nodes.
                                                                                                         Other Useful NetBeans APIs
 OutlineView                JTree for displaying Nodes, with a JTable for displaying the related
                            Node properties.
                                                                                                          Type                         Description
 PropertySheetView          Property sheet displaying the properties of a Node.
                                                                                                          org.apache.tools.ant.        Used for running Ant targets.
                                                                                                          module.api.support.
IconView, ListView, ChoiceView, ContextTreeView,                                                          ActionUtils
MenuView, TableView:   These classes are less frequently used                                             org.openide.util.            Provides useful static methods for manipulation with images/icons,
                                                                                                          ImageUtilities               results are cached.
and are no longer well supported.
                                                                                                          org.openide.awt.Html-        Displays URLs, opens browsers, distinguishes embedded vs. external
                                                                                                          Browser.URLDisplayer         browsers.
For all the details, see http://bits.netbeans.org/6.8/javadoc/
org-openide-explorer.                                                                                     org.netbeans.api.
                                                                                                          progress.ProgressHandle
                                                                                                                                       Integrates visualization of long running tasks with the NetBeans
                                                                                                                                       Platform progress bar.

Visual Library                                                                                            org.openide.util.            Performs asynchronous threads in a dedicated thread pool.
                                                                                                          RequestProcessor
The NetBeans visual library is a generic widget and graph
                                                                                                          org.openide.awt.             Listens to editing changes and activates the “Undo” and “Redo”
library, providing a collection of predefined widgets that                                                UndoRedo                     buttons.
integrate well with other NetBeans Platform objects, such as
Nodes and windows. Below is the list of widgets provided by
                                                                                                                              Explore the Utilities API (org.openide.util.jar) for
this library.                                                                                                    Hot          many useful classes that all NetBeans Platform
 Type                       Description                                                                          Tip
                                                                                                                              applications can use.
 Scene                      Provides the root element of the hierarchy of displayed widgets.




                                                                                       DZone, Inc.   |   www.dzone.com
6
                                                                                                                                                                                                                                                                                                                                                                         Essential NetBeans Platform




                                                                               NETBEANS PLATFORM GOTCHAS                                                                                                                                                                                                                               NETBEANS PLATFORM ON-LINE

                                                             The following are frequently asked questions, returning over                                                                                                                                                                                                      Technical information on the NetBeans Platform is available
                                                             and over again, with their answers:                                                                                                                                                                                                                               on-line in many different forms. The most important of these
                                                                                                                                                                                                                                                                                                                               are listed below:
                                                                  FAQ                                                                                                                                Answers
                                                                                                                                                                                                                                                                                                                                Site                    URL
                                                                  What’s the difference between a                                                                                                    The former gives you a subset of the NetBeans
                                                                  ‘NetBeans Platform Application’ and a                                                                                              Platform, the latter a subset of NetBeans IDE. Use the                                                                     Homepage                http://platform.netbeans.org
                                                                  ‘Module Suite’?                                                                                                                    former when building on the NetBeans Platform, the
                                                                                                                                                                                                     latter when building on NetBeans IDE.                                                                                      Tutorials               http://platform.netbeans.org/tutorials

                                                                  Why is my explorer view not                                                                                                        Because you need to add this line to the                                                                                   NetBeans API javadoc    http://bits.netbeans.org/6.8/javadoc/
                                                                  synchronized with the Properties                                                                                                   TopComponent constructor:
                                                                  window?                                                                                                                            associateLookup(ExplorerUtils.createLookup(em,                                                                             Blogs                   http://planetnetbeans.org
                                                                                                                                                                                                     getActionMap());
                                                                                                                                                                                                                                                                                                                                FAQ                     http://wiki.netbeans.org/NetBeansDeveloperFAQ

                                                                  I created a palette but it isn’t                                                                                                   Because your TopComponent is not in ‘editor’ mode.                                                                         Mailing List            dev@platform.netbeans.org
                                                                  showing when I open the related                                                                                                                                                                                                                                                       http://netbeans.org/platform/lists/dev/archive
                                                                  TopComponent.
                                                                                                                                                                                                                                                                                                                                Screencast              http://platform.netbeans.org/tutorials/nbm-10-top-apis.html


                                                                                              This Refcard could not have been made without the technical insights provided by the following: Tim Boudreau, Tim Dudgeon,
                                                                                                            Jeremy Faden, Laurent Forêt, Jesse Glick, Manikantan, Ernie Rael, Antonio Vieiro and Tom Wheeler.



                                                      ABOUT THE AUTHORS                                                                                                                                                                                                                                                        RECOMMENDED BOOKS
                                                                        Heiko Böck is the author of the well-known “The Definitive Guide to NetBeans Platform”                                                                                                                                                                                  The Definitive Guide to NetBeans™ Platform is a thorough
                                                                                                                                                                                                                                                                                                                                                and definitive introduction to the NetBeans Platform, cover-
                                                                                                                                                                                                                                                                                                                                                ing all its major APIs in detail, with relevant code examples
                                                                        Anton Epple (http://eppleton.sharedhost.de/) is a NetBeans Platform consultant & trainer.                                                                                                                                                                               used throughout.

                                                                                                                                                                                                                                                                                                                                                                           BUY NOW
                                                                        Miloš Šilhánek is a Java, NetBeans Platform, 3D and AI enthusiast and Czech translator of                                                                                                                                                                               books.dzone.com/books/definitive-guide-netbeans
                                                                        Heiko Böck’s book.


                                                                        Andreas Stefik is an Assistant Professor at Southern Illinois University Edwardsville.
                                                                                                                                                                                                                                                                                                                                               Rich Client Programming will help you get started with
                                                                                                                                                                                                                                                                                                                                               NetBeans module development, master NetBeans’ key
                                                                                                                                                                                                                                                                                                                                               APIs, and learn proven techniques for building reliable
                                                                                                                                                                                                                                                                                                                                               desktop software.
                                                                        Tom Wheeler (http://www.tomwheeler.com) has worked with NetBeans Platform nearly every
                                                                        day for the past five years and is a consultant, trainer and member of the NetBeans Dream                                                                                                                                                                                                          BUY NOW
                                                                        Team.
                                                                                                                                                                                                                                                                                                                                                       books.dzone.com/books/richclientprog
                                                                        Geertjan Wielenga works on the NetBeans team and is co-author of “Rich Client
                                                                        Programming: Plugging into the NetBeans Platform”




                                                                                                                                                                                                          Bro
                                                                                                                                                                                                                  ugh
                                                                                                                                                                                                                         t to
                                                                                                                                                                                                                                you
                                                                                                                                                                                                                                           by...    Professional Cheat Sheets You Can Trust
                                                                                                                                                                                                                                                                                                                                               “Exactly what busy developers need:
                                                                                                                                                                                                                                   rns
                                                                                                                                                                                                                               atte
                                                                                                                                                                                                                                                                                                                                                 simple, short, and to the point.”
                                                                                                                                                                                                                              P                ld

                                                                                                                                                                  ign
                                                                                                                                                                                                                                            ona
                                                                                                                                                                                                                                         McD

                                                                                                                                                               Des                                                              By
                                                                                                                                                                                                                                   Jason                                                                                                                      James Ward, Adobe Systems
#8
                                                                                                                                     ired
                                                                                                                                 Insp e
                                                                                                                                   by th
                                                                                                                                     GoF ller                                                                                              con
                                                                                                                                                                                                                                                    tinu
                                                                                                                                                                                                                                                                    ed
                                                                                                                                                                                                                                                                             ndle
                                                                                                                                                                                                                                                                                        r doe
                                                                                                                                                                                                                                                                                             sn’t
                                                                                                                                                                                                                                                                                                    have
                                                                                                                                                                                                                                                                                                         to
                                                                                                                                                                                                                                                                                                                                               Upcoming Titles                              Most Popular
                                                                                                                                                                                                                                ity,
                                                                                                                                                                                                                                                                                                          r
                                             E:                                                                                                                                                                                                                          e ha                        ndle
                                                                                                                                                                                                                                                                    d th
                                        LUD                                                                                        Best
                                                                                                                                        se
                                                                                                                                                                                                                        ibil                            st an                            ith th
                                                                                                                                                                                                                                                                                                e ha
                                   IN C                                                                                                                                                                          ons                               que                             st w
                                                                                                                                                                                                                                                                                                                                               Blaze DS                                     Spring Configuration
                                                                                                                                                                                                                                                                           Download Now
                                                 y                                                                                                                                                                                           a re
                              TS           bilit                                                                                                                                              esp                                                                           que
                                                                                                                                                                                                                                      le                                 re                          om e.
                        TEN           onsi                                                                                                                                               of R                         ay         hand
                                                                                                                                                                                                                                             hand
                                                                                                                                                                                                                                                                    le a l                      outc
                    ON                                                                                                                                                                                           sm                                                                           an
                  C             Resp                                                                                                                                               in                       ject                      le to                        entia                hen
                                                                                                                                                                           Cha
                                                                                                                                                                                                                                                               pot                   .W
                                                                                                                                                                                                                                                                                                                                               Domain Driven Design                         jQuery Selectors
                              f                                                                                                                                                                                          .
                         in o d                                                                                                                                                                      le ob       bject         be ab                       ble                  tern ethod
     m




                                                                                                                                                                                            	 Multip ecific o should                                  pta
                     Cha
                                                                                                                                                                                                                                                                            pat
                                                                                                                                                                                                                                                acce                  this if the m up the
                           man r
     z.co




                   n	                                                                                                                                                                            n
                                                                                                                                                                                                    sp             s                      is an                  ents
                                                                                                                                                                                               be a           ject ntime.                                                  see passed
                      C om       te                                                                                                                                            Use                     of ob         ru
                                                                                                                                                                                                                              hand
                                                                                                                                                                                                                                    led                    plem ks to           e            de to
                            rpre                                                                                                                                                               	 set ined at                                       es im e chec ould b                 til co
                                                                                                                                                                                                                                                                                                                                               Virtualization                               Windows Powershell
                        n	




                                                                                                                                                                                                                                                                Refcardz.com
                                                                                                                                                                                  hen         n A
                                                                                                                                                                                                                      being                    uag                                 s un arent
                       Inte                                                                                                                                                     W                     er m
                                                                                                                                                                                                                not                         ng           im
                                                                                                                                                                                                                                       e la the runt or if it
                                                                                                                                                                                                                                                                     sh      peat ore p
                              tor                                                                                                                                                                det                                                                     s re
      a rd




                                                               ...
                             n	
                                                                                                                                                                                                          uest                   som                    tion proces e no m
                        Itera tor                          ore                                                                                                                                    	 req
                                                                                                                                                                                                 n A                        g in metho
                                                                                                                                                                                                                                             d
                                                                                                                                                                                                                                                  cep
                              dia                       dm                                                                                                                                                           ndlin                    e ex ack th
                                                                                                                                                                                                                                                               e        e ar
                                  n	
                                                                                                                                                                                                                                  a                                ther
                                                   d an                                                                                the
                          Me rver                                                                                                                                                                              n ha rown in ndle th               ll st      until
                                                                                                                                                                                                                                                                                                                                               Java Performance Tuning                      Dependency Injection with EJB 3
         re f c




                                            tho                                                                                 e to                                                                      ptio        th
                                                                                                                                                                                                   Exce ion is sm to ha up th tered or
                                                                                                                                                                                                                                              e ca
                                       n	


                           Ob
                                se       Me                               S                                               renc                                                                                                                                                                          ral
                                  plate                                RN                                           refe listed in                                                         ple
                                                                                                                                                                                                           pt
                                                                                                                                                                                                     exce mecha n pass
                                                                                                                                                                                                                       ni          ed
                                                                                                                                                                                                                                         enco .
                                                                                                                                                                                                                                               un                                                  avio
                                                                                                                                                                                                                                                                                              Beh
                                                                   TTE
                                            n	
                                                                                                                                                                                       xam
                             Tem                                                                                ick                                                                  E                     a             he           is

                                                                                                                                                                                                                                                                                                                                               Expression Web                               Netbeans IDE JavaEditor
                                                                                                                                                                                                       has ack. W               tion uest to                                           ject
                                                                                  PA                      a qu         s, a
                                                                                                                             s          ct-                                                                                 cep                                                    Ob
                V is it




                                                 n	
                                                                                                                                                                                                                                        q
                                                                              IGN                      s                                                                                                     st
                                                                                                                 ttern le Obje s,                                                                       call          e ex         e re
                                                                                                 vide                                                                                                           le th        nd th
                                                                 DES                         pro           n pa       sab iagram .                                                                        hand s to ha
                                                            UT                       fcard F) desig of Reu                                                                                                 obje
                                                                                                                                                                                                                 ct
                                                       ABO                      s re
                                                                         ttern our (G
                                                                                             o
                                                                                                      ents des cla
                                                                                                                           ss d
                                                                                                                                    exa
                                                                                                                                          mp
                                                                                                                                              le
                                                                                                                                                                                                                                                            oke
                                                                                                                                                                                                                                                                  r
                                                                                                                                                                                                                                                                                                                                               Spring Web Flow                              Getting Started with Eclipse
            rz!




                                                                     Pa                                                                                                                                                                                 Inv
                                                                 ign          of F              lem                       worl
                                                                                                                                 d
                                                                                                                                                suc
                                                                                                                                                     h
                                                             Des                           s: E           inclu
                                                                        ang attern                                 real
                  ca




                                                                                                                                           cts                                         D
                                                        This al 23 G
                                                                           ign
                                                                                 P
                                                                                          ch
                                                                                                    ern
                                                                                              patt , and a                    uct
                                                                                                                                    obje enting
                                                                                                                                                                                MM
                                                                                                                                                                                   AN                                                                                                                                                          Continous Integration                        Very First Steps in Flex
                        ef




                                                              in     Des are. Ea                   tion                 nstr                m
                                                         orig                                                                          ple                                 CO                                                            and
                                                                   k
                                                               boo Softw                     rma                     o
                                                                                                                 to c their im                                                                                                 om
                                                                                                                                                                                                                                     m
                   re R




                                                          the                           info               sed                                                                           Clie
                                                                                                                                                                                              nt
                                                                                                                                                                                                                    cre
                                                                                                                                                                                                                         teC
                                                                    d             age                s: U          from                                                                                      Con
                                                                ente on, us                    er n           led                                ct                                                                       ()                                    ma
                                                                                                                                                                                                                                                                      nd
                                                            Ori                                                                                                                                                    cute
                                                                 lana
                                                                      ti                 Patt           oup                             eo
                                                                                                                                            bje                                                           +exe
                                                                                                                                                                                                                                                         Com )                                            s
                                                                                                                                                                                                                                                                                                                           DZone, Inc.
                                  Mo




                                                             exp                   nal             dec                            larg                                                                                                                     cute
                                                                                                                                                                                                                                                                   (
                                                                                                                                                                                                                                                                                               is al
                                                                                                                                                                                                                                                                                                     low
                                                                             atio can be                                    rm              ts.                                                                                                     +exe                                 . Th
                                                                                                                                                                                                                                                                                 bject nship
                                                                                                                                                                                                                                                                                                     s su
                                                                                                                                                                                                                                                                                                          ch
                                                                        Cre                                                             jec
                                                                                 the
                                                                                      y                                  fo
                                                                                                                  d to rate ob                            s,                                                                                                                an o
                                                                                                                                                                                                                                                                     d as ed rela
                                                                                                                                                                                                                                                                                        tio
                                                                                                                                                                                                                                                                                                                                                                          ISBN-13: 978-1-934238-94-3
                                            Get




                                                                              t                              Use                                       m
                                                                          tha
                                                                           syste
                                                                                   m.
                                                                                            l Pa
                                                                                                        ns:
                                                                                                  tter many d
                                                                                                                      ispa
                                                                                                                                 ana
                                                                                                                                      ge a
                                                                                                                                             lgo
                                                                                                                                                  rith
                                                                                                                                                 n ob
                                                                                                                                                       jec  ts.
                                                                                                                                                                                                  ece
                                                                                                                                                                                                      ive
                                                                                                                                                                                                           r
                                                                                                                                                                                                                                            ing
                                                                                                                                                                                                                                      low aditiona
                                                                                                                                                                                                                                                  it to lly o
                                                                                                                                                                                                                                                              eate
                                                                                                                                                                                                                                                         be tr bject b
                                                                                                                                                                                                                                                                            as
                                                                                                                                                                                                                                                                                                                           140 Preston Executive Dr.                      ISBN-10: 1-934238-94-5
                                                                                         ra             en                to m betwe
                                                                                                                                               e                                                R                                  al                                                                  s.
                                                                                                  twe                                                                                                                       uest                                                                  der
                                                                                                                                                                                                                                              tr
                                                                                    ctu                                                                                                                                req ndled in                                                        nt or
                                                                             Stru           s be                    sed
                                                                                     cture                     s: U         ilitie
                                                                                                                                   s
                                                                                                                                                   at c
                                                                                                                                                         an                                                  late
                                                                                                                                                                                                                  sa
                                                                                                                                                                                                                         e ha
                                                                                                                                                                                                                    to b llbacks
                                                                                                                                                                                                                                         .                                   or in
                                                                                                                                                                                                                                                                                    varia                   catio
                                                                                                                                                                                                                                                                                                                   n.
                                                                                                                                                                                                                                                                                                                           Suite 100
                                                                                                                                                                                                                                                                                                                                                                                                                 50795
                                                                                                                                                                                                       psu
                                                                                                       ttern
                                                                                                                                                                                                                                                                                                        invo
                                                                               stru                                   nsib                    s th                                                Enca quest                                                         times                        the
                                                                                                 l Pa d respo                            ship                                                                           d ca                         y.                                     ling
                                                                                                                                                                                                       re
                                                                                                                                                                                                                 ng an                         nalit         riant                                               g
                                                                                           iora          n                        tion                                                  pose       the
                                                                                                                                                                                                          ueui                         nctio led at va                         ject
                                                                                                                                                                                                                                                                                    hand                    ssin e
                                                                                       hav hips, a                          rela                                                    Pur
                                                                                                                                                                                                    as q                        k fu                                                                   roce       b

                                                                                                                                                                                                                                                                                                                           Cary, NC 27513
                                                                                                                                                               e                                                          llbac be hand ed.                              e ob                    us p lity to
                                                                                  Be          s                         ct                                nb                                                       ed ca                                          m th                   rono
                                                                                         tion                     obje                              t ca                                               	 You ne s need
                                                                                                                                                                                                                                to             need led fro                        ynch functio
                                                                                                                                                                                                                                                                                                        na
                                                                                                                                                                                                                                                                                                            any
                                                                                                                                                                                                                                                                                                                 need
                                                                                    rela                      ith                              tha                                                                                    st s is
                                                                                                                                                                                                                                                   coup                      e as the                    ut
                                                                                                        ls w                              ips                                                                       st          que                                     e th                       itho        it is
                                                                                                                                                                                                                                                    n

                                                                                                                                                                                                         	 Reque y of re                   be de                                                                      ar
                                                                                                  Dea e.                             nsh                                                                                          ould                       faci
                                                                                                                                                                                                                                                                  litat pattern ssing w tation articul
                                                                                             pe:                              latio                                                      Use                         or                                 n
                                                                                                                                                                                                                                                                          d                         en          p
                                                                                                                                                                                                           	 A hist          r sh                                                   ce
                                                                                                                                                                                                                                                      ed to mman for pro implem ents its ting.
                                                                                        Sco           ntim                                                            pe                       n                       voke
                                                                                                                         s re                                    toty                     Whe                                                  y us
                                                                                                                                                                                                                                                            n
                                                                                                                                                                                                                                                            co                                                  ec
                                                                                                                   clas                                                                                      	 The in                                                                           plem is exp
                                                                                                                                                                                                                                                                                                                           888.678.0399
                                                                                                                                                                                                                                                                                  tual
                                                                                 ject ed at ru                                                                                                                                           idel           the            ue
                                                                                                                                                             Pro                                                                   e w ilizing                  que

                                            DZone communities deliver over 6 million pages each month to
                                                                                                                                                                                                                                                                             e ac ued im
                                                                            Ob                               with                                                                                                                                          job
                                                                                                                                                                                                                                                                n
                                                                                                                                                        C                                                                     s ar                                      f th                         ue
                                                                                         g                                                                                                                             ueue s. By
                                                                                                                                                                                                                                           ut         to a      ge o            que          e que
                                                                                    han               eals me.                                                     xy                                              bq                         iven owled at is en rface th
                                                                             be c              e: D ile ti                                                     Pro                                              Jo           hm be g
                                                                                                                                                                                                                       gorit                          kn       ct th        inte
                                                                                          cop                                          r                  S                                                                        n
                                                                                                         p                        rato                                    er                       mp
                                                                                                                                                                                                      le         of al ed ca to have d obje of the
                                                                                     ss S at com                                                                     serv
                                                                                                                                                                                                                                                                                                                           919.678.0300
                                                                                                                                                                                               Exa                      ut
                                                                                                                           Deco                                                                                                                              nes
                                                                                                                                                                                                                                                    an
                                                              .com




                                                                                                                                                                 Ob                                               exec e queue comm
                                                                                Cla         d                         S                                                                                                                                confi

                                            more than 3.3 million software developers, architects and decision
                                                                                                                                                             B                                                          th             e
                                                                                       nge                                         de                                    leto
                                                                                                                                                                              n                                     for
                                                                                                                                                                                                                           king
                                                                                                                                                                                                                                 . Th
                                                                                                                                                                                                                                        ithin
                                                                                                                                                                                                                                                 the
                                                                                  cha                    tory                Faca               od                 Sing                                              invo hm w
                                                                                                                Fac                                           Meth
                                                                                                                                         S                                           C                                                                                            rit
                                                                                                           ract                                                                                                                                                            algo
                                                                  one




                                                                                                       Abst                                              tory
                                                                                                                                                     Fac                                         State
                                                                                               C                                             C
                                                                                                                                                                                                                                                                                                                           Refcardz Feedback Welcome
                                                                                                                                                                                                                                                                                                                                                                                                                                $7.95




                                                                                                                                                                  t                      B
                                                                                                                 r                                          eigh
                                            makers. DZone offers something for everyone, including news,     pte                                                                                                  y
                                                                                                        Ada                                            Flyw                                                 teg
                                                                                                                                                                                                     Stra             od
                                                                          z




                                                                                                   S                                             S
                                                                                                                                                                    ter                      B                    Meth
                                                                     w. d




                                                                                                                      ge                                      rpre                                          plate
                                                                                                               Brid                                      Inte
                                                                                                       S
                                                                                                                             r
                                                                                                                                                     B
                                                                                                                                                               rato
                                                                                                                                                                     r                           B
                                                                                                                                                                                                         Tem
                                                                                                                                                                                                                    r                                                                                                      refcardz@dzone.com
                                            tutorials, cheatsheets, blogs, feature articles, source code and more.      ilde                                                                                  isito
                                                                          ww




                                                                                                                                                                                                                                                                                                                                                                      9 781934 238943
                                                                                                                   Bu                                  B
                                                                                                                                                           Ite                                            V
                                                                                                           C                                                            r                            B
                                                                                                                        in o
                                                                                                                             f
                                                                                                                                  ty                              diato                                                              ral
                                                                                                                    Cha nsibili                               Me                                                              avio
                                                                                                                                                                                                                        Beh
                                                                                                                                                                                                                                                                                                                           Sponsorship Opportunities
                                                                                                               B           o                             B
                                                                                                                                                                          to
                                                                                                                     Resp                                            men                                         ject
                                                                                                                                                                Me                                        Ob
                                            “DZone is a developer’s dream,” says PC Magazine.
                                                                       ITY
                                                                                                                   B
                                                                                                                       Com
                                                                                                                             man
                                                                                                                                 d                         B



                                                                                                                        S
                                                                                                                          Com
                                                                                                                               posi
                                                                                                                                    te

                                                                                                                                                          PO
                                                                                                                                                               NSIB
                                                                                                                                                                      IL
                                                                                                                                                                                             succ
                                                                                                                                                                                                     ess
                                                                                                                                                                                                            or                                                                                                             sales@dzone.com
                                                                                 OF
                                                                                                                                             RES
                                            Copyright © 2009 DZone, Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical,
                                                                             AIN
                                                                                                                                                                                                                                                                                                                                                                                                                  Version 1.0
                                                                          CH                               >>
                                            photocopying, or otherwise, without prior written permission of the publisher. Reference:
                                                                                              <<in
                                                                                                       ace
                                                                                                   terf ler
                                                                                                       d
                                                                                                                                                                             Han             ()
                                                                                                                                                                                        uest
                                                                                                                                                                                    req
                                                                                                                                                                               ndle
                                                                                                                                                                           +ha                                                         r2
                                                                                                                                                     nt                                                                         dle
                                                                                                                                             Clie                                                                         Han

More Related Content

ODP
MVC/DCI in NetBeans by Jaroslav Tulach
PDF
Eclipse vs Netbean vs Railo
DOC
Report swings
PDF
Novell ZENworks Application Virtualization Advanced Administration
PDF
Dave 3 presentation
PDF
Oracle VDI 3.3 Overview
PDF
Marakana Android Internals
PDF
Android for Java Developers at OSCON 2010
MVC/DCI in NetBeans by Jaroslav Tulach
Eclipse vs Netbean vs Railo
Report swings
Novell ZENworks Application Virtualization Advanced Administration
Dave 3 presentation
Oracle VDI 3.3 Overview
Marakana Android Internals
Android for Java Developers at OSCON 2010

What's hot (15)

PDF
Open Android
PPTX
Domino X Pages 8.5
PDF
Android Internals
PDF
Android: A 9,000-foot Overview
PDF
Android for Java Developers
PDF
Android For Managers Slides
PDF
Android Deep Dive
PDF
RIA Security - Broken By Design
PDF
VRE - User And Role Management
 
PPT
Android For Java Developers
PDF
2009 CTSA Profiles OpenSocial Poster
PDF
Tech Talk Comp Apps851 20090930
PDF
Azure Services Platform
PPT
Program development tools
Open Android
Domino X Pages 8.5
Android Internals
Android: A 9,000-foot Overview
Android for Java Developers
Android For Managers Slides
Android Deep Dive
RIA Security - Broken By Design
VRE - User And Role Management
 
Android For Java Developers
2009 CTSA Profiles OpenSocial Poster
Tech Talk Comp Apps851 20090930
Azure Services Platform
Program development tools
Ad

Viewers also liked (9)

PPTX
P1 rocioplanell
PPTX
otra cotizacion
PPT
Pocketpc
PPT
Tp9 g1-2010 v08
PPTX
Hardware
DOCX
Archivo 6 11
P1 rocioplanell
otra cotizacion
Pocketpc
Tp9 g1-2010 v08
Hardware
Archivo 6 11
Ad

Similar to Netbeans-platform ref_card (20)

PDF
Net Beans61 Platform
PDF
blueMarine photographic workflow with Java
PDF
Rich client programming plugging into the NetBeans Platform 1. print Edition ...
PDF
Presentation # 4
PDF
Rich client programming plugging into the NetBeans Platform 1. print Edition ...
PDF
Getting Started with the NetBeans Platform
PDF
Introduction To NetBeans IDE
PDF
NetBeans IDE & Platform
PPT
Netbeans IDE & Platform
PPTX
netbeansplatform overview
PDF
PDF
blueMarine Sailing with NetBeans Platform
PPTX
netbeansplatform overview
PPTX
20120315 netbeansplatform overview
PPT
Netbeans 110511004930-phpapp01
PPT
Implementation
PDF
Net Beans61 Ide
PPTX
Desktop Applications with NetBeans
ODP
NetBeans 6.5
ODP
Netbeans65 Osum Slides
Net Beans61 Platform
blueMarine photographic workflow with Java
Rich client programming plugging into the NetBeans Platform 1. print Edition ...
Presentation # 4
Rich client programming plugging into the NetBeans Platform 1. print Edition ...
Getting Started with the NetBeans Platform
Introduction To NetBeans IDE
NetBeans IDE & Platform
Netbeans IDE & Platform
netbeansplatform overview
blueMarine Sailing with NetBeans Platform
netbeansplatform overview
20120315 netbeansplatform overview
Netbeans 110511004930-phpapp01
Implementation
Net Beans61 Ide
Desktop Applications with NetBeans
NetBeans 6.5
Netbeans65 Osum Slides

Recently uploaded (20)

PDF
Microbial disease of the cardiovascular and lymphatic systems
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
DOC
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
PPTX
Lesson notes of climatology university.
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
PDF
Yogi Goddess Pres Conference Studio Updates
PDF
Computing-Curriculum for Schools in Ghana
PDF
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
PDF
Weekly quiz Compilation Jan -July 25.pdf
PPTX
GDM (1) (1).pptx small presentation for students
PDF
RTP_AR_KS1_Tutor's Guide_English [FOR REPRODUCTION].pdf
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
O7-L3 Supply Chain Operations - ICLT Program
PDF
Classroom Observation Tools for Teachers
PDF
Complications of Minimal Access Surgery at WLH
PDF
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
Microbial disease of the cardiovascular and lymphatic systems
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
Lesson notes of climatology university.
Chinmaya Tiranga quiz Grand Finale.pdf
Yogi Goddess Pres Conference Studio Updates
Computing-Curriculum for Schools in Ghana
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
Weekly quiz Compilation Jan -July 25.pdf
GDM (1) (1).pptx small presentation for students
RTP_AR_KS1_Tutor's Guide_English [FOR REPRODUCTION].pdf
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
O7-L3 Supply Chain Operations - ICLT Program
Classroom Observation Tools for Teachers
Complications of Minimal Access Surgery at WLH
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
Pharmacology of Heart Failure /Pharmacotherapy of CHF

Netbeans-platform ref_card

  • 1. #80 Get More Refcardz! Visit refcardz.com CONTENTS INCLUDE: n About NetBeans Platform Getting Started Essential NetBeans Platform n n Main Benefits n NetBeans Platform Modules n NetBeans Platform APIs n NetBeans Platform Gotchas and more... By Heiko Böck, Anton Epple, Miloš Šilhánek, Andreas Stefik, Geertjan Wielenga, and Tom Wheeler Window System Most serious applications need more than one window. Coding good ABOUT NETBEANS PLATFORM interaction between multiple windows is not a trivial task. The NetBeans window system lets you maximize/minimize, dock/undock, and drag-and- drop windows, without you providing the code. The NetBeans Platform is a generic framework for commercial Standardized UI Swing is the standard UI toolkit and is the basis of all NetBeans Platform Toolkit applications. A related benefit is that you can change look & feels very easily, and open source desktop Swing applications. It provides the and add internationalization and Java 2D effects to your applications “plumbing” that you would otherwise need to write yourself, Generic With the NetBeans Platform, you’re not constrained by one of the typical such as the code for managing windows, connecting actions Presentation pain points in Swing: the JTree model is completely different than the JList Layer model, even though they present the same data. Switching between them to menu items, and updating applications at runtime. The means rewriting the model. The NetBeans Nodes API provides a generic model for presenting your data. The NetBeans Explorer & Property Sheet NetBeans Platform provides all of these out of the box on top API provides several advanced Swing components for displaying Nodes. of a reliable, flexible, and well-tested modular architecture. Advanced Swing In addition to a window system, the NetBeans Platform provides many other Components UI-related components, such as a property sheet, a palette, wizards, complex In this refcard, you are introduced to the key concerns of the Swing components for presenting data, a Plugin Manager, and an Output window. NetBeans Platform, so that you can save years of work JavaHelp The JavaHelp API is an integral part of the NetBeans Platform. You can when developing robust and extensible applications. Integration create help sets in each of your modules and the NetBeans Platform will automatically resolve them into a single helpset. You can also bind help topics to UI components to create a context-sensitive help system for your GETTING STARTED application. To get started with the NetBeans Platform: NETBEANS PLATFORM MODULES Approach How to Get Started IDE Download NetBeans IDE, which includes NetBeans Platform development tools such as templates, wizards, and complete NetBeans Platform samples The NetBeans Platform consists of a large set of modules. You out of the box. do not need all of them. In fact, you only need 5. You also do www.dzone.com Maven Use the Maven archetypes for NetBeans Platform development: not need to have a user interface, meaning that you can create NetBeans Platform archetype: - GroupId: org.codehaus.mojo.archetypes server/console applications on the NetBeans Platform. - ArtifactId: netbeans-platform-app-archetype NetBeans Module archetype: The complete list of NetBeans Platform modules is provided - GroupId: org.codehaus.mojo.archetypes - ArtifactId: nbm-archetype below. Items in red are mandatory, items in green are optional. Ant Download the NetBeans Platform ZIP file, which includes a build harness. Module Description The build harness includes a long list of Ant targets for compiling, running, testing, and packaging NetBeans Platform applications. boot.jar Provides the runtime container. core.jar org-openide-filesystems.jar Join the NetBeans Community mailing lists! org-openide-modules.jar org-openide-util.jar org-netbeans-core.jar Provides the basic UI components provided by MAIN BENEFITS org-netbeans-core-execution.jar the NetBeans Platform, together with related org-netbeans-core-ui.jar infrastructure. org-netbeans-core-windows.jar The following are the main features of the NetBeans Platform, showing you the benefits of using it rather than your homegrown Swing framework. Feature Description Module System Modularity offers a solution to “JAR hell” by letting you organize code into Essential NetBeans Platform strictly separated and versioned modules. Only modules that have explicitly declared dependencies on each other are able to use code from each other’s exposed packages. This strict organization is of particular relevance to large applications developed by engineers in distributed environments, during the development as well as the maintenance of their shared codebase. Lifecycle Just as application servers such as GlassFish provide lifecycle services to web Management applications, the NetBeans runtime container provides services to Swing applications. Application servers understand how to compose web modules, EJB modules, and so on, into a single web application, just as the NetBeans runtime container understands how to compose NetBeans modules into a single Swing application. Pluggability End users of the application benefit because they are able to install modules into their running applications via an update center, since NetBeans modules can be installed, uninstalled, activated, and deactivated at runtime. Service The NetBeans Platform provides an infrastructure for registering and Infrastructure retrieving service implementations, enabling you to minimize direct dependencies between individual modules and enabling a loosely coupled architecture with high cohesion and low coupling. File System Unified API providing stream-oriented access to flat and hierarchical structures, such as disk-based files on local or remote servers, memory-based files and even XML documents. DZone, Inc. | www.dzone.com
  • 2. 2 Essential NetBeans Platform org-netbeans-core-output2.jar Provides an Output window for displaying Module System org-openide-io.jar processing messages. It also exposes an API that you can use to write to the window and A module is a JAR file with special attributes in its manifest file. change text colors. This is a typical NetBeans Platform manifest file: org-netbeans-core-multiview.jar Provides a framework for multi-tab windows, such as used by the Matisse GUI Builder in Manifest-Version: 1.0 NetBeans IDE. Ant-Version: Apache Ant 1.7.1 Created-By: 11.3-b02 (Sun Microsystems Inc.) org-openide-windows.jar Provides the API for accessing the window system. OpenIDE-Module-Public-Packages: - OpenIDE-Module-Module-Dependencies: org.openide.util > 7.31.1.1 org-netbeans-modules-autoupdate-services.jar Provides the Plugin Manager together with OpenIDE-Module-Java-Dependencies: Java > 1.5 org-netbeans-modules-autoupdate-ui.jar the functionality for accessing and processing OpenIDE-Module-Implementation-Version: 091216 update centers where NetBeans modules are AutoUpdate-Show-In-Client: true stored. OpenIDE-Module: org.demo.hello org-netbeans-modules-favorites.jar Provides a customizable window which can OpenIDE-Module-Layer: org/demo/hello/layer.xml be used as a filechooser, enabling the user to OpenIDE-Module-Localizing-Bundle: org/demo/hello/Bundle.properties select and open folders and files. OpenIDE-Module-Specification-Version: 1.0 OpenIDE-Module-Requires: org.openide.modules.ModuleFormat1 org-openide-actions.jar Provides a number of configurable system actions, such as “Cut”, “Copy”, and “Paste”. org-openide-loaders.jar Provides an API that lets an application These are the most important NetBeans-related manifest recognize file types. attributes. org-openide-nodes.jar Provides the API for modeling business objects org-openide-explorer.jar and displaying them to the user. Type Description org-netbeans-swing-outline.jar OpenIDE-Module The identifier of a module, providing a unique org-netbeans-modules-javahelp.jar Provides the JavaHelp runtime library and name used for recognition by the module system. enables JavaHelp sets from different modules This is the only required entry in a manifest file to be merged into a single helpset. for a module. org-netbeans-modules-mimelookup.jar Provides an API for discovery and creation of OpenIDE-Module-Layer The location and name of the module’s layer. org-netbeans-modules-editor-mimelookup.jar settings specific to file types. xml file, if any. org-netbeans-modules-masterfs.jar Provides a central wrapper file system for your OpenIDE-Module-Public-Packages By default, all packages in a module are hidden application. from all other modules. Via this attribute, you expose packages to external modules. org-netbeans-modules-options-api.jar Provides an Options window for user customizations and an API for extending it. OpenIDE-Module-Localizing-Bundle The location and name of a properties file providing a display name and the like. org-netbeans-api-progress.jar Provides support for asynchronous long org-openide-execution.jar running tasks and integration for long running OpenIDE-Module-Module-Dependencies Modules can request general or specific versions org-netbeans-modules-progress-ui.jar tasks with the NetBeans Platform’s progress bar. OpenIDE-Module-Java-Dependencies of other modules (|OpenIDE-Module-Module- Dependencies|), Java packages (|OpenIDE- Module-Package-Dependencies|), or Java itself org-netbeans-modules-queries.jar Provides an API for getting information about (|OpenIDE-Module-Java-Dependencies|). files and an SPI for creating your own queries. OpenIDE-Module-Provides Modules can specify dependencies without OpenIDE-Module-Requires naming the exact module to depend on. A org-netbeans-modules-sendopts.jar Provides an API and SPI for registering your module may /provide/ one or more /tokens/. own handlers for accessing the command line. These are strings of conventional meaning, in the format of a Java package or class name. org-netbeans-modules-settings.jar Provides an API for saving module-specific OpenIDE-Module-Specification-Version In line with the Java Versioning Specification, settings in a user-defined format. OpenIDE-Module-Implementation-Version modules can indicate two pieces of version information about themselves using the org-openide-awt.jar Provides many helper classes for displaying UI |OpenIDE-Module-Specification-Version| and the elements such as notifications. |OpenIDE-Module-Implementation-Version| tags. org-openide-dialogs.jar Provides an API for displaying standard and AutoUpdate-Show-In-Client This attribute determines whether the mod- customized dialogs. ule is shown in the Plugin Manager. org-openide-text.jar Provides an extension to the javax.swing,text API. For details on these and other attributes, see org-netbeans-api-visual.jar Provides a widget & graph library for modeling http://bits.netbeans.org/6.8/javadoc/org-openide-modules. and displaying visual representations of data. org-netbeans-spi-quicksearch.jar Provides the infrastructure for integrating items To influence the lifecycle of a module, extend into the Quick Search field. Hot org.openide.modules.ModuleInstall, and register it in org-netbeans-swing-plaf.jar Provides the look and feel and the display Tip org-netbeans-swing-tabcontrol org-jdesktop-layout.jar of tabs and a wrapper for the Swing Layout Extensions library. the manifest under the OpenIDE-Module-Install key. Some of the items in the list above can be used outside of Window System the NetBeans Platform. In these cases, you can put the JAR The window system handles the display of JPanel-like on the classpath of a standard Swing application and use the components and integrates them with the NetBeans Platform. related functionality there: org-openide-filesystems.jar (to use The main classes are listed below. the virtual filesystem), org-openide-util.jar (to use the Lookup Type Description class), org-openide-nodes.jar & org-openide-explorer.jar (to TopComponent A JPanel that provides a new window in your application. The window use Nodes and explorer views), org-netbeans-swing-outline. comes with many features for free, such as maximize/minimize and dock/undock. jar (to use a Swing treetable component),  org-netbeans-api- visual.jar (to use the  widget library). Mode A container in which TopComponents are docked. You do not need to subclass this class to use it. Instead, it is configured in an XML file. NETBEANS PLATFORM APIs TopComponentGroup A group of windows, which should behave in concert. For example, windows within a group can be opened or closed together. As with Modes, these are defined in an XML file, not by subclassing TopComponentGroup. The NetBeans Platform provides a large set of APIs. You do not WindowManager Controls all the windows, modes, and window groups. You can request need to know or use all of them, just those that make sense the WindowManager for its windows, modes, and groups. You can also cast it to a JFrame and then set the title bar and anything else that you in your specific context. Below are the main API groupings, would do with JFrames. together with the most important information related to the grouping, such as their most important configuration attributes A mode, that is, a window position, is defined in an XML file, and API classes. which is contributed to the System FileSystem via registration DZone, Inc. | www.dzone.com
  • 3. 3 Essential NetBeans Platform entries in the layer.xml file. The NetBeans Platform provides of your application, but also into the context of NetBeans UI a set of default modes, the most important of which are as components, such as windows and Nodes. follows: These are the most important Lookups to be aware of: Type Description Type Description editor main area of application (not necessarily an actual editor) Global lookup, provides The Lookup that gives you access to the currently selected UI selection management component, most commonly the focused Node. explorer left vertical area, such as for a Projects window Lookup lkp = Utilities.actionsGlobalContext(); properties right vertical area, typically for a Properties window Local lookup, provides The local context of a specific NetBeans Platform UI object. navigator left lower vertical area lookup of NetBeans objects //For Windows components: such as windows and output horizontal area at base of application Nodes Lookup lkp = myTopComponent,getLookup(); palette right vertical area for items to drag into a visual pane //For Nodes: leftSlidingSide minimized state in left sidebar Lookup lkp = myNode.getLookup(); rightSlidingSide minimized state in right sidebar Default lookup The application’s context, comparable to the JDK 6 ServiceLoader class, provided via the META-INF/services folder. bottomSlidingSide minimized state in bottom status area Lookup lkp = Lookup.getDefault(); A TopComponent is registered in a mode as follows, note These are typical tasks related to Lookup and how to code them: especially the lines in bold below: How do I... Description <folder name=”Windows2”> Register a service? Annotate a service provider with the   <folder name=”Components”> @ServiceProvider class annotation, at compile time the META-       <file name=”MyTopComponent.settings” url=”MyTopComponentSettings.xml”/> INF/services folder is created, registering the implementation.   </folder>   <folder name=”Modes”>  Find the default service MyService svc = Lookup.getDefault().lookup(MyService.class)       <folder name=”editor”>  implementation?         <file name=”MyTopComponent.wstcref” url=”MyTopComponentWstcref.xml”/> Find all service Collection<? extends MyService> coll = Lookup.getDefault().       </folder> implementations? lookupAll(MyService.class)   </folder> </folder> Listen to changes in a Lookup? Lookup.Result lkpResult = theLookup.lookupResult(MyObject. class); The XML files referred to above are small settings files that Tip: Keep a reference to the lkpResult.addLookupListener( result object, otherwise it will new LookupListener() { NetBeans IDE can generate for you. be garbage collected. @Override public void resultChanged(LookupEvent e)( Result res = (Result) e.getSource(); Though the default modes should be sufficient for most Collection<? extends MyObject> coll = res.allInstance(); business scenarios, you might like to adjust them. In that case, //iterate through the collection you are creating your own mode definitions. A mode definition } ); must follow the related DTD, which is as follows: lkpResult.allInstances(); // first call is needed http://netbeans.org/dtds/mode-properties2_1.dtd Create a Lookup for an object? //Lookup for single object: Lookup lkp = Lookups.singleton( myObject ); //Lookup for multiple objects: Hot Hide the existing modes and create your own, if the Lookup lkp = Lookups.fixed(myObject, other); Tip existing ones are really not sufficient for you. //Lookup for dynamic content: InstanceContent ic = new InstanceContent(); Lookup lkp = new AbstractLookup(ic); ic.add(myObject); The window manager handles the display of the windows in Merge Lookups? Lookup commonlkp = new ProxyLookup( dataObjectLookup, nodeLookup, dynamicLookup); the application’s main frame. Aside from being able to access its main Frame, you can also query it for information, as listed Provide a Lookup for my //In the constructor of TopComponent: TopComponent? associateLookup(myLookup); below: Provide a Lookup for a subclass new AbstractNode(myKids, myLookup); of AbstractNode? How do I... Description Find a specific WindowManager.getDefault().findTopComponent(“id”) Central Registry (System FileSystem) TopComponent? The central registry is organized as a virtual file system Find a specific mode? WindowManager.getDefault().findMode(“id”) accessible by all the modules in a NetBeans Platform Once you have found a mode, you can use Mode.dockInto(tc) to programmatically dock a TopComponent into a specific application. NetBeans Platform APIs, such as the Window mode. System API, make available extension points enabling you Find a specific WindowManager.getDefault().findTopComponent to declaratively register your components. A module’s TopComponentGroup? Group(“id”) contributions to the system are provided by specialized XML Ensure that the application is WindowManager.getDefault().invokeWhenUIReady(Runnable) fully started up? files, called “layer files”, normally named “layer.xml”. Get the active WindowManager.getDefault().getRegistry(). TopComponent? getActivated() Below are the most important extension points provided out Get a set of opened WindowManager.getDefault().getRegistry().getOpened() of the box by the NetBeans APIs, represented by folders in a TopComponents? layer file: Get the main frame of the WindowManager.getDefault().getMainWindow() application Actions, Menu, Toolbars, Navigator/Panels, OptionsDialog, Services, Shortcuts, TaskList, and Windows2. Lookup The NetBeans Platform helps you to register items correctly Lookup is a data structure for loosely coupled communication. in the file system by letting you, in some cases, annotate your It is similar to but more powerful than the ServiceLoader classes instead of requiring you to manually type XML tags class in JDK 6 (for example, Lookup supports event in the layer.xml file by hand. The current set of annotations notifications) enabling you to load objects into the context impacting the layer.xml is listed below: DZone, Inc. | www.dzone.com
  • 4. 4 Essential NetBeans Platform @AntBasedProjectRegistration, @CompositeCategoryProvider.Registration, actions (AbstractAction, ActionListener, etc) in any way. @EditorActionRegistration,@LookupMerger.Registration, @LookupProvider. Instead, you need to bind them to one of the classes listed Registration, @NodeFactory.Registration, @OptionsPanelController. ContainerRegistration, @OptionsPanelController.SubRegistration, above, using the layer.xml file to do so. @OptionsPanelController.TopLevelRegistration, @ProjectServiceProvider, Actions.alwaysEnabled: @ServiceProvider, @ServicesTabNodeRegistration <file name=”your-pkg-action-id.instance”> The registry makes use of the FileSystem API to access the <attr name=”instanceCreate” methodvalue=”org.openide.awt.Actions.alwaysEnabled”/> registered data. <attr name=”delegate” FileSystem API methodvalue=”your.pkg.YourAction.factoryMethod”/> <attr name=”displayName” bundlevalue=”your.pkg.Bundle#key”/> The FileSystem API provides stream-oriented access to flat <attr name=”iconBase” stringvalue=”your/pkg/YourImage.png”/> <!-- if desired: <attr name=”noIconInMenu” boolvalue=”false”/> and hierarchical structures, such as disk-based files on local or <!-- if desired: <attr name=”asynchronous” boolvalue=”true”/> </file> remote servers, memory-based files and even XML documents. Items within the folders in the layer.xml file are not java.io.Files, Actions.context: but org.openide.filesystems.FileObjects. The differences <file name=”action-pkg-ClassName.instance”> <attr name=”instanceCreate” between them are as follows: methodvalue=”org.openide.awt.Actions.context”/> java.io.File org.openide.filesystems.FileObject <attr name=”type” stringvalue=”org.netbeans.api.actions.Openable”/> <attr name=”selectionType” stringvalue=”ANY”/> (or EXACTLY_ONE) Create with a constructor Get from the FileSystem <attr name=”delegate” newvalue=”action.pkg.YourAction”/> <attr name=”key” stringvalue=”KeyInActionMap”/> Can represent something that Typically represents something that exists <attr name=”surviveFocusChange” boolvalue=”false”/> doesn’t exist, such as new <attr name=”displayName” bundlevalue=”your.pkg.Bundle#key”/> File(“some/place/that/doesnt/ <attr name=”iconBase” stringvalue=”your/pkg/YourImage.png”/> exist”) <!-- if desired: <attr name=”noIconInMenu” boolvalue=”false”/> Cannot listen to changes FileChangeListener listens to changes to FileObject, as well <!-- if desired: <attr name=”asynchronous” boolvalue=”true”/> as anything beneath the FileObject </file> Represents a file on disk Not necessarily a file on disk, could be in a database, FTP Actions.callback: server, virtual, or anywhere else <file name=”action-pkg-ClassName.instance”> No attributes Can have attributes, which are key-value pairs associated <attr name=”instanceCreate” with a FileObject methodvalue=”org.openide.awt.Actions.callback”/> <attr name=”key” stringvalue=”KeyInActionMap”/> Converting between common data types: <attr name=”surviveFocusChange” boolvalue=”false”/> <attr name=”fallback” newvalue=”action.pkg.DefaultAction”/> How do I get... Description <attr name=”displayName” bundlevalue=”your.pkg.Bundle#key”/> a java.io.File for a FileObject? FileUtil.toFile(FileObject fo) <attr name=”iconBase” stringvalue=”your/pkg/YourImage.png”/> <!-- if desired: <attr name=”noIconInMenu” boolvalue=”false”/> a FileObject for a File? FileUtil.toFileObject(File f) <!-- if desired: <attr name=”asynchronous” boolvalue=”true”/> </file> a DataObject for a FileObject? DataObject.find (theFileObject) a FileObject for a DataObject? theDataObject.getPrimaryFile() For all the details, see http://bits.netbeans.org/6.8/javadoc/ a Node for a DataObject? theDataObject.getNodeDelegate() org-openide-awt/org/openide/awt/Actions.html a DataObject for a Node? DataObject dob = (DataObject) theNode. getLookup().lookup (DataObject.class); An action is registered in the layer.xml file in the “Actions” if (dob != null) { //do something folder, within a folder reflecting its place in the action pool. } a reference to the System FileSystem? //Get the root: <folder name=”Actions”> FileUtil.getConfigRoot()       <folder name=”Window”> //Get a specific folder:          <file name=”your-pkg-action-id.instance”> FileUtil.getConfigFile(“path/to/my/folder”)              ...          </file> The NetBeans Platform provides a number of custom URLs for      </folder> </folder> accessing things. jar For representing entries inside JARs and ZIPs, including the root directory entry Depending on your business requirements, once you have nbres A resource loaded from a NetBeans module, e.g. nbres:/org/netbeans/modules/foo/resources/foo.dtd actions registered in the layer.xml file, you need to bind them to menu items, toolbar buttons, and keyboard shortcuts. nbresloc Same, but transparently localized and branded according to the usual conventions, e.g. nbresloc:/org/netbeans/modules/foo/resources/foo.html may actually load the same thing as nbres:/org/netbeans/modules/foo/resources/foonbja.html. Menu Items nbinst Loads installation files using InstalledFileLocator in installation directories, e.g. <folder name=”Menu”> nbinst:///modules/ext/some-lib.jar may load the same thing as file:/opt/netbeans/       <folder name=”Window”> ide4/modules/ext/some-lib.jar.           <file name=”your-pkg-action-id.shadow”>               <attr name=”originalFile” stringvalue=”Actions/Window/ nbfs Refers to a file object in the System FileSystem (XML layers). For example, nbfs:/ your-pkg-action-id.instance”/> SystemFileSystem/Templates/Other/html.html refers to an HTML file template installed in the IDE               <attr name=”position” intvalue=”50”/>           </file> Actions       </folder> </folder> Actions are pieces of code that are invoked when the user presses a menu item, toolbar button, or keyboard shortcut. Toolbar Buttons Type Description <folder name=”Toolbars”>       <folder name=”Window”> Actions.alwaysEnabled An action that is always enabled. Typically, use this for “File > Open”           <file name=”your-pkg-action-id.shadow”> actions, for example.               <attr name=”originalFile” stringvalue=”Actions/Window/ Actions.context An action that is bound to a context. If an action should only be your-pkg-action-id.instance”/> enabled under certain conditions, use this action.               <attr name=”position” intvalue=”50”/>           </file> Actions.callback An action with an assigned key used to find a delegate in the       </folder> ActionMap of the active component. </folder> When porting your existing application to the NetBeans Platform, you do not need to change your standard JDK DZone, Inc. | www.dzone.com
  • 5. 5 Essential NetBeans Platform Shortcuts LayerWidget Provides a transparent surface, comparable to a JGlassPane. <folder name=”Shortcuts”> ComponentWidget Provides a placeholder widget for AWT/Swing components. <file name=”M.shadow”> <attr name=”originalFile” stringvalue=”Actions/Edit/org-netbeans-modules- ImageWidget Provides images to the scene. some-MyAction.instance”/> </file> LabelWidget Provides a label as a widget. <file name=”D-M.shadow”> <attr name=”originalFile” stringvalue=”Actions/Edit/org-netbeans-modules IconNodeWidget Provides an image and a label. some-CtrlMyAction.instance”/> </file> ConnectionWidget Provides connections between widgets, with anchors, control poins, <file name=”O-M.shadow”> and end points. <attr name=”originalFile” stringvalue=”Actions/Edit/org-netbeans-modules ConvolveWidget Provides coil/twist effect, i.e., a convolve filter to a child element. some-AltMyAction.instance”/> </file> </folder> LevelOfDetailsWidget Provides a container for widgets, with visibility and zoom features. ScrollWidget/ Provides a scrollable area, with/ without JScrollBar as scroll bars. As key code, use KeyEvent.VK_keycode without VK_ SwingScrollWidget prefix, as described in Javadoc of org.openide.util.Utilities SeparatorWidget Provides a space with thickness and orientation. stringToKey() and keyToString() methods. For all the details, see http://bits.netbeans.org/6.8/javadoc/ Nodes org-netbeans-api-visual. A Node is a generic model for a business object, which it visualizes within an Explorer View. Each Node can have visual Dialogs attributes, such as a display name, icon, and actions. The list of The NetBeans Dialogs API provides a number of standard Nodes is below, which you can use as is or extend as needed: dialogs for displaying standard messages for information, Type Description questions (such as “Are you sure?”, when saving), input, and Node Base class for representing business objects to the user. error messages to the user. Each dialog comes with a standard appearance, buttons, and icons. AbstractNode The usual base class for Node implementations. Type Description DataNode Specialized Node class for wrapping a file and displaying it as a Node to the user. Information Dialog NotifyDescriptor d = new NotifyDescriptor.Message(“Text”); BeanNode Specialized Node class that wraps a JavaBean and presents it to the user as a Question Dialog NotifyDescriptor d = new NotifyDescriptor.Confirmation(“Title”, “Text”); Node. It also provides simplistic access to property sheets. Input Dialog NotifyDescriptor d = new NotifyDescriptor.InputLine(“Title”, “Text”); FilterNode Specialized Node class that decorates an existing Node by adding/removing features to/from it. Add the Dialogs API to your module and then use the table A Node is a container for its own child Nodes. These classes above to create dialogs as follows (in the example below, we create child Nodes: display an information dialog): ChildFactory Factory for creating child Nodes. Optionally, these can be created NotifyDescriptor d = new NotifyDescriptor.Message(“Text”); asynhronously, that is, when the user expands the Node. DialogDisplayer.getDefault().notify(d); Children.Keys Older version of ChildFactory. You should be able to replace any implementation of Children.Keys with ChildFactory. For all the details, see http://bits.netbeans.org/6.8/javadoc/ Children.Array, Children.Map, Children.SortedArray, org-openide-dialogs. Children.SortedMap: These classes are less frequently used and are no longer well supported. Explorer Views Hot The Dialogs API also provides a group of Wizard Explorer views are Swing components that display Node Tip classes for multipage dialogs! hierarchies. BeanTreeView JTree for displaying Nodes. Other Useful NetBeans APIs OutlineView JTree for displaying Nodes, with a JTable for displaying the related Node properties. Type Description PropertySheetView Property sheet displaying the properties of a Node. org.apache.tools.ant. Used for running Ant targets. module.api.support. IconView, ListView, ChoiceView, ContextTreeView, ActionUtils MenuView, TableView: These classes are less frequently used org.openide.util. Provides useful static methods for manipulation with images/icons, ImageUtilities results are cached. and are no longer well supported. org.openide.awt.Html- Displays URLs, opens browsers, distinguishes embedded vs. external Browser.URLDisplayer browsers. For all the details, see http://bits.netbeans.org/6.8/javadoc/ org-openide-explorer. org.netbeans.api. progress.ProgressHandle Integrates visualization of long running tasks with the NetBeans Platform progress bar. Visual Library org.openide.util. Performs asynchronous threads in a dedicated thread pool. RequestProcessor The NetBeans visual library is a generic widget and graph org.openide.awt. Listens to editing changes and activates the “Undo” and “Redo” library, providing a collection of predefined widgets that UndoRedo buttons. integrate well with other NetBeans Platform objects, such as Nodes and windows. Below is the list of widgets provided by Explore the Utilities API (org.openide.util.jar) for this library. Hot many useful classes that all NetBeans Platform Type Description Tip applications can use. Scene Provides the root element of the hierarchy of displayed widgets. DZone, Inc. | www.dzone.com
  • 6. 6 Essential NetBeans Platform NETBEANS PLATFORM GOTCHAS NETBEANS PLATFORM ON-LINE The following are frequently asked questions, returning over Technical information on the NetBeans Platform is available and over again, with their answers: on-line in many different forms. The most important of these are listed below: FAQ Answers Site URL What’s the difference between a The former gives you a subset of the NetBeans ‘NetBeans Platform Application’ and a Platform, the latter a subset of NetBeans IDE. Use the Homepage http://platform.netbeans.org ‘Module Suite’? former when building on the NetBeans Platform, the latter when building on NetBeans IDE. Tutorials http://platform.netbeans.org/tutorials Why is my explorer view not Because you need to add this line to the NetBeans API javadoc http://bits.netbeans.org/6.8/javadoc/ synchronized with the Properties TopComponent constructor: window? associateLookup(ExplorerUtils.createLookup(em, Blogs http://planetnetbeans.org getActionMap()); FAQ http://wiki.netbeans.org/NetBeansDeveloperFAQ I created a palette but it isn’t Because your TopComponent is not in ‘editor’ mode. Mailing List dev@platform.netbeans.org showing when I open the related http://netbeans.org/platform/lists/dev/archive TopComponent. Screencast http://platform.netbeans.org/tutorials/nbm-10-top-apis.html This Refcard could not have been made without the technical insights provided by the following: Tim Boudreau, Tim Dudgeon, Jeremy Faden, Laurent Forêt, Jesse Glick, Manikantan, Ernie Rael, Antonio Vieiro and Tom Wheeler. ABOUT THE AUTHORS RECOMMENDED BOOKS Heiko Böck is the author of the well-known “The Definitive Guide to NetBeans Platform” The Definitive Guide to NetBeans™ Platform is a thorough and definitive introduction to the NetBeans Platform, cover- ing all its major APIs in detail, with relevant code examples Anton Epple (http://eppleton.sharedhost.de/) is a NetBeans Platform consultant & trainer. used throughout. BUY NOW Miloš Šilhánek is a Java, NetBeans Platform, 3D and AI enthusiast and Czech translator of books.dzone.com/books/definitive-guide-netbeans Heiko Böck’s book. Andreas Stefik is an Assistant Professor at Southern Illinois University Edwardsville. Rich Client Programming will help you get started with NetBeans module development, master NetBeans’ key APIs, and learn proven techniques for building reliable desktop software. Tom Wheeler (http://www.tomwheeler.com) has worked with NetBeans Platform nearly every day for the past five years and is a consultant, trainer and member of the NetBeans Dream BUY NOW Team. books.dzone.com/books/richclientprog Geertjan Wielenga works on the NetBeans team and is co-author of “Rich Client Programming: Plugging into the NetBeans Platform” Bro ugh t to you by... Professional Cheat Sheets You Can Trust “Exactly what busy developers need: rns atte simple, short, and to the point.” P ld ign ona McD Des By Jason James Ward, Adobe Systems #8 ired Insp e by th GoF ller con tinu ed ndle r doe sn’t have to Upcoming Titles Most Popular ity, r E: e ha ndle d th LUD Best se ibil st an ith th e ha IN C ons que st w Blaze DS Spring Configuration Download Now y a re TS bilit esp que le re om e. TEN onsi of R ay hand hand le a l outc ON sm an C Resp in ject le to entia hen Cha pot .W Domain Driven Design jQuery Selectors f . in o d le ob bject be ab ble tern ethod m Multip ecific o should pta Cha pat acce this if the m up the man r z.co n n sp s is an ents be a ject ntime. see passed C om te Use of ob ru hand led plem ks to e de to rpre set ined at es im e chec ould b til co Virtualization Windows Powershell n Refcardz.com hen n A being uag s un arent Inte W er m not ng im e la the runt or if it sh peat ore p tor det s re a rd ... n uest som tion proces e no m Itera tor ore req n A g in metho d cep dia dm ndlin e ex ack th e e ar n a ther d an the Me rver n ha rown in ndle th ll st until Java Performance Tuning Dependency Injection with EJB 3 re f c tho e to ptio th Exce ion is sm to ha up th tered or e ca n Ob se Me S renc ral plate RN refe listed in ple pt exce mecha n pass ni ed enco . un avio Beh TTE n xam Tem ick E a he is Expression Web Netbeans IDE JavaEditor has ack. W tion uest to ject PA a qu s, a s ct- cep Ob V is it n q IGN s st ttern le Obje s, call e ex e re vide le th nd th DES pro n pa sab iagram . hand s to ha UT fcard F) desig of Reu obje ct ABO s re ttern our (G o ents des cla ss d exa mp le oke r Spring Web Flow Getting Started with Eclipse rz! Pa Inv ign of F lem worl d suc h Des s: E inclu ang attern real ca cts D This al 23 G ign P ch ern patt , and a uct obje enting MM AN Continous Integration Very First Steps in Flex ef in Des are. Ea tion nstr m orig ple CO and k boo Softw rma o to c their im om m re R the info sed Clie nt cre teC d age s: U from Con ente on, us er n led ct () ma nd Ori cute lana ti Patt oup eo bje +exe Com ) s DZone, Inc. Mo exp nal dec larg cute ( is al low atio can be rm ts. +exe . Th bject nship s su ch Cre jec the y fo d to rate ob s, an o d as ed rela tio ISBN-13: 978-1-934238-94-3 Get t Use m tha syste m. l Pa ns: tter many d ispa ana ge a lgo rith n ob jec ts. ece ive r ing low aditiona it to lly o eate be tr bject b as 140 Preston Executive Dr. ISBN-10: 1-934238-94-5 ra en to m betwe e R al s. twe uest der tr ctu req ndled in nt or Stru s be sed cture s: U ilitie s at c an late sa e ha to b llbacks . or in varia catio n. Suite 100 50795 psu ttern invo stru nsib s th Enca quest times the l Pa d respo ship d ca y. ling re ng an nalit riant g iora n tion pose the ueui nctio led at va ject hand ssin e hav hips, a rela Pur as q k fu roce b Cary, NC 27513 e llbac be hand ed. e ob us p lity to Be s ct nb ed ca m th rono tion obje t ca You ne s need to need led fro ynch functio na any need rela ith tha st s is coup e as the ut ls w ips st que e th itho it is n Reque y of re be de ar Dea e. nsh ould faci litat pattern ssing w tation articul pe: latio Use or n d en p A hist r sh ce ed to mman for pro implem ents its ting. Sco ntim pe n voke s re toty Whe y us n co ec clas The in plem is exp 888.678.0399 tual ject ed at ru idel the ue Pro e w ilizing que DZone communities deliver over 6 million pages each month to e ac ued im Ob with job n C s ar f th ue g ueue s. By ut to a ge o que e que han eals me. xy bq iven owled at is en rface th be c e: D ile ti Pro Jo hm be g gorit kn ct th inte cop r S n p rato er mp le of al ed ca to have d obje of the ss S at com serv 919.678.0300 Exa ut Deco nes an .com Ob exec e queue comm Cla d S confi more than 3.3 million software developers, architects and decision B th e nge de leto n for king . Th ithin the cha tory Faca od Sing invo hm w Fac Meth S C rit ract algo one Abst tory Fac State C C Refcardz Feedback Welcome $7.95 t B r eigh makers. DZone offers something for everyone, including news, pte y Ada Flyw teg Stra od z S S ter B Meth w. d ge rpre plate Brid Inte S r B rato r B Tem r refcardz@dzone.com tutorials, cheatsheets, blogs, feature articles, source code and more. ilde isito ww 9 781934 238943 Bu B Ite V C r B in o f ty diato ral Cha nsibili Me avio Beh Sponsorship Opportunities B o B to Resp men ject Me Ob “DZone is a developer’s dream,” says PC Magazine. ITY B Com man d B S Com posi te PO NSIB IL succ ess or sales@dzone.com OF RES Copyright © 2009 DZone, Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, AIN Version 1.0 CH >> photocopying, or otherwise, without prior written permission of the publisher. Reference: <<in ace terf ler d Han () uest req ndle +ha r2 nt dle Clie Han