This page is likely outdated. Visit the new documentation for updated content.
After MD 2.2 we will be making a push to overhaul the usability of the editor and workspace experiences.
New Layout Switcher
The idea is to make it easier to switch between workspace layouts by using a new Layout Switcher bar.
The layout feature would be extended to support custom GUI for layouts. For example, the welcome page could be one of such layouts (that is, instead of a document shown in the workspace, the welcome page could be an entire new wokspace filling all the main MD window).
Lots of space wasted around the content region by GTK notebook spacing. Could gain a few pixels quite easily.
Documents should be able to be detached and left floating, or docked side-by-side
The document tabs for the document area get hard to navigate through when there are many of them. Maybe we can take a cue from web browsers as well as other IDEs. For example, VS and firefox show a dropdown menu list of documents at the far right of the tabs.
Something that has been proposed is to make each document view act like a web browser tab. This idea is based on Xcode 4. Code navigation within each view tab would change the contents of that view, instead of opening a new view tab. There would be a way to open new new tabs, similar to middle-clicking links in a browser. Tabs could be dragged off into new windows, docked side by side, etc.
This would solve the problem that code navigation, which is a very important part of a modern IDE, usually causes many new tabs to open automatically, which rapidly becomes annoying and difficult to manage. Users are already very familiar with how tabs and navigation in a web browser work.
This also means that files in the solution pad could be opened with a single-click instead of a double-click, without risking massive proliferation of tabs.
A key part of the browser-like navigation is putting a forward and back button and a history dropdown at the top-left of the document view, exactly like a web browser.
There are couple of difficulties with implementing browser-based navigation. It’s important to maintain state for files that have been navigated away from - location, undo/redo state, etc - and especially unsaved information. Xcode implements this by maintaining a list of unsaved files and recently accessed files, which can be accessed from a menu. The recent files list has a fixed length, and when files move off the list, their state is discarded. Unsaved files are kept on a separate list and obviously are never discarded. Presumably Xcode is maintaing a store of editor models and view state. If multiple views show the same file, they use the same editor model, but have different view state.
This would enable implementing the Project Breadcrumb Bar.
Project Breadcrumb Bar
MonoDevelop 2.6 has a breadcrumb bar that shows the class and method position with the current file. It’s also used for XML and HTML files, for which it shows the tag hierarchy.
Xcode 4 has a much more powerful breadcrumb bar which shows the full project-relative path of the file. Each breadcrumb item can be used to drop down a drill-down menu which enables directly navigating to other files without using the solution pad. The menu also provide easy access to related files (header, designer files, etc).
Chrome Notebook Tabs
Make the content area tabs act like the Google Chrome tabs. Chrome’s tabs have many subtle tweaks that make them much more usable than normal notebook tabs.
|Completed||mkrueger||High||1w||2.4|The build output and error pads should not be shown automatically when building, as this is distracting and takes a lot of screen space. If users want to see it, they can show the pad. [fixed]
After building, MDs should add message bubbles with all the errors and warnings.
If there is an error when building, MonoDevelop should jump to the first error bubble. If error bubbles are disabled, MD should show the error pad.
Removing the status bar
The status bar takes up a lot of space and provides little information. We should be able to show this information elsewhere and save space.
OVR/INS markers are not useful - the caret already looks different in these different states, and modern keyboards don’t even have an Insert key any more.
Line/column numbers could be shown at the right of the text editor’s horizontal scrollbar. This same space could be used for the “go to line” entry, so clicking on the line numbers could be used to activate the “go to line” mode.
Message strings could be displayed as a pop-up status tip in the editor like the Chrome web browser does. However, messages aren’t always associated with the text editor, so this may be sub-optimal.
Status Icons do not have an obvious location they could go, but they are tiny.
There are also things that we don’t have in the status bar now would be good to have somewhere visible:
The active configuration. This is the only thing I use the toolbar for right now.
The build error count, for accessing the error pad if using message bubbles
New Project/File dialogs
The categorization system makes it hard to find things, and the layout of the list of file types can get very uneven. We could improve this it several ways.
A Search/Filter widget, to filter the template list based on keywords
Options/Properties for templates, to combine the templates that are simple variations on a theme, e.g. the “ASP.NET page with CodeBehind” and “ASP.NET page without CodeBehind” can get combined into ASP.NET page with a “use Codebehind” toggle property, and ASP.NET content pages can allow picking a master page.
Smaller icons, since the textual descriptions are generally more useful that the icons.
A recently used category to make it easy to find favourite templates.
Use keywords instead of categories so that templates can appear in multiple categories
Required keyword as option. We have something like this currently with the “language” category, which is actually an option of the templates. So for example, the “target framework” could also be both a searchable keyword/grouping and an option to the templates.
The project features panel is often irrelevant. We should offer the opportunity to skip it.
It would also be nice to have UI for importing/exporting user templates, and loading user templates from an online service.
Overhaul of the template system
Create a new template system for creating projects and files which is more flexible and easier to extend. Some ideas:
- We could use T4 for this - but how much MD API should we expose to the templates?
- Make it easier for the end user to create new templates. For example, we could allow creating a template out of an existing project.
- Very interlinked with the new project/file dialogs.
- Load templates from a user templates directory, instead of forcing users to create addins.
- Templates with options/properties - file, class, text w/regex validation, toggles, combobox, etc.
- Allow per-solution overriding of templates, like ASP.NET MVC does?
- Support features needed by the existing separate ASP.NET MVC template system?
Finding files in the solution pad is hard because the GTK treeview’s find-as-you-type doesn’t find the lazily loaded parts of the tree. We need a custom search.
Maybe the “go to file” command could be shown on the solution pad.
It would be good to make the “show all files” more discoverable.
Add References Dialog
Usability is lacking here, especially the Assembly file picker.
The property pad needs to be a lot denser, and maybe have a filter entry, since finding properties almost always involves scrolling.
The property pad should support multi-select, since users expect this.
Perhaps the property pad could also support actions, buttons that would expose commands normally hidden in the context menu.
The option dialogs for projects, solutions and global preferences can be improved. The problem is that those dialogs are created by merging options coming from different add-ins, and the resulting layout is not very convenient. For example, see the Visual Style panel in the preferences dialog.
A solution could be to add more granularity to the extension model. For example, there could be a panel with a tree-like list of options where add-ins could insert their own options, instead of scattering them in some random place in the panel.
Structured Output Pads
Use a structured text view for the build output pad, so that individual tasks can be collapsed or expanded.
Hyperlink Error Pad from Status Bar
When MD is showing the build results in the status bar it would be useful to hyperlink the error pad and/or build output pad from the result message, like Xcode does.