Majority of developers who download NetBeans IDE for evaluation choose the All IDE bundle. In many cases they really need just a fraction of NetBeans features, and what they get is the All IDE which is feature rich, slower to start and more cluterred comparing to a hypothetical IDE they really need. If they start using the All IDE for production work, they face bigger memory consumption and more bugs in the IDE due to features that are not really needed and used, but as they are available, they still contribute to memory use and buginess.

We need to make the IDE more ergonomic, self adjusting to user needs.

To reduce the impact of many features in the All IDE bundle, the IDE could start with majority of features disabled and enable only those the user really needs. This approach has been already explored in the FeatureOnDemand effort. This UI spec takes a slightly different approach by reducing the number of entry points and hiding majority of UI elements that may not be needed. The implementation of this spec is available as part of NetBeans Fitness via Ergonomics effort.


High-level features disabled during the IDE startup map as much as possible to individual clusters available in the big IDE:

  • Java SE
  • Java Web
  • Java EE
  • Java ME
  • PHP
  • Ruby
  • Groovy
  • C/C++
  • SOA
  • NetBeans Modules
  • only the general functionality of ide cluster (editor, databases, versioning) is present by default.

Entry points for enabling the disabled features:

  • Image:Yes_NB67PerfPlan.png P1: New Project wizard
  • Image:Yes_NB67PerfPlan.png P1: Open Project dialog
  • Image:Yes_NB67PerfPlan.png P1: Attach Debugger...
  • Image:Yes_NB67PerfPlan.png P1: CVS Checkout....
  • Image:Yes_NB67PerfPlan.png P1: SVN Checkout...
  • Image:Yes_NB67PerfPlan.png P2: Plugin Installation
  • Image:Yes_NB67PerfPlan.png P3: Attach Profiler...
  • Image:Yes_NB67PerfPlan.png P3: Open File dialog and Favorites window

Main menu

Figure: Main menu and toolbar with hidden items Image:main-menu-disabled_FitnessForeverUISpec.png

Figure: Main menu showing items that were hidden Image:main-menu_FitnessForeverUISpec.png

Hidden items in remaining menus:

| File |                (* - hidden)
New Project...            
New File...               
Open Project...          
Open Recent Project    >  
Close Project             
Open File...              
Open Recent File       >  
Project Group          >  
Project Properties       
Import Project         > 
======================== *
Save                     *
Save As...               *
Save All                 *
======================== *
Page Setup...            *
Print...                 *
Print to HTML...         *

| View |                    (* - hidden)
    Editors                > * 
    Code Folds             > *
============================ *
    Web Browser              
    IDE Log                  
    Toolbars               > 
[X] Show Editor Toolbar      *
[ ] Show Line Numbers        *
[X] Show Diff Sidebar        ?
[ ] Show Versioning Labels   ?
[ ] Full Screen              
    Toolbars                 > [X] File                 
                               [ ] Clipboard            *
                               [X] Undo/Redo            *
                               [X] Run                  *
                               [ ] Debug                
                               [ ] Memory               
                               [X] Quick Search         *
                               [ ] Small Toolbar Icons  
                                   Reset Toolbars       

| Debug |                   (* - hidden)
Debug Project               *
Debug File                  *
Debug Test for File         *
Attach Debugger...          
Finish Debugger Session     *
=========================   *
Pause                       *
Continue                    *
=========================   *
Step Over                   *
Step Over Expression        *
Step Into                   *
Step Into Next Method       *
Step Out                    *
Run to Cursor               *
=========================   *
Apply Code Changes          *
=========================   *
Set Current Thread...       *
Stack                   >   *
=========================   *
Toggle Line Breakpoint      *
New Breakpoint...           *
New Watch...                *
Evaluate Expression...      *
Check for Deadlock          *

| Profile |                            (* - hidden)
Profile Project                        *
Attach Profiler...                     
Profile Other                      >   *
====================================   *
Rerun Profiling Session                *
Modify Profiling Session...            *
Stop Profiling Session                 *
====================================   *
Reset Collected Results                *
Run GC                                 *
====================================   *
Take Snapshot of Collected Results     *
Take Heap Dump...                      *
Load Snapshot...                       
Load Heap Dump...                      
Compare Memory Snapshots...            
Advanced Commands                  >   ?

| Versioning |     (* - hidden)
CVS            >   ?
Mercurial      >   ?
Subversion     >   ?
Local History  >   *

| Tools |                      (* - hidden)
Analyze Javadoc                *
Create JUnit Tests...          *
Add to Favorites               *
Add to Palette...              *
Internationalization       >   *
============================   *
Java Platforms                 *
NetBeans Platforms             *
Ruby Platforms                 *
Variables                      *
Libraries                      *
Component Libraries            *
Ruby Gems                      *
Servers                        *
Mobility Deployment            *
Keystores                      *
Templates                      *
DTDs and XML Schemas           *
Palette                    >   *
============================   *

| Window |                  (* - hidden)
Classes                     *
Tasks                       *
Palette                     *
Properties                  *
Output                  >   
Navigating              >   *
Debugging               >   *
Profiling               >   *
Versioning              >   ?
Other                   >   *
Close Window                
Maximize Window             
Undock Window               
Clone Document              
Close All Documents         
Close Other Documents       
Reset Windows               

| Help |                  (* - hidden)
Help Contents              
Online Docs and Support    
Keyboard Shortcuts Card    
========================   *
Javadoc Index Search       *
Javadoc References     >   *
Check for Updates          
Start Page                 

Entry Points

Attach Debugger Type

Figure: Attach Debugger cannot be automatically activated due to A11Y issues with Swing's combo box


Figure: Profiler is also activated automatically

The dialog shows up when the user selects any of the available Profiler menu items.

New Project Wizard

Figure: Project type selected and automatically activated

Open Project

Projects that are tentatively recognizable by the system are identified by generic project icon. As soon as user opens them, regular modal open project dialog is shown, the functionality is enabled on background and project is opened correctly.

VCS Checkout

User checks out a repository as usual, which is followed by the scan for NetBeans projects. As soon as user decides to open some of them, the necessary functionality to handle them is enabled and the projects are correctly opened.

Import of settings

All projects previously opened are recognized on first start and functionality needed to handle them is enabled just like in the case of "Open Project" entry point.

IDE Startup

Startup Page

Figure: A startup page in the ergonomics IDE (visual design is TBD)

All other windows are closed. The Projects, Files and Services windows are open automatically as soon as the user creates or opens a first project.

The Activate Features link opens up the Plugins dialog with the Installed tab selected. The Install Plugins opens the Plugins dialog with the Available tab selected.

Plugins Dialog

Figure: An active item selected

This is the Plugins dialog as the user sees it when clicking the Activate link in the Startup page. The exact list of plugins is TBD - will be defined elsewhere.

Figure: A disabled item selected

The Activate button is highlighted with green background.

Figure: All items selected

The dialog now supports multi-selection. The user can select all items (Ctrl+A) and activate all plugins at once. If all selected items are active, the button changes to Disable. The Disable button isn't highlighted.

Contextual menu:

Activate Category "Java"
Activate All
Deactivate Category "Java"
Deactivate All
Check Category "Java"
Check All
Uncheck Category "Java"
Uncheck All

All items that don't apply in the given context are disabled.

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo