UEXMenus

Date: 28 FEB 2013. Authors: Petr Somol, Jan Peska, ...

Note that this page collects discussions about the topic. For the resulting concrete specification see UEXMenusSpec.

Contents

Review of Top Level Menus in NetBeans 7.3+

NetBeans IDE top level menus have been reasonably stable over the years and generally should remain so in order not to confuse users. Nevertheless, for post-7.3 NB a review is planned to fine-tune details or repair mistakes introduced often unintentionally in recent updates. This page should give an overview of current menus' state and to collect ideas for improvement.

Note that an updated UI Review process (NetBeans 7.3+) is to be followed before substantial changes to NB UI are implemented. See UIReviews for details.


Global Questions

  • Generally any proposed changes should be as conservative as possible. The overall contents of NB menus have not been changing too considerably and this fact has met positive response from users.
  • Should we display shortcuts with all items that have one in all menus, sub-menus, and pop-up menus ? (Currently, e.g., item Rename in pop-ups does not have F2 displayed but the shortcut does work). Also, I noticed that, e.g., in Source menu for Java projects there are almost no shortcuts displayed, while for C++ projects all shortcuts are displayed for the same items. Is this a bug ? Presumably it would be better to show any shortcut that exists to improve discoverability..
  • How to deal with the "mnemonics trade-off", i.e., the question whether to strive for maximum coverage by unique mnemonics (requires menu regrouping/restructuring, may lead probably to more sub-menus) or to simple menus with fewer sub-menus, thus with shorter average navigation paths to items (would leave more items mnemonics-less due to more conflicts) ?
  • the question "to sub-menu or not to sub-menu" is not just mnemonics related. Another trade-off to be taken into account is this: menus should not be too long for clarity and to fit screens of limited height (~800 to 900 pixels is quite common screen height on some notebooks), on the other hand moving items to sub-menus considerably worsens their discoverability and their effective use. NetBeans so far tends to prefer the "more actions in primary menu" side of the trade-off. This seems to follow the preference of NB users for whom in this way it is easier to get an overview over provided functionality. For the purposes of this review it might be good to follow the practice that sub-menus should be introduced judiciously only for very good reasons. To be justifiable a sub-menu should collect prefrably a larger then smaller number of related items (a sub-menu of one or two items is in this sense ineffective as it does not help to save much vertical space but makes navigation slower).
  • Icon coverage of menu items is uneven. Some icons should be probably added, e.g., see sub-menu's Window->Output items.
  • Note that menu contents may depend on context (active project type) and presence of plugins that may affect menu contents. For this reason the list below may not be exactly the same as shown here under all circumstances.
  • Source->Preprocessor Blocks item has a tool-tip. Consider whether to supply tooltips in general to menu items where explanation would help user orientation and discovery (in particular for items leading to submenus ?)
  • Note that some of the menus (or parts of them) are accessible as pop-ups (e.g., Refactoring). If any change is accepted based on this review, then such change should take place not only in top level menus but also in the related pop-ups.


File

Current state:

  1. image:icon_symbol.png New Project... Ctrl+Shift+N
  2. image:icon_symbol.png New File... Ctrl+N
  3. ----------------------------------
  4. image:icon_symbol.png Open Project... Ctrl+Shift+O
  5. Open Recent Project image:submenu.png (list of project names)
  6. Close Project
  7. Open File...
  8. Open Recent File image:submenu.png (list of file names)
  9. ----------------------------------
  10. Project Group image:submenu.png (list of project groups)
  11. Project Properties
  12. ----------------------------------
  13. Import Project image:submenu.png
    1. Eclipse Project...
    2. Resynchronize Eclipse Projects
    3. From ZIP...
  14. Export Project image:submenu.png
    1. To ZIP...
  15. ----------------------------------
  16. Save Ctrl+S
  17. Save As...
  18. Save All Ctrl+Shift+S
  19. ----------------------------------
  20. Page Setup...
  21. Print... Ctrl+Alt+Shift+P
  22. Print to HTML...
  23. ----------------------------------
  24. Exit


Edit

Current state:

  1. image:icon_symbol.png Undo Ctrl+Z
  2. image:icon_symbol.png Redo Ctrl+Y
  3. ----------------------------------
  4. image:icon_symbol.png Cut Ctrl+X
  5. image:icon_symbol.png Copy Ctrl+C
  6. image:icon_symbol.png Paste Ctrl+V
  7. Paste Formatted
  8. Paste from History Ctrl+Shift+D
  9. image:icon_symbol.png Delete Delete
  10. Select All
  11. Select Identifier
  12. ----------------------------------
  13. Find Selection
  14. Find Next
  15. Find Previous
  16. ----------------------------------
  17. Find... Ctrl-F
  18. Replace... Ctrl+H
  19. Find Usages Alt+F7
  20. ----------------------------------
  21. Find in Projects... Ctrl+Shift+F
  22. Replace in Projects... Ctrl+Shift+H
  23. ----------------------------------
  24. Start Macro Recording
  25. Stop Macro Recording


Suggestions

  • Why there is no Ctrl-A with Select All?
  • Why there is no Alt-Shift-J with Select Identifier?
  • Why there is no Ctrl-F3 with Find Selection?
  • Why there is no F3 with Find Next?
  • Why there is no Shift-F3 with Find Previous?


View

Current state:

  1. Editors image:submenu.png
    1. Source
    2. History
  2. Code Folds image:submenu.png
    1. Collapse Fold Ctrl+Minus
    2. Expand Fold Ctrl+Equals
    3. ----------------------------------
    4. Collapse All Ctrl+Shift+NumPad -
    5. Expand All Ctrl+Shift+NumPad +
  3. ----------------------------------
  4. IDE Log
  5. ----------------------------------
  6. Toolbars image:submenu.png
    1. image:check.png File
    2. image:check.png Clipboard
    3. image:check.png Undo/Redo
    4. image:check.png Remote
    5. image:check.png Run
    6. image:check.png Debug
    7. image:check.png Performance
    8. ----------------------------------
    9. image:check.png Small Toolbar Icons
    10. ----------------------------------
    11. Reset Toolbars
    12. Customize
  7. image:check.png Show Editor Toolbar
  8. image:check.png Show Line Numbers
  9. image:check.png Show Non-printable Characters
  10. image:check.png Show Breadcrumps
  11. image:check.png Show Diff Sidebar
  12. image:check.png Show Versioning Labels
  13. image:check.png Synchronize Editor With Views
  14. ----------------------------------
  15. Full Screen Alt+Shift+Enter


Navigate

Current state:

  1. Go to File... Alt+Shift+O
  2. Go to Type... Ctrl+O
  3. Go to Symbol... Ctrl+Alt+Shift+O
  4. Go to Spring Bean... Alt+Shift+B
  5. Go to Test Ctrl+Alt+T
  6. Go to Grails Domain Class (when Groovy is active)
  7. Go to Grails Controller (when Groovy is active)
  8. Go to Grails View (when Groovy is active)
  9. Go to Previous Document
  10. ----------------------------------
  11. Go to Source
  12. Go to Declaration/Definition Ctrl+B
  13. Go to Super Implementation
  14. ----------------------------------
  15. Inspect image:submenu.png
    1. Members Ctrl+Shift+F12 (shows members of the entity under cursor)
    2. File Members Ctrl+F12 (shows members of the class represented by the currently selected file, regardless cursor position)
    3. ----------------------------------
    4. Hierarchy Alt+Shift+F12 (shows hierarchy for the entity under cursor)
    5. File Hierarchy Alt+F12 (shows members for the class represented by the currently selected file, regardless cursor position)
  16. ----------------------------------
  17. Last Edit Location Ctrl+Q
  18. Back Alt+Left
  19. Forward Alt+Right
  20. ----------------------------------
  21. Go to Line... Ctrl+G
  22. Toggle Bookmark Ctrl+Shift+M
  23. Bookmark History Popup Next Ctrl+Shift+Period
  24. Bookmark History Popup Previous Ctrl+Shift+Comma
  25. ----------------------------------
  26. Next Error Ctrl+Period
  27. Previous Error Ctrl+Comma
  28. ----------------------------------
  29. image:icon_symbol.png Select in Projects Ctrl+Shift+1
  30. image:icon_symbol.png Select in Files Ctrl+Shift+2
  31. Select in Classes Ctrl+Shift+3
  32. Select in Favorites Ctrl+Shift+4


Suggestions / Questions

  • Go to Previous Document vs Last Edit Location - is it necessary to have both ? What does GtPD exactly do ?
    • Honza: I'm not sure if this is a bug or not but GtPD seems to always go back to the previously activated TC, not only documents...
  • very similar Go to Type and Go to Symbol functionality ? Can we join the two under Go to Type and provide Go to Symbol as option in the dialog ? Would it make sense ? Go to Type is known to be widely used, do we know what is the situation with Go to Symbol ?
    • Honza: According to the NetBeans action usage: Go to Symbol 2166, Go to Type 76459 invocations. So it seems to be rarely used action.
  • very similar Go to Source and Go to Declaration/Definition ?
    • Honza: I can't find out the difference for Java files
  • Back / Forward have equivalents in Editor toolbar, but there Back has Ctrl+KB_LEFT by mistake ?
  • Add "Go" or "Go to" to items where it logically belongs
  • move bookmark related items to sub-menu and rename for clarity
  • rename Go to Line to Go to Line/Bookmark to communicate its abilities
  • isn't "Inspect->" valid for Java projects only ?
  • the difference between Inspect Members and Inspect File Members (the same holds for the Hierarchy pair of actions) is very difficult to grasp by users. We gave it lots of thought but found no way of joining the two actions to one. Perhaps a better name would help ?

Food for thought - Navigate menu redesign (comments welcome)

  1. Go to File... Alt+Shift+O
  2. Go to Type/Symbol... Ctrl+O (Go to Symbol overtly long shortcut Ctrl+Alt+Shift+O can be silently preserved and used to open the combined dialog in the respective mode)
  3. Go to Spring Bean... Alt+Shift+B
  4. Go to Test Ctrl+Alt+T
  5. Go to Grails Domain Class (when Groovy is active)
  6. Go to Grails Controller (when Groovy is active)
  7. Go to Grails View (when Groovy is active)
  8. ??? do we need Go to Previous Document ???
  9. ----------------------------------
  10. ??? do we need Go to Source when we have the following ???
  11. Go to Declaration/Definition Ctrl+B
  12. Go to Super Implementation Ctrl+Shift+P
  13. ----------------------------------
  14. Inspect image:submenu.png
    1. Members Ctrl+Shift+F12 (shows members of the entity under cursor)
    2. File Members Ctrl+F12 (shows members of the class represented by the currently selected file, regardless cursor position)
    3. ----------------------------------
    4. Hierarchy Alt+Shift+F12 (shows hierarchy for the entity under cursor)
    5. File Hierarchy Alt+F12 (shows members for the class represented by the currently selected file, regardless cursor position)
  15. ----------------------------------
  16. Go to Last Edit Location Ctrl+Q
  17. Go Back Alt+Left
  18. Go Forward Alt+Right
  19. ----------------------------------
  20. Go to Line/Bookmark... Ctrl+G
  21. Bookmarks image:submenu.png
    1. Toggle Bookmark Ctrl+Shift+M
    2. Go Back Ctrl+Shift+Period
    3. Go Forward Ctrl+Shift+Comma
  22. ----------------------------------
  23. Go to Next Error Ctrl+Period
  24. Go to Previous Error Ctrl+Comma
  25. ----------------------------------
  26. image:icon_symbol.png Select in Projects Ctrl+Shift+1
  27. image:icon_symbol.png Select in Files Ctrl+Shift+2
  28. Select in Classes Ctrl+Shift+3
  29. Select in Favorites Ctrl+Shift+4

Rich's proposed re-ordering

  1. Go to File... Alt+Shift+O
  2. Go to Type/Symbol... Ctrl+O
  3. Go to Declaration/Definition Ctrl+B
  4. Go to Super Implementation Ctrl+Shift+P
  5. ----------------------------------
  6. Go to Last Edit Location Ctrl+Q
  7. Go Back Alt+Left
  8. Go Forward Alt+Right
  9. ----------------------------------
  10. Go to Line/Bookmark... Ctrl+G
  11. Bookmarks image:submenu.png
    1. Toggle Bookmark Ctrl+Shift+M
    2. Go Back Ctrl+Shift+Period
    3. Go Forward Ctrl+Shift+Comma
  12. ----------------------------------
  13. Go to Next Error Ctrl+Period
  14. Go to Previous Error Ctrl+Comma
  15. ----------------------------------
  16. Go to Spring Bean... Alt+Shift+B
  17. Go to Test Ctrl+Alt+T
  18. Go to Grails Domain Class (when Groovy is active)
  19. Go to Grails Controller (when Groovy is active)
  20. Go to Grails View (when Groovy is active)
  21. ----------------------------------
  22. Inspect image:submenu.png
    1. Members Ctrl+Shift+F12 (Petr: shows members of the entity under cursor)
    2. File Members Ctrl+F12 (Petr: shows members of the class represented by the currently selected file, regardless cursor position)
    3. ----------------------------------
    4. Hierarchy Alt+Shift+F12 (Petr: shows hierarchy for the entity under cursor)
    5. File Hierarchy Alt+F12 (Petr: shows members for the class represented by the currently selected file, regardless cursor position)
  23. ----------------------------------
  24. image:icon_symbol.png Select in Projects Ctrl+Shift+1
  25. image:icon_symbol.png Select in Files Ctrl+Shift+2
  26. Select in Classes Ctrl+Shift+3
  27. Select in Favorites Ctrl+Shift+4
  • Petr: this is a better proposal than the one before. My last concern: the location of Go to Test. I received comments from several people in NB team that they consider it to be one of the most often used Go to's. Perhaps we could position it as the last one in the most prominent group of Go to items above ?

Source

Current state:

  1. Format Alt+Shift+F
  2. Remove Trailing Spaces
  3. Shift Left Alt+Shift+Left
  4. Shift Right Alt+Shift+Right
  5. Move Up Alt+Shift+Up
  6. Move Down Alt+Shift+Down
  7. Move Code Element Up Alt+Shift+Page Up
  8. Move Code Element Down Alt+Shift+Page Down
  9. Duplicate Up Ctrl+Shift+Up
  10. Duplicate Down Ctrl+Shift+Down
  11. Toggle Comment Ctrl+Shift+C
  12. ----------------------------------
  13. Complete Code... Ctrl+Space
  14. Insert Code... Alt+Insert
  15. Remove Surrounding Code... Alt+Backspace
  16. Fix Code... Alt+Enter
  17. Fix Imports... Ctrl+Shift+I
  18. Organize Imports
  19. Organize Members
  20. Fix Uses... (when PHP is active)
  21. Show Method Parameters Ctrl+P
  22. Show Documentation Ctrl+Shift+Space
  23. ----------------------------------
  24. image:icon_symbol.png Make Controller (when Groovy is active)
  25. ----------------------------------
  26. Preprocessor Blocks image:submenu.png (when ME is active)
  27. ----------------------------------
  28. Insert Next Matching Word Ctrl+Shift+K
  29. Insert Previous Matching Word Ctrl+K
  30. ----------------------------------
  31. Inspect...
  32. ----------------------------------
  33. Scan for External Changes


Suggestions

  • some items might by project type specific (Inspect... now is valid for Java only but can be invoked to no effect in other project types) - how to handle ?
  • Remove Surrounding Code difficult to understand its function ?
    • Honza: it sounds understandable to me
  • bug: not all shortcuts displayed at all times
  • Show Method Parameters feels faulty although it probably is not - ideally it should work from anywhere inside the method ?
    • Honza: I think the actions should display a message to the status line (left bottom corner) in case the caret is not at right position

Food for thought - Source menu redesign (comments welcome)

  • why not to add Duplicate Code Element Up and Duplicate Code Element Down actions ? Ctrl+Shift+Page Up and Ctrl+Shift+Page Down seem to be still free.
  • shortcut for Inspect... ?
  1. Format Alt+Shift+F
  2. Remove Trailing Spaces
  3. Shift Left Alt+Shift+Left
  4. Shift Right Alt+Shift+Right
  5. Move image:submenu.png
    1. Move Up Alt+Shift+Up
    2. Move Down Alt+Shift+Down
    3. Move Code Element Up Alt+Shift+Page Up
    4. Move Code Element Down Alt+Shift+Page Down
  6. Duplicate image:submenu.png
    1. Duplicate Up Ctrl+Shift+Up
    2. Duplicate Down Ctrl+Shift+Down
    3. Duplicate Code Element Up Ctrl+Shift+Page Up
    4. Duplicate Code Element Down Ctrl+Shift+Page Down
  7. Toggle Comment Ctrl+Shift+C
  8. ----------------------------------
  9. Complete Code... Ctrl+Space
  10. Insert Code... Alt+Insert
  11. Remove Surrounding Code... Alt+Backspace
  12. Fix Code... Alt+Enter
  13. Fix Uses... ??Ctrl-Shift-I (when PHP is active)
  14. Fix Imports... Ctrl+Shift+I
  15. Organize Imports
  16. Organize Members
  17. ---------------------------------- (separated for somewhat better clarity)
  18. Insert Next Matching Word Ctrl+Shift+K
  19. Insert Previous Matching Word Ctrl+K
  20. ----------------------------------
  21. image:icon_symbol.png Make Controller (when Groovy is active)
  22. ----------------------------------
  23. Preprocessor Blocks image:submenu.png (when ME is active)
  24. ----------------------------------
  25. Show Method Parameters Ctrl+P (moved "show" actions here for clarity - from here downwards no action changes the source)
  26. Show Documentation Ctrl+Shift+Space
  27. ----------------------------------
  28. Inspect...
  29. ----------------------------------
  30. Scan for External Changes

Refactor

Current state:

  1. Rename... Ctrl+R
  2. Move... Ctrl+M
  3. Copy...
  4. Safely Delete... Alt+Delete
  5. ----------------------------------
  6. Inline...
  7. Change Method Parameters...
  8. ----------------------------------
  9. Pull Up...
  10. Push Down...
  11. Extract Interface...
  12. Extract Superclass...
  13. Use Supertype Where Possible...
  14. ----------------------------------
  15. Move Inner to Outer Level...
  16. Convert Anonymous to Member...
  17. Introduce Variable... Alt+Shift+V
  18. Introduce Constant... Alt+Shift+C
  19. Introduce Field... Alt+Shift+E
  20. Introduce Parameter... Alt+Shift+P
  21. Introduce Method... Alt+Shift+M
  22. Introduce Local Extension... Alt+Shift+X
  23. Encapsulate Fields...
  24. Replace Constructor with Factory...
  25. Replace Constructor with Builder...
  26. Invert Boolean...
  27. ----------------------------------
  28. Inspect and Transform...


Food for thought - Refactor menu redesign (comments welcome):

  • Making a submenu from Introduce should cause no harm + would save lots of space
  1. Rename... Ctrl+R
  2. Move... Ctrl+M
  3. Copy...
  4. Safely Delete... Alt+Delete
  5. ----------------------------------
  6. Inline...
  7. Change Method Parameters...
  8. ----------------------------------
  9. Pull Up...
  10. Push Down...
  11. Extract Interface...
  12. Extract Superclass...
  13. Use Supertype Where Possible...
  14. ----------------------------------
  15. Introduce image:submenu.png
    1. Variable... Alt+Shift+V
    2. Constant... Alt+Shift+C
    3. Field... Alt+Shift+E
    4. Parameter... Alt+Shift+P
    5. Method... Alt+Shift+M
    6. Local Extension... Alt+Shift+X
  16. ----------------------------------
  17. Move Inner to Outer Level...
  18. Convert Anonymous to Member...
  19. Encapsulate Fields...
  20. Replace Constructor with Factory...
  21. Replace Constructor with Builder...
  22. Invert Boolean...
  23. ----------------------------------
  24. Inspect and Transform...

Run

Current state:

  1. image:icon_symbol.png Run Project (project name) F6
  2. Test Project Alt+F6
  3. ----------------------------------
  4. image:icon_symbol.png Build Project (project name) F11
  5. image:icon_symbol.png Clean and Build Project (project name) Shift+F11
  6. Batch Build Project... (project name)
  7. ----------------------------------
  8. Set Project Configuration image:submenu.png
    1. Default Configuration
    2. ----------------------------------
    3. Customize...
  9. Set Main Project image:submenu.png
    1. None
    2. ----------------------------------
    3. (project names)
  10. ----------------------------------
  11. Generate Javadoc (project name)
  12. Run File Shift+F6
  13. Test File Ctrl+F6
  14. Compile File F9
  15. image:icon_symbol.png Check File Alt+F9
  16. image:icon_symbol.png Validate File Alt+Shift+F9
  17. ----------------------------------
  18. Repeat Build/Run Ctrl+F11
  19. Stop Build/Run


Debug

Current state:

  1. image:icon_symbol.png Debug Project (project name) Ctrl+F5
  2. Debug File Ctrl+Shift+F5
  3. Debug Test File Ctrl+Shift+F6
  4. image:icon_symbol.png Attach Debugger...
  5. image:icon_symbol.png Debug Core File...
  6. ----------------------------------
  7. image:icon_symbol.png Finish Debugger Session Shift+F5
  8. image:icon_symbol.png Terminate Process
  9. image:icon_symbol.png Detach Debugger...
  10. ----------------------------------
  11. image:icon_symbol.png Restart
  12. image:icon_symbol.png Pause Ctrl+Alt+Pause
  13. image:icon_symbol.png Continue F5
  14. ----------------------------------
  15. image:icon_symbol.png Step Over F8
  16. image:icon_symbol.png Step Over Expression Shift+F8
  17. image:icon_symbol.png Step Into F7
  18. Step Into Next Method Shift+F7
  19. image:icon_symbol.png Step Out Ctrl+F7
  20. image:icon_symbol.png Run to Cursor F4
  21. image:icon_symbol.png Step Into Last Function
  22. ----------------------------------
  23. image:icon_symbol.png Apply Code Changes
  24. image:icon_symbol.png Take GUI Snaphot
  25. ----------------------------------
  26. Set Current Thread...
  27. Stack image:submenu.png
    1. image:icon_symbol.png Make Callee Current Alt+Page Up
    2. image:icon_symbol.png Make Caller Current Alt+Page Down
    3. ----------------------------------
    4. Pop Topmost Call
    5. image:icon_symbol.png Pop To Current Stack Frame
    6. image:icon_symbol.png Pop Last Debugger Call
  28. ----------------------------------
  29. Toggle Line Breakpoint Ctrl+F8
  30. New Breakpoint... Ctrl+Shift+F8
  31. New Watch... Ctrl+Shift+F7
  32. Evaluate Expression... Ctrl+F9
  33. Check for Deadlock

Remark: Debug menu is long, but its contents seem well stabilized and IMHO any reorganization here would harm usability. What might be possible in case of desperate need seems to me to follow the Profile solution: to add the last item "Advanced Commands" and gather under its sub-menu some of the less commonly used commands, if such exist (actually this might be difficult). Breakpoint related commands might be possible to extract to a sub-menu (the actions are commonly applied from other places), but if there is no real demand I would better not do that.


Profile

Current state:

  1. image:icon_symbol.png Profile Project (project name) Alt+F2
  2. Profile File
  3. Profile Test File
  4. image:icon_symbol.png Attach Profiler...
  5. ----------------------------------
  6. image:icon_symbol.png Rerun Profiling Session Ctrl+Shift+F2
  7. image:icon_symbol.png Modify Profiling Session... Alt+Shift+F2
  8. image:icon_symbol.png Stop Profiling Session Shift+F2
  9. ----------------------------------
  10. image:icon_symbol.png Reset Collected Results Alt+Shift+F2
  11. image:icon_symbol.png Run GC
  12. ----------------------------------
  13. image:icon_symbol.png Take Snapshot of Collected Results Ctrl+F2
  14. image:icon_symbol.png Take Heap Dump...
  15. image:icon_symbol.png Load Snapshot...
  16. Load IDE Snapshot...
  17. image:icon_symbol.png Load Heap Dump...
  18. image:icon_symbol.png Compare Snapshots...
  19. ----------------------------------
  20. Advanced Commands image:submenu.png
    1. Run Profiler Calibration
    2. View Command-line Arguments
    3. Display Internal Statistics
    4. ----------------------------------
    5. Unintegrate Profiler from (project name)


Team

The Team menu gathers versioning systems support, issue tracking, build job creation functionality. Versioning support covers GIT, Mercurial and Subversion by default, CVS by downloadable plugin. The contents of Team menu change dramatically depending on context; for untracked projects the menu is brief, providing only initialization related versioning functions. For projects already tracked in one of the systems the menu displays VCS specific commands.

Current Team menu state - initial state without any VCS-specific items displayed:

  1. CVS image:submenu.png
    1. <full CVS menu contents displayed, see below>
  2. Git image:submenu.png
    1. Clone...
    2. Initialize
    3. ----------------------------------
    4. Repository Browser
  3. Mercurial image:submenu.png
    1. Initialize Project
    2. Clone Other...
  4. Subversion image:submenu.png
    1. Checkout...
    2. Import into Repository...
  5. ----------------------------------
  6. History image:submenu.png
    1. Show History
    2. Revert Deleted
  7. Find Issues...
  8. Report Issue...
  9. Create Build Job...


Current Team menu state - selected project tracked in GIT:

  1. Show Changes
  2. Add
  3. Commit...
  4. Diff
  5. Export image:submenu.png
    1. Export Uncommited Changes...
    2. Export Commit...
  6. Revert image:submenu.png
    1. Revert Modifications...
    2. Revert Commit...
  7. ----------------------------------
  8. Ignore (shown only if selection on project)
  9. Unignore (shown only after Ignore had been applied, but Ignore remains above it)
  10. Exclude From Commit / Include In Commit
  11. ----------------------------------
  12. Repository Browser
  13. Open Output
  14. ----------------------------------
  15. Branch image:submenu.png
    1. Create Branch...
    2. Switch to Branch...
  16. Tag image:submenu.png
    1. Create Tag...
    2. Manage Tags...
  17. Checkout image:submenu.png
    1. Checkout Revision...
    2. Checkout Files...
  18. Merge Revision...
  19. ----------------------------------
  20. Reset...
  21. ----------------------------------
  22. Clone...
  23. Remote image:submenu.png
    1. Fetch...
    2. Fetch from Upstream...
    3. Pull...
    4. Pull from Upstream...
    5. ----------------------------------
    6. Push...
    7. Push to Upstream...
  24. Show History (meaning Show Repository History)
  25. Show Annotations
  26. ----------------------------------
  27. Disconnect...
  28. ----------------------------------
  29. CVS image:submenu.png
    1. <full CVS menu contents displayed>
  30. Git image:submenu.png
    1. <copy of the above menu contents>
  31. Mercurial image:submenu.png
    1. Initialize Project
    2. Clone Other...
  32. Subversion image:submenu.png
    1. Checkout...
    2. Import into Repository...
  33. ----------------------------------
  34. History image:submenu.png
    1. Show History (meaning Show File History)
    2. Revert Deleted
  35. Find Issues...
  36. Report Issue...
  37. Create Build Job...


Current Team menu state - selected project tracked in Mercurial:

  1. Shelve Changes image:submenu.png
    1. Shelve Changes...
  2. Initialize Project
  3. ----------------------------------
  4. Status
  5. Diff
  6. Update...
  7. Commit...
  8. Add
  9. ----------------------------------
  10. Export image:submenu.png
    1. Export Diff...
    2. Export Uncommitted Changes...
    3. Export Changeset Bundle...
  11. Import Changesets...
  12. ----------------------------------
  13. Clone - name
  14. Clone Other...
  15. Fetch - name
  16. Share image:submenu.png
    1. Push to default - name
    2. Push Other...
    3. Pull from default - name
    4. Pull Other...
  17. Merge image:submenu.png
    1. Merge Changes
    2. Resolve Conflicts
  18. ----------------------------------
  19. Search History
  20. Show image:submenu.png
    1. Show Annotations (if selection on file)
    2. Show Incoming
    3. Show Out
    4. View...
  21. ----------------------------------
  22. Revert Modifications
  23. Recover image:submenu.png
    1. Strip...
    2. Backout...
    3. Rollback - name
    4. Verify
  24. Toggle Ignore
  25. ----------------------------------
  26. Branch image:submenu.png
    1. Switch Branch...
    2. Create Branch...
    3. Close Branch...
  27. Tag image:submenu.png
    1. Create Tag...
    2. Manage Tags...
  28. Queues image:submenu.png
    1. Diff
    2. Go to Patch...
    3. Pop All Patches
    4. Push All Patches
    5. ----------------------------------
    6. Create Patch...
    7. Refresh Patch...
    8. Finish Patches...
  29. ----------------------------------
  30. Properties...
  31. ----------------------------------
  32. Disconnect...
  33. ----------------------------------
  34. CVS image:submenu.png
    1. <full CVS menu contents displayed>
  35. Git image:submenu.png
    1. Clone...
    2. Initialize
    3. ----------------------------------
    4. Repository Browser
  36. Mercurial image:submenu.png
    1. <copy of the above menu contents>
  37. Subversion image:submenu.png
    1. Checkout...
    2. Import into Repository...
  38. ----------------------------------
  39. History image:submenu.png
    1. Show History (meaning Show File History)
    2. Revert Deleted
  40. Find Issues...
  41. Report Issue...
  42. Create Build Job...


Current Team menu state - selected project tracked in Subversion:

  1. Checkout...
  2. Relocate...
  3. ----------------------------------
  4. Update Project with Dependencies
  5. Update To...
  6. ----------------------------------
  7. Show Changes
  8. Diff
  9. Update
  10. Commit...
  11. ----------------------------------
  12. Export Diff Patch...
  13. Apply Diff Patch...
  14. ----------------------------------
  15. Copy to...
  16. Switch to...
  17. Merge to...
  18. Export...
  19. ----------------------------------
  20. Show Annotations
  21. Search History...
  22. ----------------------------------
  23. Revert Modifications...
  24. Resolve Conflicts...
  25. Ignore
  26. Lock (if selection is on file)
  27. ----------------------------------
  28. Cleanup Working Copy
  29. Upgrade Working Copy
  30. Versioning Info
  31. Svn Properties
  32. ----------------------------------
  33. Disconnect...
  34. ----------------------------------
  35. CVS image:submenu.png
    1. <full CVS menu contents displayed>
  36. Git image:submenu.png
    1. Clone...
    2. Initialize
    3. ----------------------------------
    4. Repository Browser
  37. Mercurial image:submenu.png
    1. Initialize Project
    2. Clone Other...
  38. Subversion image:submenu.png
    1. <copy of the above menu contents>
  39. ----------------------------------
  40. History image:submenu.png
    1. Show History (meaning Show File History)
    2. Revert Deleted
  41. Find Issues...
  42. Report Issue...
  43. Create Build Job...


Problems

The Team menu changes its contents depending on context (current project). In its current state it suffers many problems from the UEX perspective:

  • depending in context can be excessively long - bad for orientation of new users + may exceed standard vertical screen size on many types of standard notebooks
  • item ordering inconsistent among the various VCS menu versions
  • item naming inconsistent among the various VCS menu versions (though not always would the same name mean the same thing)
  • injected menu contents (if project is tracked by one of the VCS systems) are displayed once in base menu as well as in a concrete VCS submenu - that is confusing. If the functionality differs in submenu, it is even more confusing
  • for a new user it might be very difficult to grasp what context each item (versioning actions) in the menu has - there is difference in behavior depending on current selection, whether the scope is project or file. Note that this makes things the more confusing because the underlying VCS commands are usually understood as repository-wide.
  • similarly named items and possibly related functionality can be spread instead of concentrated (e.g., for Mercurial there is Search History.. in the middle of the menu, but there is a History submenu in the bottom, with item Show History..)
  • submenus for each supported VCS are always present, regardless whether the current selection (file, project) is tracked in one of them or not. If it is not, then the submenus make good sense to inform users about which VCS are available + provide initialization action to include the project into the chosen one. Once the project is tracked by one of the VCS, the menu still contains the submenus for each VCS though preceeded by the now more important and specific actions - yet now the inclusion of all VCS sumbenus can be confusing. It may be necessary to allow multiple tracking of the same project in more than one VCS - what may be a valid though rare usecase. Not sure whether this can be avoided.
  • versioning unrelated items are not clearly separated from the versioning ones
  • existing bug: 223545


Food For Thought -- Suggestions

The Team menu is perhaps the most difficult to define reasonably. Fixing the UEX problems should be possible by rearranging menu contents to a general ordering that can be followed more or less closely by each of the VCS specific menu instances. Possible changes should be consulted primarily with Ondrej Vrabec, the owner of related modules.

The proposal below attempts to achieve the following:

  • keep menu length at maximum of 22 textual items, what represents the maximum length of other main menus
  • provide item ordering that is more or less unified across the various VCSs, while the ordering attempts to put the most frequent actions together to the top, to collect the rest to clear categories just underneath, and to move the most infrequently used actions to a maintenance submenu. So far this is an ad hoc ordering, open to discussion.

Note that the proposal below does not solve all UEX problems stated above. The proposal should be reviewed in detail to avoid any unintended negative effects (unified ordering across various VCS is desirable but some items might thus seem ordered unexpectedly from particular VCS perspective). Therefore I ask for comments from anyone involved.

..to be worked on..


(NOT A REAL MENU) The rearranged Team menu with actions from all VCS systems combined; this is just to illustrate the ordering idea (details and menu versions for concrete VCS instances follow below):

Here prefixes mark items present in particular VCS only; G: GIT, M: Mercurial, S:Subversion, C: CVS

  1. Status - <name> (alt. Show Changes)
  2. Diff - <name>
  3. M: Update...
  4. C: S: Update image:submenu.png
    1. C: S: Update (Update too frequent to reside in submenu?)
    2. C: S: Update Project with Dependencies
    3. S: Update To...
  5. G: M: Add - <name>
  6. Inclusion image:submenu.png (created to gather these items before Commit, which depends on them)
    1. G: Ignore
    2. G: Unignore
    3. G: C: Exclude From Commit
    4. G: Include In Commit
    5. M: Toggle Ignore
    6. C: S: Ignore
    7. S: Lock
  7. Commit...
  8. ----------------------------------
  9. Synchronize image:submenu.png (hopefully well discoverable submenu to collect the remaining local-(to/from)-remote actions and to provide them just under the group of the key actions above)
    1. G: Checkout Revision...
    2. G: Checkout Files...
    3. C: S: Checkout...
    4. ----------------------------------
    5. G: Fetch...
    6. G: Fetch from Upstream...
    7. M: Fetch - <name>
    8. ----------------------------------
    9. G: Pull...
    10. G: Pull from Upstream...
    11. M: Pull from default - <name>
    12. M: Pull Other...
    13. ----------------------------------
    14. G: Merge Revision...
    15. M: Merge Changes
    16. M: Resolve Conflicts
    17. C: S: Resolve Conflicts...
    18. ----------------------------------
    19. G: Push...
    20. G: Push to Upstream...
    21. M: Push to default - <name>
    22. M: Push Other...
    23. S: Copy to...
    24. S: Switch to...
    25. S: Merge to...
    26. S: Export to...
  10. ----------------------------------
  11. Export / Import image:submenu.png (data transfers crossing the repository boundary)
    1. G: M: Export Uncommited Changes...
    2. G: Export Commit...
    3. M: Export Diff...
    4. C: S: Export Diff Patch...
    5. M: Export Changeset Bundle...
    6. M: Import Changesets...
    7. C: S: Apply Diff Patch...
    8. ----------------------------------
    9. M: Shelve Changes (was in Shelve Changes)
    10. M: Unshelve Changes...
    11. M: Unshelve <name> Changes
  12. Revert / Recover image:submenu.png
    1. Revert Modifications...
    2. G: Revert Commit...
    3. ----------------------------------
    4. M: Strip...
    5. M: Backout...
    6. M: Rollback - <name>
    7. M: Verify
    8. ----------------------------------
    9. Revert Deleted Files (was in History)
  13. ----------------------------------
  14. G: M: C: Branch image:submenu.png
    1. C: Branch...
    2. G: M: Create Branch...
    3. G: M: C: Switch to Branch...
    4. M: Close Branch...
    5. C: Merge Changes From Branch...
  15. C: Tag...
  16. G: M: Tag image:submenu.png
    1. G: M: Create Tag...
    2. G: M: Manage Tags...
  17. M: Queues image:submenu.png
    1. M: Diff
    2. M: Go to Patch...
    3. M: Pop All Patches
    4. M: Push All Patches
    5. ----------------------------------
    6. M: Create Patch...
    7. M: Refresh Patch...
    8. M: Finish Patches...
  18. ----------------------------------
  19. Show image:submenu.png
    1. Show Annotations
    2. M: Show Incoming
    3. M: Show Outgoing
    4. M: View...
    5. C: View Revision...
    6. S: Versioning Info (should be made available for all VCS to get info about where the current selection is managed, by what system etc)
  20. History image:submenu.png
    1. Search History...
    2. File History (was History->Show History)
  21. ----------------------------------
  22. Maintenance image:submenu.png (to collect actions used only for infrequent servicing purposes - setup etc.) (alt. Maintenance, Repository, Setup)
    1. G: Reset...
    2. S: Cleanup Working Copy
    3. S: Upgrade Working Copy
    4. C: Change CVS Root...
    5. ----------------------------------
    6. G: Clone...
    7. M: Clone - <name>
    8. M: Clone Other...
    9. S: Relocate...
    10. ----------------------------------
    11. Disconnect...
    12. ----------------------------------
    13. G: M: Properties...
    14. S: Svn Properties
  23. ----------------------------------
  24. Git image:submenu.png
    1. Initialize Project...
    2. Clone...
    3. ----------------------------------
    4. Repository Browser
  25. Mercurial image:submenu.png
    1. Initialize Project...
    2. Clone Other...
  26. Subversion image:submenu.png
    1. Import Into Repository...
    2. Checkout...
  27. CVS image:submenu.png
    1. Import Into Repository...
    2. Checkout...
  28. ----------------------------------
  29. Find Issues...
  30. Report Issue...
  31. ----------------------------------
  32. Create Build Job...


Stan How about merging items 24 to 27 above a bit more into some sort of 'Setup' menu?


  1. ----------------------------------
  2. Setup image:submenu.png
    1. Git image:submenu.png
      1. Initialize Project...
      2. Clone...
      3. ----------------------------------
      4. Repository Browser
    2. Mercurial image:submenu.png
      1. Initialize Project...
      2. Clone Other...
    3. Subversion image:submenu.png
      1. Import Into Repository...
      2. Checkout...
    4. CVS image:submenu.png
      1. Import Into Repository...
      2. Checkout...



(NOT A REAL MENU) The simplified view of rearranged Team menu (details and menu versions for concrete VCS instances follow below): This is the simplified abstract view of the menu proposal above for easier overview

  1. Status - <name>
  2. Diff - <name>
  3. Update...
  4. Add - <name>
  5. Inclusion image:submenu.png
  6. Commit...
  7. ----------------------------------
  8. Synchronize image:submenu.png (alt. Remote)
  9. ----------------------------------
  10. Export / Import image:submenu.png
  11. Revert / Recover image:submenu.png
  12. ----------------------------------
  13. Branch image:submenu.png
  14. Tag image:submenu.png
  15. Queues image:submenu.png
  16. ----------------------------------
  17. Show image:submenu.png
  18. History image:submenu.png
  19. ----------------------------------
  20. Maintenance image:submenu.png (alt. Repository, Setup)
  21. ----------------------------------
  22. Git image:submenu.png
  23. Mercurial image:submenu.png
  24. Subversion image:submenu.png
  25. CVS image:submenu.png
  26. ----------------------------------
  27. Find Issues...
  28. Report Issue...
  29. ----------------------------------
  30. Create Build Job...


The following lists show how the particular VCS menus would look like if rearranged according the above scheme.


The rearranged Team menu in GIT context:

  1. Status - <name> (alt. Show Changes)
  2. Diff - <name>
  3. Add - <name>
  4. Inclusion image:submenu.png
    1. Ignore (Unignore)
    2. Exclude From Commit (Include in Commit)
  5. Commit...
  6. ----------------------------------
  7. Synchronize image:submenu.png
    1. Checkout Revision...
    2. Checkout Files...
    3. ----------------------------------
    4. Fetch...
    5. Fetch from Upstream...
    6. ----------------------------------
    7. Pull...
    8. Pull from Upstream...
    9. ----------------------------------
    10. Merge Revision...
    11. ----------------------------------
    12. Push...
    13. Push to Upstream...
  8. ----------------------------------
  9. Export / Import image:submenu.png
    1. Export Uncommited Changes...
    2. Export Commit...
  10. Revert / Recover image:submenu.png
    1. Revert Modifications...
    2. Revert Commit...
    3. ----------------------------------
    4. Revert Deleted Files (was in History)
  11. ----------------------------------
  12. Branch image:submenu.png
    1. Create Branch...
    2. Switch to Branch...
  13. Tag image:submenu.png
    1. Create Tag...
    2. Manage Tags...
  14. ----------------------------------
  15. Show image:submenu.png
    1. Show Annotations
    2. Versioning Info (should be made available for all VCS to get info about where the current selection is managed, by what system etc)
  16. History image:submenu.png
    1. Search History...
    2. File History (was History->Show History)
  17. ----------------------------------
  18. Maintenance image:submenu.png (alt. Maintenance, Repository, Setup)
    1. Reset...
    2. ----------------------------------
    3. Clone...
    4. ----------------------------------
    5. Disconnect...
    6. ----------------------------------
    7. Properties...
  19. ----------------------------------
  20. Git image:submenu.png
    1. Initialize Project...
    2. Clone...
    3. ----------------------------------
    4. Repository Browser
  21. Mercurial image:submenu.png
    1. Initialize Project...
    2. Clone Other...
  22. Subversion image:submenu.png
    1. Import Into Repository...
    2. Checkout...
  23. CVS image:submenu.png
    1. Import Into Repository...
    2. Checkout...
  24. ----------------------------------
  25. Find Issues...
  26. Report Issue...
  27. ----------------------------------
  28. Create Build Job...


The rearranged Team menu in Mercurial context:

  1. Status - <name> (alt. Show Changes)
  2. Diff - <name>
  3. Update...
  4. Add - <name>
  5. Inclusion image:submenu.png (created to gather these items before Commit, which depends on them)
    1. Toggle Ignore
  6. Commit...
  7. ----------------------------------
  8. Synchronize image:submenu.png (hopefully well discoverable submenu to collect the remaining local-(to/from)-remote actions and to provide them just under the group of the key actions above)
    1. Fetch - <name>
    2. ----------------------------------
    3. Pull from default - <name>
    4. Pull Other...
    5. ----------------------------------
    6. Merge Changes
    7. Resolve Conflicts
    8. ----------------------------------
    9. Push to default - <name>
    10. Push Other...
  9. ----------------------------------
  10. Export / Import image:submenu.png (data transfers crossing the repository boundary)
    1. Export Uncommited Changes...
    2. Export Diff...
    3. Export Changeset Bundle...
    4. Import Changesets...
    5. ----------------------------------
    6. Shelve Changes (was in Shelve Changes)
    7. Unshelve Changes...
    8. Unshelve <name> Changes
  11. Revert / Recover image:submenu.png
    1. Revert Modifications...
    2. ----------------------------------
    3. Strip...
    4. Backout...
    5. Rollback - <name>
    6. Verify
    7. ----------------------------------
    8. Revert Deleted Files (was in History)
  12. ----------------------------------
  13. Branch image:submenu.png
    1. Create Branch...
    2. Switch to Branch...
    3. Close Branch...
  14. Tag image:submenu.png
    1. Create Tag...
    2. Manage Tags...
  15. Queues image:submenu.png
    1. Diff
    2. Go to Patch...
    3. Pop All Patches
    4. Push All Patches
    5. ----------------------------------
    6. Create Patch...
    7. Refresh Patch...
    8. Finish Patches...
  16. ----------------------------------
  17. Show image:submenu.png
    1. Show Annotations
    2. Show Incoming
    3. Show Outgoing
    4. View... (?)
    5. Versioning Info (should be made available for all VCS to get info about where the current selection is managed, by what system etc)
  18. History image:submenu.png
    1. Search History...
    2. File History (was History->Show History)
  19. ----------------------------------
  20. Maintenance image:submenu.png (to collect actions used only for infrequent servicing purposes - setup etc.) (alt. Maintenance, Repository, Setup)
    1. Clone - <name>
    2. Clone Other...
    3. ----------------------------------
    4. Disconnect...
    5. ----------------------------------
    6. Properties...
  21. ----------------------------------
  22. Git image:submenu.png
    1. Initialize Project...
    2. Clone...
    3. ----------------------------------
    4. Repository Browser
  23. Mercurial image:submenu.png
    1. Initialize Project...
    2. Clone Other...
  24. Subversion image:submenu.png
    1. Import Into Repository...
    2. Checkout...
  25. CVS image:submenu.png
    1. Import Into Repository...
    2. Checkout...
  26. ----------------------------------
  27. Find Issues...
  28. Report Issue...
  29. ----------------------------------
  30. Create Build Job...


The rearranged Team menu in Subversion context:

  1. Status - <name> (alt. Show Changes)
  2. Diff - <name>
  3. Update image:submenu.png
    1. Update (Update too frequent to reside in submenu?)
    2. Update Project with Dependencies
    3. Update To...
  4. Inclusion image:submenu.png (created to gather these items before Commit, which depends on them)
    1. Ignore
    2. Lock
  5. Commit...
  6. ----------------------------------
  7. Synchronize image:submenu.png (hopefully well discoverable submenu to collect the remaining local-(to/from)-remote actions and to provide them just under the group of the key actions above)
    1. Resolve Conflicts...
    2. ----------------------------------
    3. Copy to...
    4. Switch to...
    5. Merge to...
    6. Export to...
  8. ----------------------------------
  9. Export / Import image:submenu.png (data transfers crossing the repository boundary)
    1. Export Diff Patch...
    2. Apply Diff Patch...
  10. Revert / Recover image:submenu.png
    1. Revert Modifications...
    2. ----------------------------------
    3. Revert Deleted Files (was in History)
  11. ----------------------------------
  12. Show image:submenu.png
    1. Show Annotations
    2. Versioning Info (should be made available for all VCS to get info about where the current selection is managed, by what system etc)
  13. History image:submenu.png
    1. Search History...
    2. File History (was History->Show History)
  14. ----------------------------------
  15. Maintenance image:submenu.png (to collect actions used only for infrequent servicing purposes - setup etc.) (alt. Maintenance, Repository, Setup)
    1. Cleanup Working Copy
    2. Upgrade Working Copy
    3. ----------------------------------
    4. Relocate...
    5. ----------------------------------
    6. Disconnect...
    7. ----------------------------------
    8. Properties (was Svn Properties)
  16. ----------------------------------
  17. Git image:submenu.png
    1. Initialize Project...
    2. Clone...
    3. ----------------------------------
    4. Repository Browser
  18. Mercurial image:submenu.png
    1. Initialize Project...
    2. Clone Other...
  19. Subversion image:submenu.png
    1. Import Into Repository...
    2. Checkout...
  20. CVS image:submenu.png
    1. Import Into Repository...
    2. Checkout...
  21. ----------------------------------
  22. Find Issues...
  23. Report Issue...
  24. ----------------------------------
  25. Create Build Job...


The rearranged Team menu in CVS context:

  1. Status - <name> (alt. Show Changes)
  2. Diff - <name>
  3. Update image:submenu.png
    1. Update (Update too frequent to reside in submenu?)
    2. Update Project with Dependencies
  4. Inclusion image:submenu.png (created to gather these items before Commit, which depends on them)
    1. Ignore
  5. Commit...
  6. ----------------------------------
  7. Synchronize image:submenu.png (hopefully well discoverable submenu to collect the remaining local-(to/from)-remote actions and to provide them just under the group of the key actions above)
    1. Checkout...
    2. ----------------------------------
    3. Resolve Conflicts...
  8. ----------------------------------
  9. Export / Import image:submenu.png (data transfers crossing the repository boundary)
    1. Export Diff Patch...
    2. Apply Diff Patch...
  10. Revert / Recover image:submenu.png
    1. Revert Modifications...
    2. ----------------------------------
    3. Revert Deleted Files (was in History)
  11. ----------------------------------
  12. Branch image:submenu.png
    1. Branch...
    2. Switch to Branch...
    3. Merge Changes From Branch...
  13. Tag...
  14. ----------------------------------
  15. Show image:submenu.png
    1. Show Annotations
    2. View Revision...
    3. Versioning Info (should be made available for all VCS to get info about where the current selection is managed, by what system etc)
  16. History image:submenu.png
    1. Search History...
    2. File History (was History->Show History)
  17. ----------------------------------
  18. Maintenance image:submenu.png (to collect actions used only for infrequent servicing purposes - setup etc.) (alt. Maintenance, Repository, Setup)
    1. Change CVS Root...
    2. ----------------------------------
    3. Disconnect...
  19. ----------------------------------
  20. Git image:submenu.png
    1. Initialize Project...
    2. Clone...
    3. ----------------------------------
    4. Repository Browser
  21. Mercurial image:submenu.png
    1. Initialize Project...
    2. Clone Other...
  22. Subversion image:submenu.png
    1. Import Into Repository...
    2. Checkout...
  23. CVS image:submenu.png
    1. Import Into Repository...
    2. Checkout...
  24. ----------------------------------
  25. Find Issues...
  26. Report Issue...
  27. ----------------------------------
  28. Create Build Job...

New Proposition

Ondra and Honza have created new proposition for changes in team menu. Since this page is already really long I've created a separated page, see UEXTeamMenu

Tools

..to be worked on..

Current state:

  1. Apply Diff Patch...
  2. Diff
  3. Add to Favorites
  4. ----------------------------------
  5. Create Tests
  6. Analyze Javadoc
  7. Add to Palette...
  8. Internationalization image:submenu.png
    1. Internationalize...
    2. Insert Internationalization String... Ctrl_Shift+J
    3. ----------------------------------
    4. Internationalization Wizard
    5. Internationalization Test Wizard
  9. ----------------------------------
  10. Java Platforms
  11. NetBeans Platforms
  12. Ant Variables
  13. Ant Libraries
  14. Servers
  15. Cloud Providers
  16. Mobility Deployment
  17. Keystores
  18. Templates
  19. DTDs and XML Schemas
  20. Palette image:submenu.png
    1. Swing/AWT Components
    2. HTML/JSP Code Clips
    3. Code Clips
    4. SVG Shapes
  21. ----------------------------------
  22. Plugins
  23. ----------------------------------
  24. Options

..to be worked on..

Food for thought - Tools menu redesign (comments welcome):

  • Tools menu contents differ notably based on which plugins are or are not active
  • the meaning of some items are not clear, or feels somewhat out of context. Ant Variables and Ant Libraries is relevant for Ant based projects; at the same time no Maven specific tools are present. Generally this menu seems to collect items of mixed nature. Perhaps it might be good to express more explicitly the nature by collecting such items (if possible, and if the items are not used as frequently as to justify direct appearance in main Tools menu) ? Below I propose this for Ant..
  1. Apply Diff Patch...
  2. Diff to...
  3. Add to Favorites
  4. ----------------------------------
  5. Create Tests
  6. Analyze Javadoc (?better be moved to Refactor->Inspect JavaDoc... (?or part of Inspect & Transform))
  7. Internationalization image:submenu.png
    1. Internationalize...
    2. Insert Internationalization String... Ctrl_Shift+J
    3. ----------------------------------
    4. Internationalization Wizard
    5. Internationalization Test Wizard
  8. Add to Palette... (moved to be neighbor with Palette->)
  9. Palette image:submenu.png (moved to be neighbor with Add to Palette)
    1. Swing/AWT Components
    2. HTML/JSP Code Clips
    3. Code Clips
    4. SVG Shapes
  10. ----------------------------------
  11. Java Platforms
  12. NetBeans Platforms
  13. ---------------------------------- (added line to emphasize the importance of platforms)
  14. Ant image:submenu.png (but note the recent discussion at http://netbeans.org/bugzilla/show_bug.cgi?id=224702 about why this is not just Ant specific)
    1. Ant Variables
    2. Ant Libraries
  15. Servers
  16. Cloud Providers
  17. Mobility Deployment
  18. Keystores
  19. Templates
  20. DTDs and XML Schemas
  21. ----------------------------------
  22. Plugins
  23. ----------------------------------
  24. Options

Window

Current state:

  1. image:icon_symbol.png Projects Ctrl+1
  2. image:icon_symbol.png Files Ctrl+2
  3. image:icon_symbol.png Classes Ctrl+9
  4. image:icon_symbol.png Favorites Ctrl+3
  5. image:icon_symbol.png Services Ctrl+5
  6. image:icon_symbol.png Action Items Ctrl+6
  7. image:icon_symbol.png Palette Ctrl+Shift+8
  8. image:icon_symbol.png Properties Ctrl+Shift+7
  9. Output image:submenu.png
    1. image:icon_symbol.png Output Ctrl+4
    2. image:icon_symbol.png Search Results Ctrl+Shift+0 (shortcut does not work?)
    3. image:icon_symbol.png Find Usages Results Alt+Shift+U
    4. Inspector Window
    5. image:icon_symbol.png Test Results
    6. Versioning Output
    7. image:icon_symbol.png Refactoring Preview
    8. Analyzer
    9. image:icon_symbol.png Call Graph
    10. image:icon_symbol.png Terminal
  10. Navigating image:submenu.png
    1. image:icon_symbol.png Navigator Ctrl+7
    2. image:icon_symbol.png Bookmarks
    3. image:icon_symbol.png Hierarchy (UEX bug: this opens just the C++ Hierarchy window which is different from the Java one)
  11. Debugging image:submenu.png
    1. image:icon_symbol.png Variables Alt+Shift+1
    2. image:icon_symbol.png Watches Alt+Shift+2
    3. image:icon_symbol.png Call Stack Alt+Shift+3
    4. image:icon_symbol.png Loaded Classes Alt+Shift+4
    5. image:icon_symbol.png Breakpoints Alt+Shift+5
    6. image:icon_symbol.png Sessions Alt+Shift+6
    7. image:icon_symbol.png Threads Alt+Shift+7
    8. image:icon_symbol.png Expression Evaluation
    9. image:icon_symbol.png Sources Alt+Shift+8
    10. ----------------------------------
    11. image:icon_symbol.png Debugging Alt+Shift+9
    12. image:icon_symbol.png Disassembly
    13. image:icon_symbol.png Memory
    14. image:icon_symbol.png Registers
    15. ----------------------------------
    16. image:icon_symbol.png Debugger Console
  12. Profiling image:submenu.png
    1. image:icon_symbol.png Profiler
    2. image:icon_symbol.png Live Results
    3. image:icon_symbol.png Threads
    4. image:icon_symbol.png VM Telemetry
    5. image:icon_symbol.png VM Telemetry Overview
    6. image:icon_symbol.png Profiling Points
  13. Versioning image:submenu.png
    1. image:icon_symbol.png Subversion
    2. image:icon_symbol.png Mercurial
  14. Other image:submenu.png
    1. image:icon_symbol.png Exception Reporter
    2. image:icon_symbol.png Javadoc
    3. C/C++ Documentation
    4. Analyze Stack
    5. image:icon_symbol.png Macro Expansion
  15. Web image:submenu.png
    1. Web Browser
    2. image:icon_symbol.png CSS Styles
  16. Editor Ctrl+0
  17. Processes
  18. ----------------------------------
  19. Configure Window image:submenu.png
    1. Maximize
    2. Float
    3. Float Group
    4. Minimize
    5. Minimize Group
    6. Dock Alt+Shift+D
    7. Dock Group
    8. ----------------------------------
    9. Clone Document
    10. New Document Tab Group
    11. Collapse Document Tab Group
  20. Reset Windows
  21. ----------------------------------
  22. Close Window Ctrl+W
  23. Close All Documents Strl+Shift+W
  24. Close Other Documents
  25. Documents... Shift+F4


Suggestions

  • Window menu suffers quite considerably by the fact that various modules (developed independently without proper UI synchronization) inject items here and into sub-menus. The result is at times a logical chaos, naming flaws, inconsistency of icon coverage etc. Examples of UI flaws follow:
  • Window->Navigator->Hierarchy opens a C++ related Hierarchy window only in undocked state, even if working on Java project. There is no way of opening a Java Hierarchy window from Window menu. In fact there should be just one Hierarchy window but currently this is not the case
  • many names are flawed, either redundant ("Window" in "Inspector Window") or insuffieciently expressive (Analyzer is currently used for JavaDoc analysis. How can a first-time user understand what is the difference between "Analyzer" and "Inspector"?)
  • Sub-menu Other seems to have served as a thrash bin. Better placement of at least some of its items should be attempted
  • etc.

Stan There are many windows which open just empty and user cannot do anything with them, e.g. Search Results, Usages, JavaDoc and many other. These windows need some context which provide appropriate action in other parts of the main menu. I suggest removing such windows from the Window menu completely. The only reason having them listed there is for the user to switch to those windows later on. But that can be achieve using Ctrl+Tab window switcher which now lists also non-editor windows. The popup switcher could even be enhanced to show keyboard shortcuts for each displayed window (if any).

Food for thought - Window menu redesign (comments welcome)

  • the main idea of the proposal is to clean up the logic of item assignment to sub-menus. Debugging, Profiling, Versioning is OK, Navigating needs correction with respect to Hierarchy. The main change proposed below would be to let Output collect only windows that provide output but do not enable editing in any way and to introduce two more submenus: Editing to collect windows that permit changes in edited files and IDE to collect windows unrelated to particular opened projects or files.
  • Menu items prefixed with [EMPTY] open just an empty window. User must actually invoke some other action to set window's context and initialize it.


  1. image:icon_symbol.png Projects Ctrl+1
  2. image:icon_symbol.png Files Ctrl+2
  3. image:icon_symbol.png Classes Ctrl+9
  4. image:icon_symbol.png Favorites Ctrl+3
  5. image:icon_symbol.png Services Ctrl+5
  6. image:icon_symbol.png Action Items Ctrl+6
  7. image:icon_symbol.png Palette Ctrl+Shift+8
  8. image:icon_symbol.png Properties Ctrl+Shift+7
  9. Output image:submenu.png
    1. image:icon_symbol.png Output Ctrl+4
    2. image:icon_symbol.png [EMPTY] Search Results Ctrl+Shift+0 (shortcut does not work?)
    3. image:icon_symbol.png [EMPTY] Find Usages Results Alt+Shift+U
    4. image:icon_symbol.png [EMPTY] Test Results
    5. ----------------------------------
    6. image:icon_symbol.png JavaDoc Documentation (formerly Javadoc)
    7. image:icon_symbol.png C/C++ Documentation
  10. Editing image:submenu.png
    1. image:icon_symbol.png Editor Ctrl+0
    2. image:icon_symbol.png [EMPTY] Refactoring (formerly Refactoring Window)
    3. image:icon_symbol.png [EMPTY] Code Inspector (formerly called Inspector Window)
    4. image:icon_symbol.png [EMPTY] JavaDoc Inspector (formerly called just Analyzer)
    5. image:icon_symbol.png [EMPTY] C/C++ Macro Expansion (formerly Macro Expansion)
  11. Navigating image:submenu.png
    1. image:icon_symbol.png Navigator Ctrl+7
    2. image:icon_symbol.png Bookmarks
    3. image:icon_symbol.png [EMPTY] Hierarchy (repaired to be just one for both C++ and Java)
    4. image:icon_symbol.png [EMPTY] C/C++ Call Graph
  12. Debugging image:submenu.png
    1. image:icon_symbol.png Variables Alt+Shift+1
    2. image:icon_symbol.png Watches Alt+Shift+2
    3. image:icon_symbol.png Call Stack Alt+Shift+3
    4. image:icon_symbol.png Loaded Classes Alt+Shift+4
    5. image:icon_symbol.png Breakpoints Alt+Shift+5
    6. image:icon_symbol.png Sessions Alt+Shift+6
    7. image:icon_symbol.png Threads Alt+Shift+7
    8. image:icon_symbol.png Expression Evaluation
    9. image:icon_symbol.png Sources Alt+Shift+8
    10. ----------------------------------
    11. image:icon_symbol.png Debugging Alt+Shift+9
    12. image:icon_symbol.png Disassembly
    13. image:icon_symbol.png Memory
    14. image:icon_symbol.png Registers
    15. ----------------------------------
    16. image:icon_symbol.png Debugger Console
    17. image:icon_symbol.png Analyze Stack
  13. Profiling image:submenu.png
    1. image:icon_symbol.png Profiler
    2. image:icon_symbol.png Live Results
    3. image:icon_symbol.png Threads
    4. image:icon_symbol.png VM Telemetry
    5. image:icon_symbol.png VM Telemetry Overview
    6. image:icon_symbol.png Profiling Points
  14. Versioning image:submenu.png
    1. image:icon_symbol.png [EMPTY] Versioning Output
    2. image:icon_symbol.png [EMPTY] Subversion
    3. image:icon_symbol.png [EMPTY] Mercurial
  15. Web image:submenu.png
    1. image:icon_symbol.png Web Browser
    2. image:icon_symbol.png CSS Styles
  16. IDE image:submenu.png
    1. image:icon_symbol.png Notifications (planned for next release as Notification and Messaging Center, see UEXNotifications)
    2. image:icon_symbol.png Exception Reporter
    3. image:icon_symbol.png Terminal
    4. image:icon_symbol.png Processes
  17. ----------------------------------
  18. Configure Window image:submenu.png
    1. Maximize
    2. Float
    3. Float Group
    4. Minimize
    5. Minimize Group
    6. Dock Alt+Shift+D
    7. Dock Group
    8. ----------------------------------
    9. Clone Document
    10. New Document Tab Group
    11. Collapse Document Tab Group
  19. Reset Windows
  20. ----------------------------------
  21. Close Window Ctrl+W
  22. Close All Documents Strl+Shift+W
  23. Close Other Documents
  24. Documents... Shift+F4

Help

Current state:

  1. Help Contents
  2. Online Docs and Support
  3. Keyboard Shortcuts Card
  4. Report Issue...
  5. ----------------------------------
  6. Javadoc Index Search Shift+F1
  7. Javadoc References image:submenu.png
    1. More Javadoc...
  8. ----------------------------------
  9. Check for Updates
  10. Start Page
  11. About


Suggestions / Questions

  • Javadoc -> JavaDoc ?
  • Javadoc References has just one sub-item at all times ?
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