Improve multi-monitor support
Project Lead: Benjamin Muskalla (IRC: benny`work)
Mentor: Kim Horne (IRC: Pookzilla)
This project is part of the Google Summer of Code 2007
With the price of computer monitors dropping, more and more people choose to work in a multi-monitor environment. Working in this way can be very helpful when there are large quantities of information you need to process at one time. One of the best examples: software development. Working on projects in Eclipse on a dual or triple screen display is possible – but not that efficient as with other IDEs out there. Though useful, detached views become difficult to work with when you have many of them. Detaching multiple views (to move to to another screen) is an easy task – but to arrange them, you need to do it manually. It should be possible to have the same functionality that is exposed in the workbench: sashes!
Another common task for an application today is a fullscreen mode. As seen in other development environments, this can help to concentrate on the source code itself instead of being distracted by all the views, icons and other things around the editor area. Also, the size of the editor component can be improved by disabling the toolbar, statusbar and window border in fullscreen mode. This is not only useful with multi monitor setups but also for single monitor environments.
Add the ability to have multiple detached views in a single view stack. This would provide symmetry with the standard workbench window itself. As this is a big change in the codebase, several issues are covered by the following bug reports:
- Bug 151510 [DetachedView] Multi Monitor support: sash-based detached windows
- Bug 56625 [Workbench] Hide Perspective Bar
- Bug 120910 [DetachedViews] Independent top-level windows lack full system menu
Besides these, there is a good chance to implement other features more easily with the replacement of DetachedWindow with a light version of the WorkbenchWindow (think of detached editors, toolbars in detached windows, new min/max story).
Improve detached views by fixing bugs and making the use of them more comfortable (see all bugs starting with “DetachedViews”, especially things like remembering the last position of a view - see bug 105329 and bug 80266).
Add to SWT the ability to have so-called “fullscreen” shells (see bug 37031 -minimally have implementations for Windows and GTK, and possibly Mac OS X). Once implemented in SWT this new feature would be added to the workbench (see bug 171398). This would allow for fullscreen editor/standard view shell arrangements in the IDE and allow RCP developers have the option to deploy “kiosk”-like RCP applications.(see Kiosk software)
- GTK implementation (attached and waiting for feedback)
- Win32 implementation (attached and waiting for feedback)
- Win Vista WPF implementation
- Carbon implementation
- Workbench handler
- Bug 166544 [Wizards] WizardDialog fills the width of the screen on GTK
Implement floating editor windows (bug 8886).
Floating toolbars similar to those seen in OpenOffice (see bug 179043).
As the most features are already known by existing bug reports, the easiest way to distribute my code is to attach patches to the according bug reports. Just to have a quick overview of what I've done so far - see multi-monitor-enhancements.
Don't worry if there are patches which are not already attached to a bug report - there is work in progress.
You need to checkout the following projects from eclipse CVS (see CVS Howto) in order to play with the patches:
- org.eclipse.swt.gtk.linux.x86 / org.eclipse.swt.win32.win32.x86 / org.eclipse.swt.wpf.win32.x86
Then apply the patches, build swt (only needed for wpf and gtk) and run a new eclipse launch configration with these plugins. With Ctrl+F11 you can switch between normal and fullscreen mode. Alternatively, you can use the Window | Fullscreen menu item.
For very early-adopters and to gain some feedback I put a patch regarding sash-based detached views online. You can find it in the
detached_windows directory in CVS.
THe only thing to test the patch is to checkout
org.eclipse.ui.workbench from Eclipse CVS and apply the patch.