New file context menu UI specification
Author: Ondrej Langr
$Id: new_file_context_menu.html,v 1.1 2007/02/05 11:09:49 ondrej Exp $ (see full CVS history)
- Problem Description
- Use Cases and Scenarios
- Open Issues & Notes
The contemporary submenu in New context menu appearing when a user right-clicks the project or it's folder in Projects Window (see figure below) has proved not to follow the task flow of a user willing to add a particular type of file. Users have problems understanding and using the File/Folder... menu item if they do not find the desired file in the menu. This specification draft proposes a redesign of this menu.
This problem is also described in the issue 68232.
Figure 1. Appearance of the context menu in NetBeans 5.5
The user has created a project with a few files/folders in it and wants to add a new file (or folder) into this project open in Projects Window
- User selects the folder she wants to create the file in or the project name in projects window.
- She opens the New menu
She finds the desired file type in the part of the New menu containing recently added file types
- She starts the wizard for chosen file type
- b) She does not find the desired file type in the context menu and invokes the general New File wizard.
Since the user always reads the menu from top to bottom when searching for the particular item, the last option that allows adding any type of file should be at the bottom.
Figure 2. New proposed menu (please notice that items above the vertical separator are dynamically generated)
The number of menu items should be at most 10. However, by default, after a clean installation there can be as few as only two or three files (e.g. Java Package, Java Class and Folder).
Motivation to dynamic menu behavior
Due to existance of various packs, NetBeans is not used exclusively for Java development and there can be a wide range of file types. Which ones are the most commonly used highly depends on developer's specialization and position in a team. Therefore, we are not able to give a static selection of generally most used file types, the New ... menu should by dynamic instead.
Dynamic behavior description
Current state (NetBeans 5.5):
The New menu items are currently bound to a project type, though not too strictly. To be specific, if a file is added in a project, it increases its rating in all other projects where this type of file can also be added. There are no data available mapping the typical usage patterns of file types, but I believe this is very appropriate and should be left as it is. In other words, when a user often adds file type x in a project, she is more likely to want to add the filetype x into other types of project where it makes sense. The rating is set so that the last added file has the highest ranking and is put on the top of the New menu.
The optimal algorithm to dynamically reorganize recently added types of files should, from user's point of view, satisfy following requirements:
- Neither too fast, nor too slow variability - items should change their position in menu gradually, step by step.
- The menu should converge to contain most used file types (with respect to the project type) at the top short after a new installation of the IDE.
- When user's behavior patterns change over time, the menu should reflect these changes. For example, if the user downloads the IDE and develops Java applications for 5 months, and then develops web applications for 2 months, the context menu should mainly contain file types used when developing web applications.
The menu context should not only reflect files added through this menu, but also files added via the File | New File... main menu item and through the main toolbar icon.
Any algorithm complying with the requirements above can be used. The current (putting the last added type of file on the top of the menu) has some drawbacks, but no better algorithm was proposed yet, so the "old" one should be used.
Figure 3. Current state (NetBeans 5.5) VS the proposed menu (please notice that in either case most menu items are dynamically generated).
There has been a lot of discussion on the algorithm to dynamically generate the menu content. The current algorithm has some drawbacks, but no better way was found yet. Any proposals are welcome!