Menu+Bar

The purpose of this section is to introduce the menus in the menu bar. Many menu items are typical of commonly used software applications and their operations are well-known. We will assume the reader is familiar with these items and no illustration is provided. Some items are specific to the operation of Alice, in which case we provide a brief description and illustration of the items. __** File Menu: **__ New, Open, Save, Save As, and Exit, Recent Projects, Revert, Print __** Edit Menu **__ __** Project Menu : **__ Manage Resources, Find, Statistics __** Window Menu: **__ Perspectives, Project History, Backtrack in History, Memory Usage, Preferences __**Help Menu:**__ Help..., Report a Bug…, Suggest Improvement…, and , Request a new Feature… , About
 * Tour Menu bar**

In Alice 3, a menu bar is displayed in the upper left corner of the window, as shown below. The menus include: **File, Edit, Project, Run, Window,** and **Help.**

**Code view and Menu bar**

**File menu** The **File** menu contains options for managing and editing files in a project, as shown below. The items in the File menu are: **New, Open, Recent Projects, Save, Save As, Revert, Print,** and **Exit.** **Menu for managing files**

**New, Open, Save, Save As,** and **Exit** are typical of many software applications and their usage is well-known. Our only suggestion is that the first time an Alice project is saved, use **Save As** instead of **Save**. **Save As** guarantees that the file will be saved in a user-selected directory rather than a default directory. Files can be saved on the C drive (hard drive), a networked drive, a USB drive, or a read-write CD/DVD.

**Recent Projects** provides links to recently edited Alice 3 projects that have been saved.

**Revert** restores the scene to its initial state when the world was first opened in the current session. In other words, all actions in the current editing session are backtracked and removed.

The **Print** menu item is available for printing program code. As shown below, the Print menu item cascades to three choices for how much of the program code to print. The//Print All// option will print all the code created in the program. (Of course, this does not include pre-written code that is part of the Alice system.)**Print Current Code** will print only the code in the method currently being edited in the Code editor.**Print Scene Editor** will print a screen capture of the Scene Editor, including a screen capture of the Scene View and the Setup panel but not including the Gallery panel. **Print options in the File menu** **Edit menu** The edit menu contains **Undo, Redo, Cut, Copy**, and **Paste**, as shown. These are all standard editing actions. As of this writing, **Cut, Copy**, and **Paste** are not implemented but are listed in the menu to provide for future modifications. Truthfully, the traditional cut, copy, and paste actions work well in a text editing environment. However, these actions are of limited usefulness in an editor containing graphic statement tiles. **Menu for Edit options**

**Project menu**
The project menu contains **Manage Resources, Find**, and **Statistics**. The **Manage Resources** item opens a dialog box for importing (or removing) resource files. A resource file may be either an audio (sound) or image (picture) file. Alice does not provide sound or image editing capabilities. **Resources dialog box**

In the project menu, **Find** opens a dialog box for searching the program code to find where a method tile is used. Below, the scene’s method named //setActiveScene//has been selected in the Find box. When //setActiveScene// is selected in the Find dialog box, a message appears in the column on the right to show that a tile has been found in the //setActiveScene// program’s //main// method. Also, the //main// method is opened in a new tab for viewing the //setActiveScene// tile within it. **Find where a method tile is used in the program**

In the project menu, **Statistics** opens a window that displays a frequency analysis of constructs and method calls within the current project, as shown. **Statistics popup window**

**Window menu** The **Window** menu contains **Perspectives, Project History, Memory Usage**, and **Preferences**, as shown**.** These items control the display of the Alice 3 environment in terms of the number of open windows and their content.

** Window menu **

The **Perspectives** menu provides a choice of Code editor or Scene editor display, as shown. This menu option is an alternative to using the toggle buttons. ** Perspectives **

The **Project History** item opens a new window containing a list of all actions performed (thus far) in the current editing session. The figure below shows a Project History window in which sally (a Sims2 character) is declared (added to the scene), sally is moved in the scene, the camera is moved, a bunny is added to the scene, and the bunny is moved in the scene. The actions in the history are listed in the order they were performed. The history does not extend over the life of the project, only having a record of actions in the current editing session. **View project history**

**Backtrack In History**
It is possible to backtrack to a previous **state** (objects in the scene, their locations, and their properties) of the world by clicking an earlier item in the list, as shown in Figure 4.10 above. Selecting an item (other than the last one) causes all later actions in the list to be “played backwards.” To illustrate, we clicked**Camera Move** in the Project History and the two later action items (**declare bunny** and**Object Move**) were played backwards. So, the bunny moved back to its initial location and then was deleted from the world. The state of the world when**Camera Move** was executed is now displayed in the scene view shown. Notice that the**declare bunny** and**Object Move** actions are still in the history and clicking on one of these will track forward to that state. However, if a middle state is selected, then the history box is closed, and some other action is performed, the project history is updated and later states are removed from the history. **Backtracking to a previous state** The **Memory Usage** item opens a popup window in which memory usage is tracked, as shown. An alert is displayed in the window's task bar when Java's garbage collection is in progress.

**Memory usage window** The **Preferences** item opens a cascading menu for setting preferences in the Alice 3 environment, as shown.

** Preferences cascading menu ** A quick overview of the Preferences menu items is provided here. Details for setting preferences are provided by the document How to Set Preferences.
 * **Programming Language**: Display code using Alice or Java syntax
 * **Locale**: Display code in the natural language selected (English, Spanish, Chinese, Portuguese, Russian, and others).
 * **Emphasize Classes**: Display a Class Panel in the Code editor. Class panels are particularly useful to those preparing to learn a production level language such as Java.
 * **Include "this."** For field access: Display "this." in program code in the Code editor. The word “this” represents the currently selected object (which can be the scene or an object within the scene).
 * **Include Type Decoration**: Display decorative symbols on method tiles to indicate the type of entity represented (for example, an object, number, string, Boolean, and so forth).
 * **Include Program Type**: Include //Program// in the Class menu list. //Program// contains the //main// method, which is the first method executed when the Run button is clicked.
 * **Recursion**: Enable the use of recursion in Alice programs.
 * **Allow Null for field initializers**: Allow a class variable to be declared without an initial value
 * **Allow Null for local initializers**: Allow a local variable to be declared without an initial value.
 * **Gallery**: Preference settings for the dialog box are displayed when adding an object to a scene. Gallery preference settings include enabling or disabling a preview of the declaration for creating an object and an option for auto-naming. The figure below shows the dialog box with (left) and without (right) a preview of the declaration statement.

**Preview on (left) and off (right) preference settings**

**Help menu** The Help menu contains: **Help, Report a Bug, Suggest improvements, Request a New Feature, Show Warning, Show System Properties, Browse Release Notes**, and **About,** as shown. **Help menu** The **Help…** item opens a window containing a link to the help page at alice.org, (**//Note: which is this wiki//**), as shown.

**Help link** The **Report a Bug…, Suggest Improvement…**, and **Request a new Feature…** items each open a window containing a form for the specified action. This feature allows Alice users to submit a bug report, suggest improvements, and provide ideas for new features. When the submit button is clicked, the report is immediately submitted to the reports database if the computer is currently connected to the internet. If not connected to the internet, the report is simply deleted when Alice is shut down.

** Bug report form ** The **About** item describes the current release of Alice 3.