This page contains mistakes and gaps in the book. Mistakes (spelling errors, code flaws, etc, that slipped through despite our best efforts) are found here. Though the book was written for both 5.5 and 6.0, since it was written before NetBeans IDE 6.0 was complete, there are places in the book where the descriptions for 6.0 are incomplete. When those contradictions are identified, they will be included here.
Chapter 3: Modular Architecture
- Page 31 interface Validator is defined twice - should be only once.
- Page 40 there is a missing "return t;" at the end of getDefaultToolkit method
Chapter 5: Lookup
- Page 53 typo in line 17: "...may optionally be in a the Lookup..." should be "...may optionally be in the Lookup..."
- Page 61 Example 5.9: missing parantheses in Instance content creation "FooNode(.., new InstanceContent() )"
- Page 62 typo in line 5: "...of the in the main window..." should be "...of the main window..."
Chapter 6: Filesystems
- Page 74, top of the page: The second line of the XML is missing a quotation mark after "SomeFolder".
- Page 83 step 2: Incomplete layer registration for hiding the Help menu. The hidden Help menu needs to be within the Menu folder. See page 79 for an example of the correct folder structure.
- Page 95, example 6.10: The commented out code for NetBeans 6 at the bottom of the example uses lkp.getLookup() instead of fl.getLookup().
Chapter 7: Threading, Listener Patterns, and MIME Lookup
- Page 114, example 7.4: The XmlFileListModel uses private volatile boolean enqueued = false, although it is not explained when enqueued is ever changed to true.
Chapter 9: Nodes, Explorer Views, Actions, and Presenters
- Page 173, example 9.3: In the static initialization code of CardNode Color c = new Color(255, 255, 255, 255) is never used.
- Page 181: CardTopComponent is referred to at the end of the second paragraph, but should be CardGameTopComponent.
Chapter 10: DataObjects and DataLoaders
- Page 229: 2nd paragraph seems to follow from previous page, but 1st paragraph is inserted between them. 1st paragraph should be in separate grey box.
Chapter 11: Graphical User Interfaces
- Page 241: First caption talks about top right corner, but the image indicates it should be the top left corner.
Chapter 13: Syntax Coloring
- Now that syntax coloring for Manifest files is available by default in NetBeans IDE 6, you need assign the syntax highlighing in this chapter to a different file type. So, wherever 'MF' or 'mf' are specified, such as in the MIME type resolver, replace the MF or mf with ABC or abc (or whatever you like). Then when you install the module, create a file with the specified file type and then you will be able to see your syntax coloring.
- The data object's createNodeDelegate should point to this icon: org/netbeans/modules/manifestlexer/manifest.png
Chapter 14: Code Completion
- Page 287: The text about figure 14.1 says that the documentation popup is above the word, but in the image it is below the word.
Chapter 15: Component Palettes
- Page 324: The final item in the list, i.e., 'DragGestureEevent', should be in the same font as the preceding items.
- Page 341: The page begins with a <para> tag, which should not be there.
- Page 350: The BaseDocument class is used here. You are advised not to use this class, since it is set to be replaced in the future. For correct code, as well as a reference to a complete sample that makes use of it, go here.
- Sample and explanation needed for MIME-type registration of palettes (currently referred to in a footnote, because we knew it was coming, but implementation was not yet possible)
- 1.1 Editor Palette Item DTD
- Sample and explanation needed for DragAndDropHandler class
- Post 6.1, it will be possible to code a palette in such a way that the user will be able to drag something FROM the editor INTO the palette. This makes use of the DragAndDropHandler class, so this item and the previous item could be combined.
Chapter 17: Error Annotations
- Page 380 has unsafe multithreaded code in the example. Specifically, the body of checkErrors() in section 17.5.2 makes calls to the the editor component to retrieve the text (getDocument(), getText()). These calls must be made on the AWT thread. However, section 17.5.3 then alters the program to correctly place the invocation of checkErrors() on a request processor thread with no mention of thread safety.
- Page 370 and 384: In 6.0, the Options window is reorganized. As a result, registered annotations are found in a different place to where they were in 5.5. In 6.0, go to the Options window, click Fonts&Colors at the top of the Options window and then click the Annotations tab, where the annotations are listed alphabetically.
- Sample and explanation needed for Line.Part class
- Show how to dispay multiple error annotations simultaneously
Chapter 20: Web Services
- Page 435: The screenshot shows the dist/lib folder containing the JAX-WS JAR files. The picture was taken, and the chapter was written, under JDK 5. In JDK 6, the JAR files are part of the JDK. Therefore, when you create the web service client, the IDE does not add them to the project. In order for the module to work, however, you need to install a library wrapper module that contains the JAX-WS JAR files, as explained in the chapter. Therefore, go to the Library Manager, find the JAX-WS library, and add it to the Dict project. Now after you build the Dict project, you will find the dist/lib folder in the Files window.
Chapter 22: Update Centers
- In 6.0, the Plugin Manager replaces the Update Center wizard. Though the user inteface is very different, the functionality is essentially the same. However, the menu item "Update Center" is replaced by "Plugins", under the Tools menu. Therefore, for example, the start of section 22.5 on page 461 is true for 5.5, but not for 6.0.
Chapter 23: Use Case 1: Jens Trapp on NetBeans Module Development
- Page 483: Typo part way through the code listing, where "writer.println(err,listenet)" should be "writer.println(err,listener)"
Have you encountered problems, of any kind, in the book? Write to the mailing list (firstname.lastname@example.org) and, if it turns out that the problem is genuinely an error, it will be added to this page.
See also: "Plans for Next Edition"