This document contains descriptions of some of the more interesting or significant changes made to the Eclipse Platform for the 3.1 release of Eclipse since 3.0. It is broken into several sections:
| Significant performance enhancements | Performance has been significantly enhanced across the board versus the R3.0 release. We have also added debugging support that can continually monitor performance while the workbench is running, and have made pervasive benchmarking tests part of the standard test suites. The results of these tests are linked off of the download page for each build. Here is an example of (part of) the output: 
 | 
| Support for bi-directional text | Support for bi-directional languages (BIDI), has been extended across the platform. Window layout orientation can be configured from the command line, and a suitable default orientation is inferred from the locale. Note that SWT fully supports BIDI on Windows only. 
 | 
| New undo/redo API | Applications can now access a platform undoable operation history using API in org.eclipse.core.commands.operations. IUndoableOperation defines the interface for operations that can be undone and redone. Views and editors can provide access to the undo and redo support by using the UndoActionHandler and RedoActionHandler provided in org.eclipse.ui.operations. 
 | 
| Filtering preferences and properties | The Preferences and Properties dialogs now have a field for filtering the pages displayed to just those that have names or keywords that match the specified prefix. The example below shows matches for the keyword "tab". 
 | 
| Navigating preferences and properties | General support for linking preference and 
        property pages allows pages with related settings to refer to each other 
        and provide quick access to the other page. Combined with web-style forward 
        and backward navigation in the top right-hand corner, it is now much easier 
        to work with a set of related preference pages. 
 | 
| Importing multiple projects | The Import > Existing Project into Workspace 
        command now allows you to search for all projects under a specified location 
        and import any projects found in one go. You can now also import existing 
        projects from TAR and ZIP archive files. 
 | 
| Import and export to tar.gz format | The Import and Export > Zip File 
        wizards now support the tar.gz compressed archive file format popular 
        on UNIX systems. The wizards have been renamed Import and Export 
        > Archive File accordingly. 
 | 
| Editor lookup based on content type | When determining the appropriate editor to open for a given file, the file's content type is now taken into account. Editors may now advertise that they are capable of working on certain content types as well as their traditional file name and extensions. | 
| File names containing colon and backslash characters | It was previously not possible to create resources 
        in Eclipse with names containing colon (':') and backslash ('\') characters. 
        Such characters are now permitted when running Eclipse on operating systems 
        such as Linux that allow such characters in file names. Care must be taken 
        when file names must be meaningful across multiple operating environments; 
        Windows, in particular, does not allow either of these characters in file 
        names. 
 | 
| Support for executable and archive attributes | You can now view and change OS-specific file 
        attributes such as the executable bit (Unix-based) and the archive bit 
        (Windows). CVS will now preserve these attributes when you check files 
        out of, or commit files to, a repository, and import wizards will preserve 
        the attributes of files and directories that are imported from a local 
        file system. 
 | 
| Line delimiter support | You can now set the line delimiter that is used when creating new text files. You can provide a single setting for the entire workspace, or for a given project. In addition, line delimiter conversions can now be applied to projects, folders, and files, not just to the contents of a single editor. 
 | 
| Single JAR plug-ins | Eclipse now provides the ability to ship a plug-in packaged as a single JAR file rather than as a directory of files. Think of this as folding the plug-in metadata (plugin.xml etc.) into its code JAR. This move has a number of benefits ranging from smaller footprint to easier/faster install to fitting better with the standard Java notion of JARs. In Eclipse 3.1 most plug-ins are shipped as JARs in all distributions. This format is the new best practice for Eclipse packaging. 
 | 
| Improved editor context menus | Many commands that were only 
        available in other views are now right at your finger tips in the editor 
        context menu. For example, you can commit files to CVS or run and debug 
        Java programs and Ant builds from the editor's context menu. 
 | 
| View all keyboard shortcuts | While working with your favorite editors and 
        views in Eclipse, just press Ctrl+Shift+L to see a full list of the currently 
        available key bindings. This is a great way to learn what is available 
        in the UI and to speed up your productivity by learning more key bindings. 
        This information is also available in the improved General > Keys 
        preference page. 
 | 
| Detached view behavior | Eclipse 3.1 (on platforms that support it) now has improved detached view support. It is now much easier to place them wherever desired, including over another Eclipse window. First check "Detached" from the menu or drag the view tab out to create. 
 Then place where you choose, drag and drop other views into the same window. Use the menu or drag the view tab to put it back in the Workbench window. 
 | 
| Perspective button dragging | Eclipse 3.1 now supports re-ordering of perspective 
        buttons in the Perspective switcher, as well as the ability to open a 
        new window on a perspective by dragging that perspective outside the perspective 
        switcher. 
 | 
| Animations | The workbench supports more animations to help users understand where UI elements are going. Creating a fast view for example is now animated. This can be enabled/disabled via a preference in General > Appearance > Enable animations. | 
|  Improved error dialog 
          for background operations  | The error dialog for displaying background operations is now more consistent with the error dialogs displayed elsewhere in the workbench. Extra buttons are shown when additional information is available, such as this dialog resulting from a failed CVS operation: 
 | 
| Import and export of preferences | The Import/Export wizards now support preferences. You can choose to import or export all changed settings, or only specific preferences where supported. 
 | 
| Content type preference page | A new preference page to edit content types 
        and their associated file names and character sets has been added under 
        the General/Editors preference page. 
 | 
| New capabilities preference page | A new capabilities preference page has been 
        introduced to simplify management of capabilities in large Eclipse-based 
        products. 
 | 
| Word completion | In any text editor you can complete a prefix to a word occurring in all currently open editors or buffers. The default key binding for word completion is Alt+/ (Ctrl+. on the Mac). | 
| Open untitled files | A text editor can be opened without creating a file first. Simply go to File > New > Untitled Text File. | 
| Shared editor preferences | The General > Editors > Text Editors 
        preference page contains settings for all text editors. Preferences previously 
        duplicated on the Text and Java editor pages have been merged, and other 
        text-based editors can also be expected to honor those settings where 
        applicable in the future. 
 | 
| Preference for undo history size | The undo history size can be set for text 
        editors on the General > Editors > Text Editors preference 
        page: 
 | 
|  | |
| Hyperlink support | Hyperlink support, which was restricted to
      the Java editor, has been generalized and moved down to Platform Text.
      General hyperlinking preferences are available on the General >
      Editors > All Text Editors preference page, and simple URL
      hyperlinking now works in the standard Text editor: 
 The Web Browser support is used to show the link, see General > Web Browser preference page for details. All SourceViewers that are configured with a SourceViewerConfiguration automatically get URL hyperlinking. | 
| Undoing first change clears dirty indicator | The dirty indicator (*) in the editor tab goes away if the initial change is undone. | 
| Multi-line text search and replace | Regular expression patterns used in text searches will 
        match text straddling lines. 
 | 
| Welcome launch bar | When the 'Go to the Workbench' link is selected 
        in Eclipse SDK welcome, the entire Welcome page is collapsed into a new 
        Welcome launch bar which appears in the lower left Workbench window trim area 
        by default. The Welcome launch bar allows new users to quickly restore 
        the last Welcome page, or jump to one of the main pages using the shortcuts. While the platform controls the basic behavior and the 'Restore' button, background and foreground color as well as the shortcuts are contributed via the welcome extension. See the plug-in manifest for the org.eclipse.platform for an example of a Welcome launch bar definition. 
 | 
| New Help view | Help has been brought closer to where you work 
        with the introduction of the Help view. It contains various pages that 
        provide assistance when you need it. If you press F1, the view will open 
        with the topics related to what you are working on at the moment. You 
        can also switch to All Topics and see what else is there in the local 
        help. The new documentation search spanning local help, remote InfoCenters, 
        Eclipse.org, and the web is now directly accessible from the Help menu 
        (via Help > Search Help). 
 | 
| Dynamic Help now available for all dialogs | The new dynamic help that was added to the 
        workbench window in M5 is now available in dialogs as well. When triggered 
        by the system-specific help shortcut (F1 on Windows, Shift-F1 on Linux 
        GTK etc.), a shell opens aligned with the dialog showing the related help 
        information. Multi-page dialogs like wizards, preferences, launch configurations, 
        searches, etc. trigger the help pane to update its content as you flip 
        from page to page. 
 | 
| Downloading of updates in background | The Update Manager's install wizard (Help > Software Updates > Find and Install) now allows downloading of plug-ins in the background. This way you can continue working while plug-ins are being downloaded. Once everything is downloaded, the install phase (unzipping the jar files and moving them to the installation directory) is still controlled by a modal dialog. | 
| Import/export update sites bookmarks | You can now export your update site bookmarks 
        to a file. This makes it easy to migrate your bookmarks from build to 
        build, share them across multiple Eclipse installs, or give them to other 
        developers. 
 | 
| Update site mirrors | Update sites can now specify a list of servers 
        that mirror their content. As features are looked up on a mirrored update 
        site, you're prompted to pick any of the available mirrors. 
 (See bug 69008 for details on how to specify mirrors in the site.xml.) | 
| Improved handling of feature dependencies | When installing a feature that depends on other 
        features, the install wizard lets you automatically include all available 
        dependencies. Press the Select Required button to include all pre-requisites 
        of the selected features, and then Install All to complete the 
        install.   | 
| RCP delta pack | A new RCP delta pack is now available (it's listed under the RCP SDK section of the download page). It contains all the OS-specific fragments of the RCP plug-ins, and is aimed at RCP developers that need to create a family of downloads of their application for different OSes. It beats having to download all the OS-specific RCP binary drops. | 
| SWT Browser widget improvements | Many improvements have been made to the SWT Browser widget. Highlights include: 
 
 The new Browser Demo example (shown above) illustrates how to integrate HTML content with the SWT Browser widget into an application. The easy way to get the SWT samples is via the new welcome page. | 
| New spinner widget | SWT now provides a spinner widget 
        on all window systems. See org.eclipse.swt.widgets.Spinner.
 | 
| GC.setLineCap, GC.setLineJoin | GC.setLineCaplets 
        you control how the end of a line should be drawn (flat, round, or square 
        styles as shown in the top line of the figure below).GC.setLineJoinallows you to control how one line attaches to another one in methods 
        likeGC.drawPolylinesorGC.drawPolygon. Join 
        styles are bevel, round, and miter (bottom row)
 See the SWT snippet for drawing lines with different cap and join styles. | 
| Mouse wheel events | SWT now provides events when the 
        user spins the mouse wheel. Note that the default behavior of scrolling 
        the scroll bar continues to work as before. See SWT.MouseWheel. | 
| Improved layout support | There are new methods on CompositeandLayoutto allow applications to improve layout performance 
        and to force the laying out of all children even when there is an intermediate 
        parent that does not resize.
 | 
| Remove widgets from Layout | 
 For more details, see the example snippet. | 
| SWT for Solaris-GTK+ | Solaris-GTK has joined the lineup of supported configurations for which SWT and Eclipse are routinely built. | 
| Selection clipboard | Unix users on both GTK and Motif can now select text and paste it with the middle mouse button. | 
| Native tree with columns | The SWT  
 For more details see the example snippet. | 
| Reorderable table columns | The display order of columns in a table can be changed by dragging the column header (as well as being set programmatically). 
 For more details see the example snippet. | 
| Standalone SWT download is now an Eclipse project | For developers of standalone SWT applications, the SWT component is available as a separate download. For Eclipse 3.1, the SWT download can now be easily imported into your workspace as a project. 
 The org.eclipse.swt project you have imported defines the location of the native libraries so you can run your application with the standard Java or JUnit launchers. | 
| Starting SWT standalone applications using PDE | In 3.1, the core Eclipse plug-ins, including SWT, are packaged as single JAR files rather than as a directory of files. The SWT plug-in JAR now contains everything including the native libraries. In order to run a standalone SWT application, the native libraries must be placed on the java library path. If you use the SWT Binary and Source download this is resolved for you but sometimes it is useful to build against the SWT plug-in from the Eclipe SDK. In Eclipse 3.0, standalone SWT developers added the native libraries using -Djava.library.path. In Eclipse 3.1, since the native libraries are inside a JAR, developers cannot easily locate the libraries. To run and debug your SWT application using the SWT plug-in from Eclipse, you can use the SWT application launcher to locate the native libraries. A shortcut to the launcher is available in the context menu of your Java class via Run As > SWT Application. 
 Please note that the SWT application launcher may be unnecessary in future releases. | 
| Advanced graphics | New API has been added for advanced graphics operations such as path for curves and lines, alpha blending and transformations. This new API requires the Cairo Vector engine on GTK and Motif, and GDI+ on Windows. 
 For more details see the example snippet. | 
| Windows XP look and feel for Buttons | Under Windows XP, buttons with images now show the expected look and feel for the current skin. 
 For more details on Windows XP skins, see the SWT FAQ. | 
| New Link widget | The new  
 For more details, see the example snippet. | 
| Strike through and underline in StyledText | Text can be underlined or 
          a strike can be drawn through it with the new  
 For more details see the example snippet. | 
| CVS outgoing 
          change sets | Outgoing change sets allow you to organize 
        outgoing changes into logical groups before they are committed. To enable 
        outgoing change sets, put the Synchronize view into Outgoing mode, click 
        on the change set button  in the 
        Synchronize View, then select an outgoing change and choose Add To 
        > New Change Set... from the context menu. You can also appoint 
        a change set as the default and have all subsequent outgoing changes added 
        to that set automatically. Commands on the context menu allow outgoing 
        changes to be moved between change sets. When the change set is committed 
        to the CVS repository, the comment associated with the change set is used 
        as the CVS commit comment. 
 | 
| Colorful 
          CVS label decorations | CVS label decorations can be configured to 
        use color and font to highlight file states. You can enable color and 
        font decorations for CVS on the Team > CVS > Label decorations 
        preference page and configure them for outgoing changes and for ignored 
        files via the General > Colors and Fonts > CVS preference 
        page. 
 | 
|  Support for 
          CVSNT  | Thanks to the efforts of the CVSNT developers, the Eclipse CVS client can now supports CVSNT. CVSNT version greater than 2.0.58b have been tested with Eclipse 3.1. | 
| CVS commit review | The commit dialog now includes a list of the 
        files that are being committed. This makes it easy to browse the files 
        while writing the commit comment, and to hold back certain files by removing 
        them from the list. It's especially useful when committing directly from 
        the Package Explorer or Navigator view. 
 There are also CVS preferences (Team > CVS) for determining whether commit comments are mandatory and for specifying the maximum number of files that should be displayed when committing. | 
| CVS improved file type support | CVS now prompts whenever a file with an unknown 
        file type is about to be committed. This allows you to explicitly configure 
        a file type instead of CVS picking binary as the default. Also, file type 
        decisions can now be based on the file name alone (e.g. Makefile), not 
        just the file extension. 
 | 
| CVS branch and merge | The CVS branch wizard now lets you use content 
        assist to pick a branch from a project already branched in your workspace. 
 When merging you can simply specify the end tag and the wizard will automatically find the appropriate start tag. If a start tag is not available, you can still merge without seeing a preview in the Synchronize view. | 
| CVS filtering tags | The tag selection dialog used by the CVS replace 
        and compare commands to select a branch or version now shows matching 
        tags live as you type. 
 | 
| Ant debugger | The new Ant debugger helps you debug the execution 
        of your Ant buildfiles. It includes the standard debugger features like 
        breakpoints, stepping, dependency call stack, and run-to-line support. 
 
 | 
| Folding in 
          the | The Ant editor now supports folding of build 
        file regions. Hovering over a folded Ant element lets you peek at the 
        hidden code. You can quickly control folding presentation of a buildfile 
        from the editor ruler menu. 
 | 
| Rename in File for the Ant editor | You can now rename occurrences of properties and targets within the same buildfile within the Ant editor. To activate use the editor context menu or the Alt-Shift-R keyboard shortcut when the cursor is located within the occurrence to rename. 
 | 
| Mark Occurrences in the Ant editor | You can now enable the Ant editor to mark occurrences of properties and targets. Mark occurrences is controlled via the Ant editor preferences and editor toolbar action. 
 
 | 
| Hyperlink navigation in Ant editor | The Ant Editor supports hyperlink navigation using the Ctrl key modifier. The key modifier can be changed from the Ant > Editor > Navigation preference page. 
 | 
| Ant editor selected elements only | The Ant editor can now be scoped to show only the selected source element in a buildfile. As with other editors, it is hooked up to the Show source of selected elements only toggle button in the Eclipse tool bar. | 
| Improved Ant navigation | In the Ant editor, Navigate > Open declaration (F3) will now navigate you to the referenced target or property. | 
| Errors now show in external Ant buildfiles | Error and warning annotations now show even for Ant buildfiles that are opened using File > Open External File... | 
| Ant manual at your fingertips | In the Ant editor, place your cursor on the name of an Ant task, type, etc. and press Shift+F2 to open a browser on the relevant page in the Ant manual. 
 | 
| Ant target per build kind | The Targets tab for an Ant builder allows you to specify the target(s) that should be executed for each build kind. This includes the target to execute when you invoke a "Clean". 
 | 
| More control over error reporting in the Ant editor | You can now set the Ant editor to ignore all buildfile problems. As well you can specify specific buildfile names that the editor should not report problems for. Both settings are controlled using the Ant editor preferences for Problems. 
 | 
| Console EOF | In the Console view you can signal end-of-file to a program waiting for input by pressing Ctrl+Z on Windows (Ctrl+D on Linux). | 
| Console encoding | The console can be configured to display output using a character encoding different from the default encoding. To set the console encoding for an application, use the Console Encoding settings on the Common tab of a launch configuration. | 
| Capturing program output | A program's output can now be captured in a file in addition to being written to the console. The behavior is controlled by settings found on the Common tab of launch configurations. | 
| Multiple console views | If you find you need to see multiple consoles at once, you can now open additional Console views via the New Console View command found on the Open Console drop-down menu in the Console view. | 
| Breakpoint organization | The Breakpoints view allows breakpoints to be grouped by type, project, file, or working sets, and supports nested groupings. You can use breakpoint working sets to group breakpoints into problem-specific sets that can be quickly enabled and disabled as a whole. Newly-created breakpoints are automatically placed into the default breakpoint working set (displayed in bold). You can copy and paste and drag and drop breakpoints between breakpoint working sets, and a breakpoint can be placed in more than one breakpoint working set. 
 |