| |
| |
Preface | |
| |
| |
| |
Getting and Installing the IDE | |
| |
| |
Platforms and Requirements | |
| |
| |
Getting and Installing a JDK | |
| |
| |
Which IDE Distribution? | |
| |
| |
Installing Binary Distributions | |
| |
| |
Building the IDE from Source (Simple Builds) | |
| |
| |
Running the IDE | |
| |
| |
Updating the IDE Automatically | |
| |
| |
You're Now Running NetBeans | |
| |
| |
| |
Concepts and Paradigms | |
| |
| |
NetBeans and the Java Abstract Model of Computing | |
| |
| |
Explorer | |
| |
| |
Creating Packages and Classes | |
| |
| |
Services | |
| |
| |
Workspaces | |
| |
| |
Project Management | |
| |
| |
Object Browser | |
| |
| |
Summary | |
| |
| |
| |
Working with the Source Editor | |
| |
| |
Why Learn a New Editor? | |
| |
| |
Opening the Source Editor | |
| |
| |
Context Menus | |
| |
| |
Closing the Source Editor | |
| |
| |
Code Completion | |
| |
| |
Editor Colorings | |
| |
| |
Shortcuts | |
| |
| |
Word Matching | |
| |
| |
Indentation Engines and Code Formatting | |
| |
| |
Automatic Edits | |
| |
| |
Other Editor Functionality | |
| |
| |
A Simple Example | |
| |
| |
| |
Debugging | |
| |
| |
Debugger Types | |
| |
| |
Breakpoint Types | |
| |
| |
Adding and Removing Breakpoints | |
| |
| |
Setting Watches | |
| |
| |
Starting the Debugger | |
| |
| |
The Debugger Window | |
| |
| |
The Variables View | |
| |
| |
Remote Debugging in NetBeans | |
| |
| |
| |
Compilation and Execution Services | |
| |
| |
Using Custom Compilation and Execution Services | |
| |
| |
Associating Services with Java Files | |
| |
| |
Building with Ant | |
| |
| |
| |
Customizing the Environment | |
| |
| |
The Setup Wizard | |
| |
| |
The Tools[right arrow]Options Dialog | |
| |
| |
Configuring Toolbars | |
| |
| |
Configuring Menus | |
| |
| |
Configuring Editors | |
| |
| |
Command Line Options | |
| |
| |
Modules | |
| |
| |
| |
Using Source Control (CVS) | |
| |
| |
What Is CVS? | |
| |
| |
The How, When, and Why of CVS in NetBeans | |
| |
| |
Mounting CVS Sources | |
| |
| |
Exploring Versioned Sources | |
| |
| |
Common CVS Operations | |
| |
| |
Unexpected Results | |
| |
| |
Uncommon CVS Operations | |
| |
| |
Mounting a Generic Versioning System | |
| |
| |
One Final Tip | |
| |
| |
| |
GUI Building | |
| |
| |
Creating a GUI Frame or Panel | |
| |
| |
Adding Components to a GUI Container | |
| |
| |
Configuring Components | |
| |
| |
Building Menus | |
| |
| |
Changing a Container's Layout | |
| |
| |
Working with Borders | |
| |
| |
Accessibility | |
| |
| |
Copying a Source Object | |
| |
| |
The Connection Wizard | |
| |
| |
The GridBagLayout Customizer | |
| |
| |
Adding Event Handlers | |
| |
| |
Using the Code Generation Properties | |
| |
| |
Working Around Code Generation | |
| |
| |
Containers Within Containers | |
| |
| |
Building Complex GUIs | |
| |
| |
| |
JavaBeans | |
| |
| |
Why Should I Make Beans? | |
| |
| |
Creating JavaBeans | |
| |
| |
Component Palette | |
| |
| |
| |
Using Javadoc | |
| |
| |
Javadoc Support in NetBeans | |
| |
| |
Mounting Javadocs | |
| |
| |
The Javadoc Search Tool | |
| |
| |
Creating Javadoc | |
| |
| |
| |
Working with XML | |
| |
| |
Installing XML Support | |
| |
| |
Overview | |
| |
| |
XML Editors | |
| |
| |
Beyond Editing XML | |
| |
| |
Generating Java Classes | |
| |
| |
| |
Developing Web Applications | |
| |
| |
Why the IDE Supports Web Application Development | |
| |
| |
How the IDE Provides Web Application Support | |
| |
| |
Creating a Web Application | |
| |
| |
Working with JSP and HTML Files | |
| |
| |
Advanced Web Applications Features | |
| |
| |
Packaging and Deploying Web Applications | |
| |
| |
| |
Extending NetBeans | |
| |
| |
What's Different About NetBeans? | |
| |
| |
The Core and the Open APIs | |
| |
| |
NetBeans for Bean Counters | |
| |
| |
Getting and Installing the Open APIs Support Module | |
| |
| |
Life Is Change | |
| |
| |
Source Code for the Examples | |
| |
| |
| |
Understanding the NetBeans APIs | |
| |
| |
Design Philosophy of NetBeans | |
| |
| |
User-Level Customization | |
| |
| |
Modules--Overview | |
| |
| |
Interacting with the IDE | |
| |
| |
| |
The Open APIs | |
| |
| |
APIs versus Core versus Modules | |
| |
| |
Service Provider Interfaces and Client APIs | |
| |
| |
Overview of the APIs and Their Purposes | |
| |
| |
Modules, JARs, and Class Loaders | |
| |
| |
Threading, Deadlocks, and How to Avoid Them | |
| |
| |
| |
Developing Modules--the New Module Wizard | |
| |
| |
The HelloWorld Module | |
| |
| |
| |
Internals of the Running IDE | |
| |
| |
The Activated Node(s) | |
| |
| |
Cookies | |
| |
| |
A Peek under the Hood | |
| |
| |
Touring NetBeans with the Bean Browser | |
| |
| |
Data Objects, Nodes, and Cookies | |
| |
| |
Filesystems and the Repository | |
| |
| |
Services | |
| |
| |
Lookup | |
| |
| |
Options | |
| |
| |
UI Components | |
| |
| |
Localization | |
| |
| |
Wizards | |
| |
| |
Jumping-off Places | |
| |
| |
Special Folders in the System Filesystem | |
| |
| |
| |
Creating the QuickPanel Module | |
| |
| |
Abstractions Covered in This Chapter | |
| |
| |
Creating the Project Files Drop-Down | |
| |
| |
FilterNode--Filtering Which Children of a Node Are Displayed | |
| |
| |
Creating the Methods Drop-Down | |
| |
| |
Improving the Methods Drop-Down | |
| |
| |
Creating the Module | |
| |
| |
A Little Homework | |
| |
| |
| |
A Mail-Based Filesystem | |
| |
| |
Building a Mail Reader in the NetBeans Paradigm | |
| |
| |
Implementing MailFileSystem Using AbstractFileSystem and JavaMail | |
| |
| |
Creating Folder Objects for Attachments | |
| |
| |
Using FileSystem.Status Annotations to Mark Unread Messages | |
| |
| |
BeanInfo--Displaying Filesystem Properties | |
| |
| |
Using the Wizard Framework to Set Up Mail Accounts | |
| |
| |
| |
Creating the User Interface for the Mail Client | |
| |
| |
Creating a DataLoader for Messages | |
| |
| |
Creating a Threaded Mail View Using Filter Nodes | |
| |
| |
Creating a Mail Workspace | |
| |
| |
| |
Score File Support | |
| |
| |
Overview--Functionality to be Implemented | |
| |
| |
Creating the Minicomposer Module | |
| |
| |
Creating a UniFileLoader and MultiDataObject for *.score Files | |
| |
| |
Creating an Editor Support for Scores | |
| |
| |
Creating a Fixed ExecCookie to Play Scores | |
| |
| |
Creating a Simple Template | |
| |
| |
| |
Creating a Structural View of the Score | |
| |
| |
Creating a ScoreCookie to Represent a Sequence of Notes | |
| |
| |
Creating a ScoreSupport | |
| |
| |
Lifecycle of the Score | |
| |
| |
An OpenSupport | |
| |
| |
Indicating Parse Errors on the Node | |
| |
| |
| |
Compiling Scores | |
| |
| |
Creating the Compilers | |
| |
| |
Creating and Using the Compiler Cookie | |
| |
| |
Displaying an Out-of-Date Badge on Score Icons | |
| |
| |
| |
Executing Scores | |
| |
| |
Creating the .au Player Executor | |
| |
| |
Creating Player Configuration Support | |
| |
| |
Creating a SystemOption for the Default Executor | |
| |
| |
| |
Better Score Support in the Explorer | |
| |
| |
The Clip Length Property | |
| |
| |
Representing Notes as Subnodes Using Children.Keys | |
| |
| |
Permitting Subnodes to Be Renamed or Deleted | |
| |
| |
Permitting Subnodes to Be Added | |
| |
| |
Making Read/Write Properties on Subnodes | |
| |
| |
Reordering Subnodes | |
| |
| |
Data Transfer--Cut, Copy, and Paste of Notes and Sequences | |
| |
| |
| |
Tuning Modules for Performance & Memory Footprint | |
| |
| |
Startup Performance vs. Runtime Performance | |
| |
| |
Operating Principles | |
| |
| |
Techniques | |
| |
| |
| |
Producing Modules (Packaging & Distribution) | |
| |
| |
Versioning | |
| |
| |
Upgrading User Settings | |
| |
| |
Bundling Extension Libraries | |
| |
| |
Internationalization and Accessibility | |
| |
| |
JavaHelp--Writing and Distributing | |
| |
| |
Supporting User-Level Java APIs | |
| |
| |
Creating the Module JAR File Within the IDE | |
| |
| |
Creating a Build Script Using Ant | |
| |
| |
Producing the .nbm File | |
| |
| |
Publishing Using the Update Center | |
| |
| |
Using ErrorManager to Log Problems | |
| |
| |
Testing | |
| |
| |
| |
Building Your Distribution of NetBeans | |
| |
| |
Do You Need Your Own Distribution? | |
| |
| |
Licensing | |
| |
| |
Selecting a Baseline | |
| |
| |
Getting the Sources | |
| |
| |
Customizing the Build Process | |
| |
| |
Adding Modules to a "Stock" Distribution | |
| |
| |
Creating Preconfigured Settings | |
| |
| |
Branding | |
| |
| |
| |
A Tour of Existing Modules | |
| |
| |
| |
Useful Utility Classes | |
| |
| |
| |
Resources | |
| |
| |
| |
Future Plans | |
| |
| |
| |
Working with Open Source and NetBeans | |
| |
| |
| |
Additional Modules and Where to Find Them | |
| |
| |
Index | |