Project tool window
This tool window lets you look at your project from various viewpoints and perform the tasks such as creating new items (nodes, models, modules, and so on), opening nodes or files in the editor, navigating to the code fragment of interest, and more.
Most of the functions in this tool window are accessed as context menu commands in the content pane and via associated shortcuts.
Also, the view contains the Scratches and Consoles folder that lets you manage created scratch files, database consoles, and extension scripts.
Views
The tool window has several views:
Logical View. In this view, all the project nodes are shown organized logically into their containing modules, models and virtual folders.
File System. In this view, all the project files are shown organized by their physical location on the directory structure.
To switch between views, press Alt+Right/Alt+Left or select the desired view from the list on the title bar.
You can also display each view in a separate tab: click and disable the Group Tabs option.
To configure a view, use the corresponding options in the title bar context menu. The necessary options can also be accessed by clicking on the title bar.
Preview files
There are two ways to preview files without opening each one in a separate tab:
Use the file preview popup: select a file in the Project tool window and press Space.
Enable the preview tab: click and select Enable Preview Tab.
Show tree indent guides
In the Project tool window , you can display vertical lines that mark indent levels and help you better understand the hierarchy of the components in your project.
Go to
Set the Show tree indent guides checkbox.
Title bar context menu
The context menu that appears by right-clicking the title bar or clicking Options button () provides settings for project views.
The following table lists and briefly explains the available commands and options.
Item | Shortcut | Description |
---|---|---|
Show Members | If this option is on, the nodes in the tree, when unfolded, will show the contained children, properties and references. | |
Sort by Name | Sort files alphabetically by their names. The option does not affect the order of folders, they are always sorted alphabetically. | |
Sort by Modification Time (Newest First/Oldest First) | Sort files by the time they were modified. To display this information, select from the main menu.The option does not affect the order of folders, they are always sorted alphabetically. | |
Folders Always on Top | If the option is on, virtual folders are shown above the root nodes. Otherwise, all items are sorted alphabetically, and root nodes and virtual folders appear intermixed. | |
Open Directories with Single Click | Expand and collapse directories in the Project tool window by clicking them once. Otherwise, you need to double-click a directory to open it or use the icon next to the directory's name. | |
Sort Roots by Concept | Root nodes of the same concept will be grouped together inside a model. | |
Show @descriptor models in Generators | These models are normally hidden. This option makes them visible in the tree. | |
Group Tabs | If this option is on, there is a list in the left-hand part of the title bar from which you can select the necessary view. If this option is off, the views are represented by tabs which appear in the left-hand part of the title bar. | |
View Mode | This option lets you control general appearance and behavior of the tool window. | |
Move to | To associate the tool window with a different tool window bar, select this command, and then select the destination tool window bar (Top, Left, Bottom or Right). For full information, refer to the Move tool windows chapter. | |
Resize | To resize the tool window by moving one of its borders, select this command, and then select the necessary Stretch to option. Note that this command is not available for the floating mode. | |
Remove from Sidebar | This command hides the tool window, removes the button for showing and hiding the tool window and removes the tool window from the quick access menu ( or ). To open the tool window again (and restore the associated features), use the main menu: or press Alt+1. | |
Hide | Shift+Escape | Hide the tool window. |
Help | This command opens the description of the Project tool window in the MPS online help. |
Title bar actions
Item | Shortcut | Description |
---|---|---|
Click this icon to navigate from a node open in the editor to the containing root node in the Project tool window. This icon is not available if the Always Select Opened File option is currently on. | ||
Ctrl+NumPad + | Expand all nodes. | |
Ctrl+NumPad - | Collapse all nodes. | |
Use this button to open a menu whose options are a subset of the title bar context menu. | ||
Shift+Escape | Hide the tool window Shift+Escape. To hide all the tool windows, press Ctrl+Shift+F12. |
Context menu commands for the content pane items
The context menu of an item provides access to all the functions available for this item.
Item | Available on | Description |
---|---|---|
New | Project root | Use this command to create new modules in the project. |
Make Project | Project root | Makes all modified modules in the project. |
Rebuild Project | Project root | Rebuilds all modules in the project. |
Rename Project... | Project root | Allows you to rename the project. |
Check Project | Project root | Runs a model checker against all modules. |
Optimize Imports | Project root | Automatically removes imports that are not necessary. |
Fix Module Imports | Project root | Automatically adds imports of modules that are missing. |
Compile Java Files | Project root | Compiles Java sources that have changed. |
Recompile Java Files | Project root | Re-compiles all Java sources. |
Clean Compiled Java Files | Project root | Removes all compiled Java code. |
Run 'All Tests in Project' | Project root | Collects all tests in the project and runs them. |
Debug 'All Tests in Project' | Project root | Collects all tests in the project and runs them in a debugger. |
Create 'All Tests in Project' | Project root | Creates a run configuration for running all tests in the project. |
Project Modules | Project root | Allows you to add or remove modules to the project. |
New | A Folder of Modules | Allows you to create new modules in the folder. |
Make Selected Modules | A Folder of Modules | Allows you to make the modified modules in the folder. |
Rebuild Selected Modules | A Folder of Modules | Allows you to rebuild the modules in the folder. |
Rename | A Folder of Modules | Renames the folder. |
Check Selected Modules | A Folder of Modules | Runs a model checker against the selected modules. |
New | Module | Allows you to create new models in the module. |
Make | Module | Allows you to make the modified models in the module. |
Rebuild | Module | Allows you to rebuild all models in the module. |
Check | Module | Runs a model checker against the module. |
Optimize Imports | Module | Removes unused imports from the module. |
Analyze | Module | Allows you to analyze the structure and dependencies of the module. |
Delete | Module | Deletes the module from the project and optionally also from disk. |
Copy Module Name | Module | Copies the module name into the clipboard. |
Set Virtual Folder | Module | Allows you to organize modules into virtual folders. For hierarchical names use names with dots. |
Rename | Module | Allows you to rename the module. |
Clone | Module | Creates a clone of the module. |
Scripts | Module | Allows you to run arbitrary automated scripts against the code in that module. |
Compile Java Files | Module | Compiles Java sources in the module that have changed. |
Recompile Java Files | Module | Re-compiles all Java sources in the module. |
Clean Compiled Java Files | Module | Removes all compiled Java code from the module. |
Local History | Module | Allows you to view, compare and store items in the local history of the module. |
Git | Module | Allows you to trigger Git commands on items belonging to the module. |
Run 'Tests in ...' | Module | Collects all tests in the module and runs them. |
Debug 'Tests in ...' | Module | Collects all tests in the module and runs them in a debugger. |
Create 'Tests in ...' | Module | Creates a run configuration for running all tests in the module. |
Find Usages | Module | Allows you to search for usages of code of the module. |
Find Concepts Usages | Module | Allows you to search for instances of concepts defined in the module (only applicable to languages). |
Module Properties | Module | Allows you to view and change dependencies and properties of the module. |
Check | DevKit | Runs a model checker against the DevKit. |
Analyze Classpath | DevKit | Allows you to analyze classpath as it is set for the DevKit. |
Delete DevKit... | DevKit | Deletes the DevKit. |
Copy Module Name | DevKit | Copies the module name into the clipboard. |
Set Virtual Folder | DevKit | Allows you to organize modules into virtual folders. For hierarchical names use names with dots. |
Rename DevKit | DevKit | Allows you to rename the DevKit. |
Find Usages | DevKit | Allows you to search for usages of code of the DevKit. |
Module Properties | DevKit | Allows you to view and change dependencies and properties of the DevKit, including the included solutions and languages. |
New | Model | Allows you to create new root nodes in the model. |
Make Model | Model | Allows you to make the model if it has changed. |
Rebuild Model | Model | Allows you to unconditionally rebuild all nodes in the model. |
Preview Generated Text | Model | Allows you to see the code that gets generated for the nodes in the model. |
Show Generation Plan | Model | Allows you to inspect the generation plan outlined by the generator for the model.. |
Paste | Model | Pastes a root node into the model from the clipboard. |
Paste as Java Class | Model | Pastes a root node of ClassConcept into the model using the text from the clipboard as a Java source. |
Get Model Contents from Source | Model | Import a Java package as MPS model with BaseLanguage code. |
Resolve Stub References to MPS Code | Model | Re-resolve references to point to a newly imported BaseLanguage code instead of to stub models. |
Delete Model | Model | Deletes the model from the module. |
Safe Delete Model | Model | Deletes the model from the module. If there are some usages of that model present in other models, the user is prompted to review those before deleting the model. |
Clone Model | Model | Creates a clone of the model. |
Copy Model Name | Model | Copies the model name into the clipboard. |
Optimize Imports | Model | Removes unused imports from the model. |
Fix Model Imports | Model | Add imports that are missing from the model. |
Convert to File-Per-Root format | Model | Changes the persistence format of the model from File-per-model to File-per-root. |
Analyze Model Dependencies | Model | Allows you to analyze the dependencies of the model and locate them in the code. |
Check Model | Model | Runs a model checker against the model. |
Find Usages | Model | Allows you to search for usages of code of the model. |
Refactoring | Model | Groups actions that can rename or move the model. |
Revert Memory Changes | Model | Allows you to revert back to the version of the model that is stored on disk. |
Show Differences with Model on Disk | Model | Allows you to view the differences in code between the memory and the disk versions. |
Local History | Model | Allows you to view, compare and store items in the local history of the model. |
Git | Model | Allows you to trigger Git commands on items belonging to the model. |
Scripts | Model | Allows you to run arbitrary automated scripts against the code in the model. |
Run 'Tests in ...' | Model | Collects all tests in the model and runs them. |
Debug 'Tests in ...' | Model | Collects all tests in the model and runs them in a debugger. |
Create 'Tests in ...' | Model | Creates a run configuration for running all tests in the model. |
Help | Model | Shows a help entry for the model, if available. |
Model Properties | Model | Allows you to view and change dependencies and properties of the model. |
New | Virtual Folder | Allows you to create new nodes in that virtual folder. |
Paste | Virtual Folder | Allows you to paste nodes into that virtual folder. |
Rename | Virtual Folder | Allows you to rename a virtual folder. |
Preview Generated Text | Node | Allows you to see the code that gets generated for the selected node. |
Set Virtual Package | Node | Allows you to set a dot-separated string that specifies a virtual folder for the selected nodes. |
Expand All | Node | Fully expands all nodes inside the selected root node. This option has no effect if Show Members setting for the Project Tool Window is not selected. |
Copy | Node | Use this command to copy the selected node or nodes to the clipboard. |
Paste | Node | Use this command to paste a node or nodes from the clipboard into the model. |
Cut | Node | Use this command to cut the selected node or nodes to the clipboard. |
Copy Reference | Node | Use this command to copy a newly created reference to the selected node or nodes to the clipboard. |
Copy Node FQName | Node | Use this command to copy the fully qualified name of the selected node to the clipboard. |
Copy Node Reference as URL | Node | Use this command to copy a reference to the selected node as URL to the clipboard. The URL will resolve in a browser to a HTTP request that points to the localhost server running inside MPS. The internal server will return an html-formatted presentation of the original node. |
Delete | Node | Deletes the node from the model. |
Safe Delete | Node | Deletes the node from the model. If there are some usages of that node present in some models, the user is prompted to review those before deleting the node. |
Clone Root | Node | Creates a clone of the root node in the same model. |
Show Node in Explorer | Node | Opens the Node Explorer tool window, which shows the tree representing the node. |
Language Debug | Node | Groups other functionality, typically used when exploring or debugging language definitions. |
Find Usages | Node | Allows you to search for usages of node. |
Find Usages Settings | Node | Pops up a dialog that allows you to configure the search for usages. |
Refactoring | Node | Groups actions that can rename or move the node. |
Show Help for Node | Node | Shows a help entry for the node, if available. |
Show Help for Root Node | Node | Shows a help entry for the root node, if available. |
Root node status highlights
If VCS integration is enabled for the current project, MPS uses colors to denote VCS file status in the Project tool window.
You can configure VCS file status colors on the Version Control | File Status Colors page of the IDE settingsĀ Ctrl+Alt+S.
The table below lists default file status colors and their meanings in some of the color schemes.
Color | File Status | Description |
---|---|---|
#0A7700 | Added | The file in the active changelist is scheduled for addition to the repository. |
#0EAA00 | Added in not active changelist | The file in an inactive changelist is scheduled for addition to the repository. This file status is available if the Highlight files from non-active changelists option is enabled in . |
#FF0000 | Changelist conflict | The file in an inactive changelist has been modified in the active changelist. In this case, a new dialog will open, prompting you to resolve the changelist conflict. This file status is available if all options are enabled in . |
#0A7700 | Copied | If a file is a copy of another file, its metadata is tracked, and such a file is marked as copied. |
#616161 | Deleted | The file is scheduled for deletion from the repository. |
#773895 | Deleted from file system | The file has been deleted locally but hasn't been scheduled for deletion, and it still exists in the repository. |
#8AA4C8 | Have changed descendants | If a file is modified, the IDE will recursively highlight all directories containing that file. This status is available if the Highlight directories that contain modified files in the Project tree option is enabled in . |
#3264B4 | Have immediate changed children | If a file is modified, the IDE will highlight its parent directory. This status is available if the Highlight directories that contain modified files in the Project tree option is enabled in . |
#727238 | Ignored | A file is intentionally untracked by VCS. |
#7503DC | Merged | The file is merged by your VCS as a result of an update. |
#FF0000 | Merged with conflicts | During the last update, the file has been merged with conflicts. |
#FF0000 | Merged with property conflicts | During the last update, the IDE has detected differences between the properties of the local file and its server version. |
#FF0000 | Merged with text and property conflicts | Text and property conflicts happen when two or more developers modify the same lines of a file and the same file properties. |
#0032A0 | Modified | The file has changed since the last synchronization. |
#0047E4 | Modified in not active changelist | The file in an inactive changelist has been modified. This file status is available if the Highlight files from non-active changelists option is enabled in . |
#7C7C00 | Obsolete | The file should no longer be in your working copy of the repository. |
#007C7C | Renamed | Since the last update, the file has been renamed. |
#08978F | Switched | [SVN] The file is taken from a different branch than the whole project. |
#993300 | (Unknown) Unversioned | The file exists locally but is not in the repository and is not scheduled for addition. |
None (default color) | Up to date | The file hasn't been changed. |
Color | File Status | Description |
---|---|---|
#629755 | Added | The file in the active changelist is scheduled for addition to the repository. |
#629755 | Added in not active changelist | The file in an inactive changelist is scheduled for addition to the repository. This file status is available if the Highlight files from non-active changelists option is enabled in . |
#D5756C | Changelist conflict | The file in an inactive changelist has been modified in the active changelist. In this case, a new dialog will open, prompting you to resolve the changelist conflict. This file status is available if all options are enabled in . |
#0A7700 | Copied | If a file is a copy of another file, its metadata is tracked, and such a file is marked as copied. |
#6C6C6C | Deleted | The file is scheduled for deletion from the repository. |
#6C6C6C | Deleted from file system | The file has been deleted locally but hasn't been scheduled for deletion, and it still exists in the repository. |
#6897BB | Have changed descendants | If a file is modified, the IDE will recursively highlight all directories containing that file. This status is available if the Highlight directories that contain modified files in the Project tree option is enabled in . |
#6897BB | Have immediate changed children | If a file is modified, the IDE will highlight its parent directory. This status is available if the Highlight directories that contain modified files in the Project tree option is enabled in . |
#848504 | Ignored | A file is intentionally untracked by VCS. |
#9876AA | Merged | The file is merged by your VCS as a result of an update. |
#D5756C | Merged with conflicts | During the last update, the file has been merged with conflicts. |
#D5756C | Merged with property conflicts | During the last update, the IDE has detected differences between the properties of the local file and its server version. |
#D5756C | Merged with text and property conflicts | Text and property conflicts happen when two or more developers modify the same lines of a file and the same file properties. |
#6897BB | Modified | The file has changed since the last synchronization. |
#6897BB | Modified in not active changelist | The file in an inactive changelist has been modified. This file status is available if the Highlight files from non-active changelists option is enabled in . |
None (default color) | Obsolete | The file should no longer be in your working copy of the repository. |
#3A8484 | Renamed | Since the last update, the file has been renamed. |
None (default color) | Switched | [SVN] The file is taken from a different branch than the whole project. |
#D1675A | (Unknown) Unversioned | The file exists locally but is not in the repository and is not scheduled for addition. |
None (default color) | Up to date | The file hasn't been changed. |
Color | File Status | Description |
---|---|---|
#62CC47 | Added | The file in the active changelist is scheduled for addition to the repository. |
#62CC47 | Added in not active changelist | The file in an inactive changelist is scheduled for addition to the repository. This file status is available if the Highlight files from non-active changelists option is enabled in . |
#FF6666 | Changelist conflict | The file in an inactive changelist has been modified in the active changelist. In this case, a new dialog will open, prompting you to resolve the changelist conflict. This file status is available if all options are enabled in . |
#62CC47 | Copied | If a file is a copy of another file, its metadata is tracked, and such a file is marked as copied. |
#ED864A | Deleted | The file is scheduled for deletion from the repository. |
#ED864A | Deleted from file system | The file has been deleted locally but hasn't been scheduled for deletion, and it still exists in the repository. |
#4FF0FF | Have changed descendants | If a file is modified, the IDE will recursively highlight all directories containing that file. This status is available if the Highlight directories that contain modified files in the Project tree option is enabled in . |
#4FF0FF | Have immediate changed children | If a file is modified, the IDE will highlight its parent directory. This status is available if the Highlight directories that contain modified files in the Project tree option is enabled in . |
#A9B837 | Ignored | A file is intentionally untracked by VCS. |
#ED94FF | Merged | The file is merged by your VCS as a result of an update. |
#FF6666 | Merged with conflicts | During the last update, the file has been merged with conflicts. |
#FF6666 | Merged with property conflicts | During the last update, the IDE has detected differences between the properties of the local file and its server version. |
#FF6666 | Merged with text and property conflicts | Text and property conflicts happen when two or more developers modify the same lines of a file and the same file properties. |
#4FF0FF | Modified | The file has changed since the last synchronization. |
#4FF0FF | Modified in not active changelist | The file in an inactive changelist has been modified. This file status is available if the Highlight files from non-active changelists option is enabled in . |
None (default color) | Obsolete | The file should no longer be in your working copy of the repository. |
#4FF0FF | Renamed | Since the last update, the file has been renamed. |
None (default color) | Switched | [SVN] The file is taken from a different branch than the whole project. |
D1675A | (Unknown) Unversioned | The file exists locally but is not in the repository and is not scheduled for addition. |
None (default color) | Up to date | The file hasn't been changed. |
File colors
Files that belong to different scopes (production files or test files, for example) can be highlighted in different colors in the Project tool window , search results, and editor tabs.
To each scope, you can assign its own color.