The Oxygene "Project Switcher"
While we’re putting the finishing touches on the May release for Oxygene, due some time next week, i wanted to share a first peek at what’s in the works for the release after that:
The Project Switcher
If you have ever worked on a solution where one source file was shared between multiple projects, you probably have seen Visual Studio pop up this little dialog:
Annoying, right?
Well, say good-bye to this dialog once and for all, because we thought so too, and for the June release, it’s going to go away: we are introducing the Project Switcher (a.k.a. the Project Indicator).
In the following screenshot, you see a side project i’m working on right now. There are different projects in the solution that contain (more or less) the exact same code files. One is for Echoes (a.k.a. Oxygene for .NET) and one is for Cooper (a.k.a. Oxygene for Java). There are conditional defines all over the source files.
For one it shows you the name of the project the current file is in (“RemObjects.Sugar.Cooper”, in this case). For another, it indicates the platform for the project, using the background color (yellow if for Cooper/Java; Blue is for Echoes/.NET).
So far so good,but note there’s also a little disclosure triangle next to the name. Click that, and you get a list of all the projects this file is part of. Select a different one, and not only does the Project Switcher change its display, all conditional defines and other IDE smarts for this file change to match the new project:
By default, this new UI only shows for files shared between two or more projects, but if you like, you can also enable to show the Project Indicator (minus the switcher triangle) for any file in a multi-project solution, or even when only a single project is open.
That’s Not All Folks
But that’s not all. Remember the annoying dialog we talked about at the beginning of the post, and how i said it was gone? It is. If you double-click a file in Solution Explorer, instead of popping up the dialog, we just open the file and switch it over to the right project.
The same goes for clicking on messages in the error list. Not only will you see the file in the context of the right project immediately — the IDE will also narrow down any inline errors it displays, so you can focus on the errors from the right project. So whenif your code fails to compile and you get errors from both projects, it’s now even easier to keep them apart.
What’s Sugar?
“Never mind all that”, you ask, “what’s Sugar”? Ah well. Sugar is a small library that we have been working on as a side project, and it aims at making it really easy to share low-level business logic code between Oxygene projects on different platforms. I don’t really want to go into more detail just yet, but suffice to say it will have a rather unique and cool approach at the problem. It will be open source, and part of a future Oxygene release.
Summary
So there you have it: the Project Switcher/Project Indicator — one of many features where Oxygene takes the general Visual Studio code editing experience to the next level. You should find a preview of this in the next beta drop and, as indicated above, this feature is planned to ship in the June 2012 update.
Let me know what you think!
marc