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
- NetBeans Modules
- only the general functionality of ide cluster (editor, databases, versioning) is present by default.
Entry points for enabling the disabled features:
- P1: New Project wizard
- P1: Open Project dialog
- P1: Attach Debugger...
- P1: CVS Checkout....
- P1: SVN Checkout...
- P2: Plugin Installation
- P3: Attach Profiler...
- P3: Open File dialog and Favorites window
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... * ======================== Exit
| 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 Customize...
| 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 > * ============================ * Plugins ============================ Options
| Window | (* - hidden) ========== Projects Files Classes * Favorites Services Tasks * Palette * Properties * Output > Navigating > * Debugging > * Profiling > * Versioning > ? Other > * Editor Processes ========================= Close Window Maximize Window Undock Window ========================= Clone Document Close All Documents Close Other Documents Documents... ========================= Reset Windows
| Help | (* - hidden) ======== Help Contents Online Docs and Support Keyboard Shortcuts Card ======================== * Javadoc Index Search * Javadoc References > * ======================== Register Check for Updates Start Page About
Attach Debugger Type
The dialog shows up when the user selects any of the available Profiler menu items.
New Project Wizard
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.
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.
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.
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.
The Activate button is highlighted with green background.
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.
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.