## What's New in 3.0

Here are some of the more interesting or significant changes made to the Eclipse Platform for the 3.0 release of Eclipse since 2.1:

New Look and Feel | The look and feel of the workbench has evolved. Here are some of the things you will notice: Title bars and tabs for views and editors look different. Title bars and tabs for views and editors include an affordance for maximize and restore. Views include a button for collapsing (minimize). Perspective switching/opening toolbar support has changed. it can be docked on the top right (default), top left or left. perspective buttons include text for quickly identifying the current perspective. The fast view bar can be on the bottom (default), left or right. Fastview bar size is reduced when there are no fast views. Title bars and tabs have been merged into one to save space. Drag and drop has been improved (better feedback while dragging). Detached views are supported (Windows and Linux GTK only, due to platform limitations). Editor management has changed. View local toolbar will move up next to the view tab to save space when possible. Different tab folder styles and uses of color have been employed to help indicate active and selected views and editors more clearly. Other minor items such as status bar style, border widths, shading etc...
The new Welcome | Eclipse 3.0 now opens with a new Welcome. It contains several pages allowing you to learn about Eclipse, follow tutorials, try out samples or learn what's new in this release. The new feature is fully pluggable and Eclipse-based products can define their own Welcome using the same mechanism.
Responsive UI | A number of changes have occurred in the UI to support a higher level of responsiveness. This includes support for running jobs in the background instead of tying up the UI and having to wait. What has been added: Progress view status line entry showing what's running in the background dialog for showing operations that can be optionally run in the background The new Progress view showing the progress of a CVS checkout and a Workspace build background operation. Many user operations can now optionally be run in the background. When you see the progress dialog with the Run In Background button you can select it and the operation you are running will allow you to continue to work. This dialog also shows you the details of other currently running operations in the workspace and informs you when one operation is blocked waiting for another to complete.
Scalable UI | The Platform has provided additional ways for controlling workbench clutter allowing Eclipse-based products to scale down what the user sees in the UI for various reasons. What has been added: Capabilities, allows filtering of currently unneeded functions ability to dynamically add UI components (based on OSGI runtime) ability to conditionally contribute to menus and toolbars based on the type of object selected (for example the "Run> Ant Build..." option should only appear on XML files which contain an Ant script).
Fast View support enhancements | Fast view support has undergone some significant changes: support for left/bottom/right docking of the fast view bar support for vertical and horizontal orientation of views when made a fast view improved drag and drop feedback for creating fast views and moving the fast view bar
Editor management enhancements | A number of changes and enhancements have gone into the editor management in Eclipse. What has been done: support for single and multiple editor tabs single is especially useful for those who tend to have many files open or who like using the keyboard to navigate editors affordance for editor pinning. When limiting the number of editors that can be opened at once, some editors that should not be closed can be pinned, there is now an affordance to indicate when an editor is pinned chevrons have been added to handle the overflow of editors with an extra indication of how many more editors are open then there are tabs on the screen new menu options, keyboard shortcuts and key bindings available for editor management Close Others - close all editors but the current Close All - menu option available Ctrl+e - dropdown list of editors supports type ahead
Improved Key Binding Support | Key bindings have been improved in the following ways: key bindings are supported in Dialogs help with matching multi-key shortcuts minor tweaks to the key binding mappings
Themes | The Eclipse Workbench now contains basic support for themes. This currently goes as far as allowing customization of colors and fonts used in the workbench at both the user and product level.
Background workspace auto-refresh | Changes made in the local file system can now be automatically refreshed in the workspace. This saves you from having to do a manual File > Refresh every time you modify files with an external editor or tool. This feature is currently disabled by default, but can be turned on from the Workbench preference page.
Simplified manual build commands | The set of available build commands in the Project menu has been simplified. The confusing Rebuild All and Rebuild Project commands have been replaced with a single Clean... command. The Build Project command in the Project menu (and in context menus) has been made smarter. It will now also build out-of-date prerequisite projects of the selected project if necessary. A new Build Working Set sub-menu lets you choose a set of projects to be built; this command brings all projects in that working set up to date, building any prerequisite projects that are not in the working set if (and only if) required. And you can quickly toggle auto-build on and off with Build Automatically.
Cheat sheets | Users can now be guided through long tasks with many steps using cheat sheets. This new feature allows developers to define steps using XML-based content files and optionally offer actions that perform the steps for the user. Several tutorials available off the new Welcome page use the cheat sheet mechanism.
Rich Client Platform | Eclipse now includes the Rich Client Platform (RCP). Eclipse was designed as a universal tool integration platform. However, many facets and components of Eclipse are not particularly specific to IDEs and make equal sense in non-IDE applications. The rich functionality in the Eclipse plug-in architecture, runtime, and workbench can now be leveraged in building arbitrary applications. Here is a snapshot of a simple web browser implemented using the Eclipse RCP: (See RCP home page more details.)
Dynamic, standards based runtime | The Eclipse runtime has been modified to run on top of an implementation of the OSGi framework specification (see osgi.org). This move increases the runtime's flexibility and paves the way for the use of Eclipse in a wider range of scenarios and environments. By choosing a standard base for the runtime, Eclipse developers are able to reuse existing function and infrastructure. Regular Eclipse users benefit from these changes as the runtime is now dynamic. New plug-ins can be installed into a running Eclipse and used without restarting.
SWT and AWT/Swing Interoperability | Embedding Swing/AWT widgets inside SWT widgets is now supported on Windows with JDK 1.4 and above, and on GTK and Motif with recent beta versions of Sun JDK 1.5. This screen shot shows an SWT Shell containing a Swing JTable to the right of an SWT Tree. (SWT snippet used for this example.)
SWT Browser widget | SWT has a new browser widget that can display HTML documents. This native widget is supported on Windows (using Internet Explorer 5.0 and above), Linux GTK and Linux Motif (requires Mozilla 1.4 GTK2; Mozilla 1.5 GTK2 and Mozilla 1.6 GTK2 are also supported), Mac (Safari) and QNX (Voyager). See the SWT browser snippet and the SWT FAQ for details. The Eclipse Browser plug-in shown above is available from the Eclipse download page in the Example Plug-ins.
Mac OS X improvements | The Mac OS X implementation of SWT has been significantly extended and improved, particularly in the following areas: Eclipse Launcher support, including launcher arguments and tilde expansion for the -data parameter Stability and performance Native drag and drop support Printing support using the Quartz-based Mac OS X Printing Manager. Developers can now print high-quality output on raster and PostScript printers, generate PDF files, or use the standard previewer.
SWT support for complex script and right-to-left language support | In order to handle right-to-left and complex scripts it is necessary to deal with several problems. For example, languages like Hebrew and Arabic are written from right to left, which requires the text to be reordered according to the Bidi Algorithm described in Unicode annex #9, before drawing and measuring. Other languages, like Arabic and Farsi, require contextual shaping, which means that the same character can assume different forms according to its position in the word. Other common problems are combined characters or ligatures (two characters that are joined together). Languages like Thai have special rules for word breaking and cursor navigation. Windows supports all cases previously mentioned. On GTK support for Bidi is implemented, but complex scripts (Thai, South Asian scripts) are still not fully supported.
SWT Virtual table and improved table performance | In addition to significant performance improvements in this release, Table now supports the SWT.VIRTUAL style. This lets developers create tables with large amounts of data quickly. When TableItems are needed, they are created on-demand. (SWT snippet used for this example.)
Other SWT improvements | There are numerous other new SWT features and improvements in this release, including: Multiple Monitors Non-Rectangular Windows Add Items to System Tray GTK Accessibility TIFF Image Decoding Color Cursors Colored Cells in Tables Italic Font in StyledText Linux GTK on AMD64 Post Mouse/Keyboard Event to Event Queue
Quick Diff: colored change indication in editor vertical ruler | A new color-coded change indicator in the editor's vertical ruler can be turned on for text editors using either the ruler context menu or `CTRL+SHIFT+Q`. The colors show additions, deletions, and changes to the editor buffer as compared to a reference, for example, the contents of the file on disk or its latest CVS revision. When the mouse cursor is placed over a change in the vertical ruler, a hover displays the original content: The original content can be restored using the ruler's context menu. The context menu also allows to switch between references and enable/disable Quick Diff: Due to the high memory consumption of the diff algorithm, Quick Diff suspends itself when there are overly many changes between the current and the reference file. This avoids putting the system under memory pressure and is indicated by a single change spanning the whole file with an empty original text in the hover on the change ruler column. Quick Diff is reset to normal operation by disabling and re-enabling it (for example by pressing Ctrl+Shift+Q twice).
Quick Diff results in overview ruler | The differences between the displayed document and a reference document (for example, the saved file or latest revision from CVS) can be configured to show up in the right-hand overview ruler. Quick Diff settings when opening new editors can be configured on the Workbench > Editors > Quick Diff preference page.
Regular expressions in Find/Replace dialog | The Find/Replace dialog for text editors now supports searching and replacing using regular expressions. Press F1 to get an overview of the regular expression syntax, and press Ctrl+Space to get Content Assist for inserting regular expression constructs. When the cursor is placed in a dialog field, that is supported by Content Assist, a small light-bulb above the upper-left corner of the field indicates its availability.
Shared annotations preferences | There is a new preference page Workbench > Editors > Annotations for configuring annotations for all text-based editors. Note: Due to this change, existing annotation preference settings for the editors converted to use the shared settings will revert to the default settings when an existing workspace is opened for the first time with Eclipse 3.0.
New annotation preferences | Besides using squiggly underlining, annotations can also be shown in the editor using background highlighting. Check Highlight in text on the preference page to enable background highlighting of annotations. The visibility of annotations in the vertical ruler can be controlled by checking Show in vertical ruler on the annotations preference page.
Non-uniform file encodings | Multiple different encodings are now supported at the same time. Eclipse will automatically determine the correct encoding for many kinds of files. Failing that, you can explicitly set a specific encoding at the project, folder, or file level from the resource's Properties dialog.
New text editor functions | The displayed width of tabs and the text selection foreground and background colors are now customizable in the text editor. See the Workbench > Editors > Text Editor page:
New editor functions | All text editors based on the Eclipse editor framework support new editing functions, including moving lines up or down (Alt+Arrow Up and Alt+Arrow Down), copying lines (Ctrl+Alt+Arrow Up and Ctrl+Alt+Arrow Down), inserting new a line above or below the current line (Ctrl+Shift+Enter and Shift+Enter), and converting to lowercase or uppercase (Ctrl+Shift+Y and Ctrl+Shift+X). Double clicking on the line number in the status line is the same as Navigate > Go to Line... (Ctrl+L).
New synchronize view | The Synchronize View has changed significantly since 2.1. Here is a short list of the new features: Multiple synchronizations can appear in the view. A dropdown action allows navigating between them. The view dynamically updates when changes are made to the workspace. This means that you don't have to synchronize to browse outgoing changes. There are new helpful decorations: problem markers are displayed, conflicts are propagated to parents, and when a background operation is working on an element in the view it appears in italics until the operation is complete. You can configure a synchronize to periodically run in the background. There are new layouts: hierarchical, compressed folders, commit sets.
CVS operations run in the background | CVS operations have been enabled to run in the background. This means that you can spend more time working and less time looking at the synchronize, update, compare, and checkout progress dialogs.
CVS checkout wizard | Both the New > Project and File > Import commands now let you checkout a project from a CVS repository. Besides being convenient, it is especially useful for checking out projects from CVS repositories that don't support browsing.
CVS commit sets | The CVS Synchronize view now lets you review changes grouped logically by commit comment, committer, and date. This presentation is selected by the Layout > Commit Sets found on the drop down menu of the CVS Synchronize View.
CVS date tags | What was released in HEAD at midnight last Thursday? You can now use date tags to compare, checkout, merge, or simply browse a CVS repository. You can add date tags from either the CVS Repositories view or from any tag selection page.
CVS history linking | The CVS History View now has a Link with Editor toggle button. When linked, the revision history of the file currently being edited is automatically fetched (in the background) and displayed. This works not only for regular file editors but also for compare and remote revision editors opened from CVS-specific views.
CVS SSH2 support | The extssh CVS connection method now supports connecting to CVS servers running SSH2. The Team > CVS > SSH2 Connection Method preference page also allows you to create and manage your SSH2 keys.
Blame a co-worker for a change | Have you ever wanted to see who made a particular change in a file? When you run Team > Show Annotation the Annotate View will show you the list of authors for each line in the file and as you browse the file the Annotate View will update to highlight the user that modified the current line. The CVS History view will also automatically update so that you can see the commit comment for the particular lines.
Switching perspective on launch | The debugger can be configured to switch perspectives on launch (see Preferences > Run/Debug > Launching). You can now control which perspective gets opened when a program is launched. These setting are available on the launch dialog when a launch configuration type is selected.
Debugging in current perspective | Debugging can now be performed in any perspective. When a breakpoint is encountered you will be prompted to switch to the Debug perspective. If you choose to remain in the current perspective, the Debug view and action set will be opened allowing you to start debugging. You can configure the debugger to open debug-related views (Variables, Breakpoints, etc.), in non-debug perspectives via the Run/Debug > View Management preference page (also available from the drop-down menu in the Debug view).
Disabling breakpoints | The Breakpoints view now has checkboxes for quickly disabling and re-enabling breakpoints:
Skipping breakpoints | The new Skip All Breakpoints button turns off all breakpoints in the workspace. There are also new preference on the Run/Debug preference page to skip breakpoints during run-to-line and evaluations.
Workspace checked for breakpoints before running | When an application is launched in run mode with breakpoints set in the workspace, the user will be prompted to see whether the launch should be in debug mode. This feature is turned on and off from the Run/Debug preference page.
Filters for arrays | You can now filter out null array elements in the debug Variables view.
Setting variables in variables view | The value of the selected variable in the Variables View can now be changed in the details area of that view by typing the new value and using the context menu's Assign Value command (Ctrl+S).
Highlighting of lines in execution call stack | New annotations have been added by Java debug for highlighting the current instruction pointer and frames in the execution call stack. You can configure these annotations from the Java editor Java > Editor > Annotations preference page.
Launching from context menu | Launch shortcuts are now available in the context menu of all applicable views - Navigator, Outliner, etc. Run and Debug are now separated into different submenus. The JUnit shortcut allows you to select and launch a single test method. An Ant build can be invoked from the Run context menu. You can run the entire build file, or open a dialog to select specific targets. You can also select and run individual targets from the Ant editor outline and Ant view.
More support for string substitution variables | Variables are now supported in various fields of launch configurations such as VM arguments, program arguments, and the working directory.
Environment variables | Some launch configuration types make use of a new Environment tab for specifying the environment variables to use when a configuration is launched.
Working sets for external tool builders | When Ant is being used as a builder, it can now be set to trigger on changes to files in a specified working set.
Disable external tools builders | Project builders can be disabled and re-enabled via checkboxes on the Builders project property page.
Run Ant in a separate JVM | By default Ant launch configurations now execute in a separate JVM (project builders still build in the same JVM by default). This option can be configured on the JRE tab of the Ant launch configuration.
Ant View improvements | You can now add build files to the Ant View via drag and drop. There is also a new toggle () that allows internal targets to be filtered out, and the Ant Targets tab supports target filtering and sorting.
Ant-specific problems in buildfile | The error annotations shown by the Ant editor now include Ant-specific problems as well as generic XML errors.
Ant editor text hovers | The Ant editor now has text hovers for properties, targets, and referenced objects such as paths.
Formatter for Ant buildfiles | You can now reformat an Ant buildfile using the Format command (Ctrl+Shift+F) from the Ant editor context menu.
Ant errors in Problems view | Errors discovered parsing Ant build files now show up in the Problems view. Other potential problems, such as missing libraries or missing taskdef classes, are flagged as warnings.
Ant code assist proposals for custom tasks and types | Custom tasks or types defined within an Ant buildfile (or contributed via extension point) are now presented as code assist proposals. Code assist can also help with their attributes.
More filtering options in Ant editor outline | You can now filter out top-level types and imported elements in the Ant editor Outline view.
Ant editor outline support for working with imported elements | In handling an imported file (using the Ant 1.6.* <import> task), the Ant editor Outline view uses label and icon decorators to indicate imported elements. (As previously noted, these elements can be filtered from the outline.) You can also quickly navigate to the imported element in whatever buildfile it is defined within.
Extension point support for Ant build in separate VM | Support has been added for making use of Ant extension point definitions in separate VM builds. Ant extra classpath entries, tasks, types and properties can be defined to be available in separate VM builds. See bug 47901 for details.
Ant preference pages give previews | The Ant > Editor preference pages now have a preview viewer that lets you see the effects of the various preference settings.
Full template support for Ant | You can add, remove, and edit the set of Ant templates that will be provided as code assist proposals. See the Ant > Editor > Templates preference page.
New search view | The new search view runs searches in the background and shows the results in either tree or table form.
Streamlined global text replace | The Replace dialog also supports Replace All in File and Replace All. When invoked from the context menu of the Search view the Replace action can either act on all current search results or on the selection in the Search view. The Replace dialog additionally supports regular expressions. The Search dialog for text searches now shows a Replace button that invokes the Replace dialog.
Search in enclosing projects | Searches can now be scoped to resources in the projects enclosing the selected elements. The new option shows up on search pages that support this new feature.
Color preferences for compare/merge | New color preferences for Compare/Merge tools are available via the Text Compare category on the Workbench > Colors and Fonts preference page.
Dynamic help documents | Plug-ins can now contribute "content producers" to the help system's org.eclipse.help.contentProducer extension point. A content producer has an opportunity to dynamically generate documents which would otherwise be read as static content.
Help index moved to configuration area | The internal index needed for searching help books is now stored with other configuration information outside the workspace. This means switching workspaces is no longer bogged down by lengthy re-indexing.
Maximizing help views | Maximize and restore buttons have been added to the toolbars of help views.
Improved handling of features and patches | The feature hierarchy has been reworked so that included features are always matched exactly, but they can be patched. The patch support has been reworked to be simpler and allow for patching individual features, regardless of their location in the feature hierarchy. When a feature is updated to a newer version, the install wizard will also show the available patches for the newer version, so they can be installed at the same time as the feature update.
Automatic updates | The Eclipse update manager can be configured to periodically check for updates to installed features. The options are found on the Install/Update > Automatic Updates preference page.
Mirroring of update sites | Eclipse now provides a command line utility for creating a local mirror of features on a remote update site. A local mirror makes it much easier to distribute updates to employees inside an organization's firewall. The command line update utility is described here.
Uninstalling features | Features installed by the update manager can now be uninstalled to free up space on disk. Open the configuration dialog from Help > Software Updates > Manage Configuration, turn off the disabled feature filter, and select Uninstall from the context menu of the feature you want to uninstall.
Improved update support for large plug-ins | It is now possible to ship an update to a large plug-in without the update having to include all of the plug-in's files. Instead, the update site can contain a "delta" plug-in version containing only the files that have changed. When the Update Manager installs this new plug-in version, the files from the delta are installed first and then the remaining files are copied over from the version of the plug-in already installed.