With the consistency of planets and moons, each year heralds a new release of the Eclipse platform. This year nine other Eclipse projects and countless community plug-ins join in the party as part of the Callisto release train. Here are some of the more noteworthy things available in the Eclipse 3.2 release now available for download from the eclipse.org downloads page.
Platform |
|
Project Explorer view |
A new Project Explorer view has been added. This view presents a domain-oriented view of the projects in the workspace. General projects are shown in the same way as the Navigator view, but other projects are presented in a hierarchy that makes sense for their particular domain. For example, Java projects appear as a hierarchy of source folders and packages rather than folders. |
History view |
There is now a generic History view in Eclipse. This view combines history
from repositories such as CVS with content in the Eclipse local history.
|
Improved help in dialogs |
Most dialogs in Eclipse now have a standard help button on the bottom left corner. This button summons context help, same as pressing F1 (on Windows). In addition, the help content will now appear in the same dialog in the dialog's tray instead of in a separate window. Cheat sheets can also follow you into dialogs (in the tray) for those steps that involve opening dialogs. |
Window-level working set selection |
The notion of window-level working set selection has been introduced. By default, there is a "Working Sets" action in the window tool bar that allows you to select an arbitrary selection of working sets. Any view that is set to use the "Window Working Set" (via the traditional selection dialog) will show the contents of all selected working sets. |
Linked resources anywhere |
You can now create linked resources at any depth within your projects. This allows you to put resources from different places in the file system anywhere you like in the project structure, including below other linked resources. |
Mac OS X on X86/Intel |
The Eclipse launcher and native libraries have been compiled as universal binaries so that you can run Eclipse on Mac OS X X86/Intel platforms using the Mac OS X (Mac/Carbon) downloads. |
Problems, Tasks and Bookmarks view supports multiple filters |
It is now possible to define more than one filter on the Problems, Tasks, and Bookmarks views. These filters are additive so the view will show the union of the markers that satisfy these filters. You can add, remove, enable, or disable filters as desired. |
Draggable window trim |
The window 'trim' (that is, Status Line, Heap Status, Fast View Bar...) can now be repositioned around the workbench window. Each trim element has its own grab handle that you can either click and drag to move the trim or right-click to get a context menu.
|
Integrated progress on startup |
Startup progress is now integrated directly into the splash screen. |
Pervasive filtering support |
Support for filtering content based on provided filter text is now supported in several places. This now appears in the Import, Export, and New wizards, and in the Show View dialog. This is the same feature that already exists in the Preferences and Show View dialogs.
|
Import Existing Projects with copy |
The Import Existing Projects into Workspace wizard now provides the option to copy a project's files into the current workspace location when importing from a directory. The original behavior is still maintained simply by ensuring the Copy projects into workspace option is not checked. |
Alternative file systems |
Projects and linked resources can now be created with file systems other than the local file system. |
Problems can be grouped |
Problems in the Problems view can now be grouped by severity, type, or other criteria provided by plug-ins.
|
Multiple problems can be fixed at once |
The Problems view now allows you to add other problems that have the same potential resolution so that you may fix many at once. |
Close unrelated projects |
A new command, Close Unrelated Projects, is available in the
context menu when a project is selected. This command is a great way to
focus your workspace on what you are working on right now, eliminating
the clutter and overhead of any unrelated projects in the workspace.
|
Direct text search action |
Select text in an editor and invoke Search > Text > Workspace (Ctrl+Alt+G) to search in all (non-binary) files. |
Live news in the Eclipse SDK Welcome |
The What's New section of Welcome now has Live News.
The content is provided by the Eclipse.org RSS news feed (requires internet
connection). You can click on the links to see the full story.
|
Animated message area for displaying errors and warnings |
A new animated message area has been added to better draw your attention to potential problems. The animated tray will slide up from the bottom of a page's title area to cover the page description and will be used to convey error and warning messages. This is used in both wizards and the preference dialog. |
System Default theme |
The System Default theme is a theme that uses fonts and colors available from the operating system rather than those defined by Eclipse. This theme is the default theme for High Contrast mode. You will be prompted to restart when switching to High Contrast mode and the theme change will be applied then. |
Tooltips for annotations in text editors |
Annotation hovering that was previously only available in Java editors is now available in all text editors.
|
Annotation navigation in text editors |
Annotation navigation is now available in all text editors.
|
Commit comment templates |
You can specify templates for commit comments via the Team > CVS > Comment Templates preference page. The templates will appear in the commit dialog off the history drop down menu. |
Improved patching support |
Improvements have been made to the CVS Create Patch wizard. Improvements to create patch include:
Changes have been made to the Apply Patch wizard to accommodate multi-project patches. |
Improved conflict handling for CVS Team>Update operation |
When performing an update, CVS has a file based markup for indicating conflicts. This markup can be cumbersome to work with. When performing a Team>Update, Eclipse will now update any non-conflicting files and then show any conflicts in the synchronize view. You can then resolve the conflicts manually from there. |
CVS shows model content in synchronizations |
CVS can now be configured to include model content in synchronizations by enabling the associated option on the Team > CVS > Synchronize/Compare preference page. |
CVS Quick Diff annotations |
CVS now supports Quick Diff annotations for local files. Perform a Team > Show Annotations on a local file and you will see color-based annotations of who did what in the file. The bar on the left hand side shows a different color for each user. Hovering over a section shows the details of that revision and highlights the sections of code contributed by that revision in the right hand bar.
|
Java problem markers from a "javac" build |
Running an Ant build that contains a "javac" declaration can produce JDT problem markers for the code that is compiled. The marker generation is controlled by an Ant UI preference: Window > Preferences > Ant > Create problem markers from "javac" results. As well, the "javac" declaration needs to set the "listfiles" attribute to "true" and an Eclipse console must be allocated for the build output. |
Breakpoint import and export |
Breakpoints can now be exported to a file. The export wizard lets you select the breakpoints to export together; the import wizard lets you optionally create a breakpoint working set. |
Launch dialog improvements |
A toolbar and name filter have been added to the launch dialog. The toolbar provides actions to create, duplicate, delete, and collapse all configurations, as well as manage the filters for the dialog. The name filter dynamically filters entries in the dialog as you type to show only those configurations matching the entered text, similar to the preferences dialog. You can also filter configurations from closed, deleted, or unavailable projects, or filter out specific kinds of configurations. |
Variable columns |
Variables can be displayed using columns or a standard tree. To toggle columns on/off use the view menu's Layout > Show Columns action. You can select the columns to be displayed using the Layout > Select Columns action. Recently changed variables are displayed with a yellow background (controlled by the "Changed value background color" user preference via the Run/Debug preference page). The Java debugger supports editing of Strings and primitive values inline. |
Java development tools |
|
Introduce Indirection refactoring |
Introduce Indirection is a new refactoring that lets you redirect all callers of a method to a new method. The new method calls the original one. You can replace the default implementation of the new method by any other if you like. Such an indirection is useful when new behavior needs to be introduced to a method but:
Use the indirection for bug fixes to the original method or as a quick way to add code before or after all calls to a method. To execute the Introduce Indirection refactoring select a method, invoke Refactor > Introduce Indirection..., provide a name and the declaring class for the new method.
The method is added to the selected declaring class.
And all references are updated to call the new method.
|
Extract Superclass refactoring |
A new refactoring called Extract Superclass extracts a common superclass from a set of sibling types. The selected sibling types become direct subclasses of the extracted superclass after applying the refactoring. Moreover, Extract Superclass allows to use the extracted superclass wherever possible in the code.
The next picture shows the type hierarchy after extracting
To invoke this refactoring, use Refactor > Extract Superclass.... |
Clean Up wizard |
Clean Up can be invoked on any number of Java source files, packages or on a whole Java project. It helps to:
Here are some examples what can be done:
To bring Java 1.4 compatible code to 5.0 use Clean Up to:
Select a project, package, or file and use Source > Clean Up... to start this wizard. |
Refactoring history |
Most of the refactorings offered by JDT are now tracked in a Refactoring History. The refactoring infrastructure
stores detailed information about refactorings which have been performed on your workspace.
|
Create and apply refactoring scripts |
Refactorings performed on your local workspace can now be exported into a Refactoring Script and replayed on an arbitrary workspace. Such refactoring scripts can be used in different scenarios such as automatic fixing of breaking API changes between software layers or providing patches with rich semantics. Create a refactoring script from the refactoring history using Refactor > Create Script...
To apply the generated refactoring script on an arbitrary workspace use Refactor > Apply Script... A new extension point allows plug-in writers to contribute refactoring scripting support for new or already existing refactorings.
See the |
JAR file export with refactorings |
When exporting a JAR file from the workspace, the JAR Export Wizard offers the option
to include refactoring information into the JAR file.
Clients are then able to migrate an old version of the JAR file to a new one using the Refactor > Migrate JAR File... refactoring. Alternatively, you can also use Build Path > Migrate JAR File... if a JAR file is currently selected.
This refactoring automatically updates all code which is dependent on the old version of the JAR file to use the new version of the JAR file. |
API aware refactorings |
There are a number of existing refactorings which have been extended to support API compatibility by keeping the original member as a delegate to the refactored member:
The generation of a delegate member to preserve API compatibility can be enabled by checking Keep original method as delegate to renamed method in the refactoring dialog. |
Rename Type updates similarly named elements |
The Rename Type refactoring can now rename variables and methods with names similar to the renamed type. This feature helps to keep method and variable names synchronized with type names.
To invoke this refactoring, select a type and use Refactor > Rename... |
Rename Package refactoring renames subpackages |
The Rename Package refactoring does now also rename subpackages on request.
In this example, To invoke this refactoring, select a package and use Refactor > Rename... |
Filter the refactoring preview |
The refactoring preview page now supports filtering of changes. This is especially helpful when updating textual matches in comments and strings is requested while renaming Java elements.
The screen shot shows the rename dialog filtered for textual matches
while renaming the class Changes related to the visibility of Java elements can now be filtered as well. |
Customizable content assist |
Repeatedly invoking content assist (Ctrl+Space on most platforms) now cycles through different proposal categories. You can assign separate key shortcuts to your favorite proposal categories and use the Java > Editor > Content Assist > Advanced preference page to configure which categories are shown in the default content assist popup.
The new |
Camel case support in code completion |
Code completion now supports camel case patterns. For example, completing on NPE will propose NullPointerException. This support can be disabled using the Show camel case matches preference on the Java > Editor > Content Assist preference page.
|
Quick menu to surround code |
The new Surround With quick menu allows to surround a selection of lines with code. The menu is extendable with custom templates. The templates are now aware of variables that need to be pulled out or made final.
Use Source > Surround With or press Alt+Shift+Z to directly see the menu. You can add your custom templates on the Java > Editor >
Templates preference page. All the template needs is a |
New quick fixes |
Several new quick fixes have been added, for example:
|
Category support |
Categories can be defined in Javadoc comments for types, methods, and fields using
the
Categories are shown in the Outline and Members views and in the Quick Outline. The view menu allows to select the visible categories.
|
Java SE 6.0 compliance |
The Java SE 6.0 compliance is now fully supported.
In particular,
|
Null reference analysis |
The Java compiler is now capable to perform basic null reference analysis for local variables. This optional diagnosis can be enabled on the Java > Compiler > Errors/Warnings preference page using the Potential programming problems > Null reference preference.
Note that the analysis is fairly conservative, aligned on definite assignment rules. It only considers cases where there is something suspicious (e.g., if later on a null check is performed), rather than complaining on all possible cases. In 5.0 compliance mode, null reference warnings can be silenced using
|
Improved syntax recovery |
The internal Java parser is now much more resilient to syntax errors. In Eclipse 3.1, a syntax error would prevent subsequent errors from being displayed. The parser can now recover from statements with errors and go on to perform further analyzes. In the following example, the invalid reference to method
This for example allows refactorings that only affect a single file to tolerate syntax errors. For instance, it is now possible to rename or extract a local variable at the top of a method that has not yet been written completely.
|
Treat configurable errors as non fatal |
The option Treat configurable errors as fatal errors on the Java > Compiler > Building preference page controls if a configurable error is intended to be fatal or not. This option is enabled by default. If this option is disabled, then the compiled code can be executed despite the fact that errors exist in the code. |
Detection of unnecessary $NON-NLS$ tags |
Unnecessary The reporting can be turned on and off using the same preference as for the detection of non-externalized Strings. It can be set on the Java > Compiler > Errors/Warnings preference page using the Code Style > Non-externalized strings (missing/unused $NON-NLS tags) preference.
To remove the unnecessary tags use Quick Fix (Ctrl+1), or Ctrl+1, Ctrl+Enter to remove all unnecessary tags within a compilation unit. |
Detection of raw type usage |
Usages of raw types are now detected. A raw type is
a reference to some generic type without any type argument (e.g. This optional diagnosis can be enabled independently from unchecked type operations on the Java > Compiler > Errors/Warnings preference page using the Generic types > Usage of a raw type preference.
This warning can be silenced by adding Also a Quick Fix has been implemented to help resolving the raw type usage problem. |
Detection of method parameter assignments |
Assigning to method parameters is considered poor practice. To detect and report such assignments, open the Java > Compiler > Errors/Warnings preference page and enable the Code style > Parameter assignment preference.
|
Detection of switch case fall through |
The Java compiler can now detect if a case may be entered by falling through a previous case. Empty cases are allowed. This optional diagnosis can be enabled on the Java > Compiler > Errors/Warnings preference page using the Potential programming problems > Switch case fall through preference.
A quick fix to add a |
Improved performance for large .jar files |
The size limit of the internal Java model cache is now a function of the max heap size (-Xmx VM argument on most JVMs) given to the Java Virtual Machine running the Eclipse IDE. Raising the heap size has a noticeable performance improvement when there are large .jar files on the build classpath. |
Recreating modified .class files |
The Java builder can now recreate modified or removed .class files in the output folder using the original source. This can be controlled on the Java > Compiler > Building preference page using the Output folder > Rebuild class files modified by others preference. |
Javadoc view and tool tips from attached Javadoc |
The Javadoc view and the Javadoc hovers now extract the information from the attached Javadoc for libraries that do not have source attached. |
JUnit 4 support |
The JUnit support has been updated to run and write JUnit 4 tests. Check out www.junit.org for more about JUnit 4.
|
JUnit view history |
The JUnit view can now handle multiple concurrent test runs. You can switch between active and recent test runs using the new history. Tests can be rerun from the history without stopping already running tests.
This works with JUnit 3 as well as with JUnit 4. |
Execution environments |
An execution environment describes the capabilities of a runtime - for example, J2SE-1.4. You can specify JREs used for running, debugging and building based by referencing an execution environment. The new Java > Installed JREs > Execution Environments preference page displays the JREs installed in your workspace compatible with each execution environment. JREs that meet the exact requirements of an execution environment are displayed in bold, and JREs that surpass the requirements of an environment are displayed in the default font. When more than one JRE is compatible with an execution environment, you can select a default JRE to use for that environment by checking it. A build path or launch configuration referencing an execution environment is more portable than one referencing an explicit JRE as a JRE's execution environment can be resolved independent of its name. Use the JRE tab or Edit Library wizard to specify an execution environment for running and building. |
System property launch variable |
A new launch variable allows to dynamically specify system properties as Java program and VM arguments from the Eclipse runtime. The variable accepts a single argument which is the name of the system property to be resolved at launch time. For example, the java.home system property would be referenced with ${system_property:java.home}.
|
Evaluation support for arrays |
Evaluation and content assist are now supported for
Java arrays. Use
|
Java thread groups |
You can now display thread groups in the Debug View by toggling Show Thread Groups in the view menu.
|
Runtime classpath exported entries |
A runtime classpath can be configured to include only exported entries from the build path. By default, a runtime classpath includes all entries (exported and non-exported). From the Classpath tab select the default entry and use the Edit... button to configure the option. |
Suspend Thread versus Suspend VM |
An option has been added to the Java > Debug preference page to control whether newly-created breakpoints suspend a single thread or the entire VM.
|
Java type indicator |
Enable the Java Type Indicator on the General > Appearance > Label Decoration preference page to find out what the first type in a compilation unit or class file is. An adornment is shown for interfaces, annotations, and enums, while an ordinary class stays undecorated.
|
Find broken externalized strings |
A new action can search for broken externalized strings. The search reports missing, unused and duplicate keys.
To start the search select a properties file, a package, or a whole project and use Source > Find Broken Externalized Strings |
Improved support for Eclipse's string externalization mechanism |
The Eclipse string externalization mechanism has now the same kind of support as traditional string externalization. The associated externalized value is shown in a hover, when you linger over a key for an externalized string in the Java editor.
Ctrl+Click on the key to navigate directly to the entry in the corresponding properties file. In the properties file editor you can use Ctrl+Click to find out where the key is used in the code. |
Create a type from an example snippet |
You can paste a snippet of code containing a Java type directly
into a package or source folder to create a new compilation unit.
For example select and copy this source code
package pack; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }then select a source folder in the Package Explorer use Ctrl+V (Edit > Paste). This automatically creates a new package 'pack' and file 'HelloWorld.java' with the copied content. |
Generate hashCode() and equals() |
A new action can be used to generate the methods
To invoke this action select a type and use Source > Generate hashCode() and equals()... |
Command line code formatter |
It is now possible to format source code without starting the Eclipse UI using the new headless formatter application. The command line formatter works as a standard Eclipse application. The following command will format the source files in the folder src with the options specified in the config.prefs file: See Using the Formatter Application for details. |
Support for Java-like extensions |
Files with a file extension other than .java and containing pure Java code are now supported. A Java-like extension can be added using the General > Content Types preference page (type Text > Java Source File).
|
Platform API |
|
Runtime refactoring |
In order to make the Eclipse runtime more flexible and allow independent use of runtime components, the org.eclipse.core.runtime plug-in has been split into several plug-ins:
New APIs were added to facilitate control of the split runtime pieces. The runtime refactoring should be transparent to other plug-ins. For more details, see the Eclipse 3.2 migration guide. |
Common navigator |
A new plug-in, org.eclipse.ui.navigator, introduces a framework for building viewers that combine content from multiple domain models. The framework allows declarative contribution of content, labels, actions, filters, and other capabilities. The org.eclipse.ui.navigator.resources plug-in provides a concrete use of this framework in the form of a Project Explorer view, and declarative viewer extensions for the IResource model. |
Tabbed properties framework |
A tabbed properties framework has been added. The tabbed
properties framework provides a replacement property sheet page, allowing
properties to be shown in the Properties view using arbitrary controls,
organized by tabs and sections that are contributed via the extension registry.
See the article The Eclipse Tabbed Properties View for details. |
File system API |
A new plug-in, org.eclipse.core.filesystem, introduces a new generic API for interacting with file systems. The platform has been migrated to use this file system API rather than java.io APIs. This means resources can be created in arbitrary backing file systems, and plug-ins can provide support new kinds of file systems. Support has been added to the project and linked resource wizards for creating resources that are linked to other file systems. Plug-ins that define alternate file systems can hook into this wizard support by using the org.eclipse.ui.ide.filesystemSupport extension point. |
Categorization added to Import and Export |
The |
Tooltips for annotations in Text editors |
Annotation hovering has been pushed down from JDT Text to Platform Text. Text, vertical and overview
ruler hover support is installed by TextSourceViewerConfiguration which is used by text editors:
|
Annotation navigation in Text editors |
Annotation navigation has been pushed down from JDT Text to Platform Text
and is now available in all text editors:
|
JFace field assistance |
JFace introduces new support for assisting the user in completing fields inside dialogs and forms. The org.eclipse.jface.fieldassist package provides classes that let you decorate arbitrary controls with images and corresponding hover text. These can be used for purposes such as marking required fields in a dialog, showing field-based error conditions, or showing content-assist prompts. The package also allows you to install content proposals on a control, including a pop-up dialog with content proposals, secondary pop-ups for further information, and options for invoking proposals explicitly or in an automatic (type-ahead) style.
|
JFace TreeViewer enhancements |
AbstractTreeViewer now supports multiple equal elements in the tree, each with a different parent chain. This support requires that clients enable the element map by calling setUseHashLookup(true). TreeViewer now supports SWT.VIRTUAL trees. There is a corresponding lazy content provider ILazyTreeContentProvider that only returns contents as they are needed. |
Support for dynamic Help content |
Help system now supports dynamic composition of help content. Topics authored in XHMTL can contain additional Eclipse-specific markup for on-the-fly filtering of content based on os/ws/arch values, presence of plug-ins, enabled capabilities, etc. Shared content can be included into multiple documents. Finally, plug-ins can contribute XHTML fragments that plug into anchors in other documents. All this now enables information developers to provide dynamic documents that tailor themselves to the context at the time of viewing. |
Help search enhancements |
User assistance indexing and searching has been enhanced in various ways. Additional search participants can be registered via extension point that can add content to the Lucene index. Help now contributes an XHTML search participant that can index dynamic help documents authored in XHMTL (see above). In addition, documents that were previously not in the index will now appear (for example, cheat sheets and Welcome pages). Search hits can now have different icons and the 'open' action can be delegated to the search engine. |
Problems can be grouped |
Problems in the Problems view can now be grouped. There are default groupings by severity and problem type, and additional groups can be defined via the org.eclipse.ui.ide.markerSupport extension point. |
Improved help in dialogs |
Most dialogs in Eclipse now have a standard help button on the bottom left corner. This button summons context help, same as pressing F1 (on Windows). In addition, the help content will now appear in the dialog's tray instead of in a separate window. Custom dialogs can inherit this functionality by subclassing the new TrayDialog class rather than Dialog. Cheat sheets can also follow you into dialogs (in the tray) for those steps that involve opening dialogs. |
Embed command links in User Assistance content |
Links in Help, cheat sheets, and Introduction content
can now execute commands when activated by the user. Command links can be
used to open preference pages, launch wizards, show views, open perspectives
and for many other purposes. The command framework is extensible so many
more uses of command links are possible. The Workbench
User Guide has been enhanced with command links in many places. The
picture below shows two command links in a help topic:
|
Support for launching commands from cheat sheets |
Commands can now be launched from cheat sheets.
The content file below contains commands to open the Search view and Package
Explorer.
<?xml version="1.0" encoding="UTF-8"?> <cheatsheet title="Example of Commands in a Cheat Sheet"> <intro> <description>A cheat sheet shows the package explorer</description> </intro> <item title="Show Search View"> <description>This is a step with a command which shows the search view.</description> <command serialization= "org.eclipse.search.ui.views.SearchView"/> </item> <item title="Step 2"> <description>This is a step with a command and parameters, shows package explorer.</description> <command serialization="org.eclipse.ui.views.showView( org.eclipse.ui.views.showView.viewId= org.eclipse.jdt.ui.PackageExplorer)"/> <onCompletion> Command example completed. </onCompletion> </item> </cheatsheet> |
Composite cheat sheets |
Composite cheat sheets are new for Eclipse 3.2.
A composite cheat sheet provides guidance for a large problem by dividing
it into smaller tasks each of which has its own cheat sheet. Tasks can be
organized into groups. Composite cheat sheets open in the cheat sheet view
and are launched using the cheat sheet selection dialog. Each task has a
description, hyperlinks direct the user through a sequence of tasks.
Composite cheat sheets have a tree which shows the tasks and their status. The right hand/lower panel contains the individual tasks. The content of a composite cheat sheets is defined in an XML file. The content file can specify what dependencies exist between tasks so that a task can only be started after any prerequisite tasks have been completed. |
Help keyword index |
Help now has a keyword index, where you can
register keywords from your documentation and supply a link to an appropriate
help document. The index is available in both the Help view and Help window
(view shown below).
|
XHTML help docs conversion tool |
PDE has a new utility to quickly convert a plug-in's
HTML help documents to XHTML. In addition to converting the HTML to valid
XHTML, the tool will update the filename extension, the table of contents,
and add the necessary bindings to enable dynamic content and searching of
the XHTML content. After this conversion, users can take advantage of the
new 3.2 Help features such as dynamic content filtering, content reuse,
and dynamic content contribution that all require XHTML as the content format.
This function can be invoked via PDE Tools > Convert Help files to XHTML from the context menu of plug-in projects.
|
Universal welcome |
Based on our experience with concrete Welcome
implementations, we now offer a configurable Universal Welcome to be used
by any product. Products can choose between 7 predefined main sections:
Overview, First Steps, Tutorials, Samples, What's New, Web Resources, and
Migrate (Eclipse SDK uses 4 of them). Universal Welcome has configurable
page layouts and importance levels for each contribution, and is fully theme-aware.
It also offers both HTML and SWT presentations for 100% platform coverage.
A Welcome preference page provided by Universal Welcome opens up Welcome customization to the end users, and can be included in any product that wants to offer it. You can read more about this in the Universal Welcome specification.
|
Support for configuration and themes in Welcome |
The Intro framework has more configurability
support. An intro configurer can be contributed that offers one-time computation
of the group children, variable substitution support, and late anchor path
resolution. This support is heavily used by Universal Welcome but can also
be used by other Welcome implementations.
Themes represent named collections of CSS files, properties, and images that collectively define the look of the Welcome content. Universal Welcome takes advantage of this support by providing theme selection capability and two concrete themes in 3.2: 'Circles' and 'Purple Mesh'.
|
Namespace support for the Ant extension points |
The org.eclipse.ant.core antTasks and antTypes extension points now allow for the designation of a URI that the definition should live in. See bug 133190 for full details of all the changes. |
Team support for logical model integration |
API has been added that allows logical models to participate in Team operation. With this
API, Team providers can:
|
Sort indicator in tables and trees |
Table and Tree now support a sort direction indicator in the header of the column. SWT snippets showing sorting by column (simple) and sorting by column (virtual table). |
Reorderable columns in trees |
In Eclipse 3.1, we added the ability to reorder columns in a Table. That support has now been added to Tree. The display order of columns in a tree can be changed by dragging the column header, or it can be set programmatically. Example snippet. |
Improved XP theme support |
On Windows XP, SWT now shows the textured background in tab folders. The groups, labels, check boxes, etc. are all transparent to this background. Also, custom widgets, such as StyledText, now show the correct border for the prevailing Windows XP theme. See the SWT FAQ for instructions on how to run with a Windows XP skin. |
Animated GIFs |
Animated GIF images can be saved to file. For an example see the SWT snippet. |
Desktop appearance notification |
When appearance settings such as theme, font, or default colors are
changed for the desktop, an |
Dispose notification |
Previously, when an |
Tool tips for columns |
Tooltip text can be set on a table
or tree column header using |
Vertical CoolBar |
A vertical coolbar can be created
by using the |
OpenGL support |
You can now use OpenGL in SWT applications. The OpenGL interface works with third-party OpenGL libraries such as LWJGL. For examples, see the SWT snippets |
Virtual tree |
Tree now supports the SWT.VIRTUAL style. This allows you to create trees with large amounts of data quickly. When TreeItems are needed, they are created on-demand. For an example see the SWT snippet. |
Buttons with image and text |
Buttons can now show an image as well as text. This feature is supported on Windows XP, Mac OS X, and GTK. |
HIView on Mac OS X |
SWT now makes use of HIView on Mac OS X. This resolves many clipping and sizing issues. |
Embedding objects in text |
Using TextLayout and StyledText, it is now possible to embed objects such as images or widgets inside text. Glyph metrics such as ascent, descent and width can be specified. Objects wrap with the text. For examples, see the following snippets: |
Indent, align and justify text |
TextLayout and StyledText now support indenting, justifying, and aligning text. For examples, see the following snippets: |
Text baseline rise |
Using TextLayout and TextStyle, it is now possible to specify the baseline rise for a range of text. For an example see the SWT snippet. |
HSB color support |
A color can be created by specifying the hue, saturation, and brightness. In addition, for a given color, the hue, saturation, and brightness values can be queried. For an example, see the SWT snippet |
Background image |
A background image can be set into a control. In addition, the background can be inherited by child widgets such as labels. For an example, see the SWT snippet |
Native image loading |
The constructor |
Dragging text |
If the For an example, see this SWT snippet |
New ExpandBar widget |
The ExpandBar widget allows the user to show and hide collections of widgets by clicking on a header. The ExpandBar contains multiple items which each may have an image and title in the header. For an example, see this SWT snippet. |
Bullets in StyledText |
StyledText can now show lists formatted in a variety of styles, including bullets, numbered, upper case or lower case letters, and custom-defined styles. For an example, see this SWT snippet. |
Custom draw Tree |
The Tree widget now supports custom draw for individual cells. Applications can enhance the native look and feel of the tree by custom rendering of the data. The application has control over row height so multiple lines of text can be drawn. In addition, it can present multiple images in the same cell, change font or color multiple times, and change the way selections are drawn. For examples, see the following snippets: |
Custom draw Table |
The Table widget now supports custom draw for individual cells. While still maintaining the native look and feel of the table, users can customize how cells are drawn to display data in a form other than text with an image, to show multiple lines of text in one cell, to change font and color multiple times within the same cell, to override the native selection drawing, etc. For examples, see the following snippets: |
Drag over effects for Table and Tree |
The Table and Tree widgets now provide visual feedback of what is being dragged. |
New Tooltip class |
The new ToolTip class can be used to display tooltips that are not directly tied to a Control. These tooltips can be placed anywhere, and can have either the platform default appearance or a BALLOON appearance as shown below. |
Plug-in Development Environment |
|
Target definitions |
You can now define a target in a
.target file (File > New > Other... > Plug-in Development > Target
Definition).
The .target file defines all aspects of a target including name, location, content (in terms of plug-ins, features, or both) and JRE. More notably, you can specify and manage multiple plug-in sites in the target without the need for .link files. The Plug-in Development > Target Platform preference page lets you browse, preview and apply existing target definitions.
|
Contributing targets |
Targets can be contributed to an
Eclipse product via the org.eclipse.pde.core.targets extension point.
The Eclipse SDK comes with two RCP-centric org.eclipse.pde.core.targets extensions, allowing you to easily switch the target platform back and forth between the SDK and the RCP subset.
|
Hierarchical view of plug-ins |
The plug-ins on the Plug-in Development > Target Platform preference page can now be grouped by sites. This hierarchical view makes the management of large and distributed targets much easier. |
Plug-ins for any OSGi framework |
The New Plug-in Project creation wizard (File > New > Project...>
Plug-in Project) now provides the option to create plug-ins that can
run with any OSGi framework. A Hello OSGi template is also provided.
|
Equinox OSGi framework launcher |
A new launcher is now available to run and debug
bundles with the Equinox OSGi framework. You will be able to set the start
level of your bundles and customize program and VM arguments to test your
bundles under different conditions.
An Equinox OSGi framework launch configuration can be created in the Launch Configuration dialog (Run > Run... from the top level menu).
|
Plug-in manifest files participate in refactoring |
When you move or rename a Java type or package in your plug-in, PDE now automatically updates all references to these types and packages in the manifest files of the affected plug-ins. |
NLS wizard for plug-in manifest files |
PDE now provides a wizard to extract translatable strings from plug-in
manifest files and store them in a properties files for multi-language
support.
The wizard is available via PDE Tools > Externalize Strings... in the context menu of plug-in projects and their manifest files. |
Organize plug-in manifest files |
The Organize Manifests wizard is
an appointment stop prior to shipping a plug-in. It removes unused
dependencies and property keys, and manages the exported packages ensuring
they are marked with the right visibility.
This function can be invoked via PDE Tools > Organize Manifests... from the context menu of plug-in projects and MANIFEST.MF files.
|
New processing instruction in plugin.xml files |
Plug-in manifest files generated by PDE now contain
a new processing instruction indicating version 3.2, instead of 3.0.
This new processing instruction is required if a plug-in is to take advantage
of the new runtime support where a plug-in can contribute extension points
and extensions to a namespace other than its own.
In the example below, the org.eclipse.pde.core plug-in contributes an extension to the org.eclipse.pde namespace
Note that there is no need to migrate an existing plug-in to use the new processing instruction unless you want to use the new namespace support in that plug-in. |
Bundle execution environment |
A bundle execution environment specifies the
minimum level of JRE required for the plug-in to run. If the JRE used
to run Eclipse does not meet the requirement, the plug-in will not run.
If you declare J2SE-1.4 as your plug-in's bundle execution environment, for example, your plug-in will run with a JRE version >= 1.4. If the plug-in can run in execution environments that are not proper subsets of each other (e.g J2SE-1.4 and CDC-1.1/Foundation-1.1), then all such bundle execution environments should be listed. The Execution Environments section is on the Overview page of the plug-in manifest editor. During a plug-in export, the plug-in code is compiled against the JRE associated with the first execution environment listed in the MANIFEST.MF. Refer to the Java > Installed JREs > Execution Environments preference page for a list of OSGi execution environments and the list of installed JREs that are compatible with each.
|
Automated management of dependencies |
PDE now provides a new flexible workflow that
allows you to code your plug-in first, and then have your code analyzed,
and the list of plug-in dependencies automatically generated for you by
PDE after.
The Automated Management of Dependencies section on the Dependencies page of the plug-in manifest editor lets you specify a list of plug-ins that you wish to augment your development build path (and hence your content assist scope) with. These dependencies do not get added to the MANIFEST.MF immediately, but you can start coding right away as if they were. At any time, you can tell PDE to analyze your code and generate the correct dependencies in your MANIFEST.MF via either the Require-Bundle or Import-Package headers.
|
Structural compare and syntax highlighting for manifest.mf files |
When comparing two versions of a bundle
MANIFEST.MF file, the new structure compare viewer will let you easily see
what headers have been added, removed or modified.
Syntax highlighting has also been added to the MANIFEST.MF source page. Colors and fonts preferences can be set on the Plug-in Development > Editors preference page. |
Validate build.properties files |
PDE now validates build.properties files to
flag potential problems that would prevent your plug-in from being exported
properly.
The severity level for problems in build.properties files can be set on the Plug-in Development > Compilers > Plug-ins preference page.
|
Quick fixes for plug-in manifest files |
Quick fixes are now available for many types
of problems in MANIFEST.MF, plugin.xml and build.properties files, including:
|
Automatic Javadoc attachment |
PDE now automates the task of attaching Javadoc
to libraries found on your plug-in's build path.
Refer to the org.eclipse.pde.core.javadoc extension point documentation for full details. |
New extension point schema editor |
The extension point schema editor has been redesigned.
New features include:
|
Headless RCP application template |
The Eclipse runtime is a rich Java component model ideal for running
headless (non-UI) applications.
The New Plug-in Project creation wizard (File > New > Project...> Plug-in Project) now supports a workflow to create headless RCP applications, complete with a Hello World template.
|
Form validation in product editor |
The product editor now reports warnings and
errors in the title area of each page. Problems reported include
invalid paths and the wrong size and depth of an image.
|
Integrated progress monitor in product splash screen |
If you like the integrated progress bar in the
Eclipse splash screen, you can easily do the same for your product splash
screen.
The Branding page of PDE product editor provides support to add and customize an integrated progress bar.
|
Platform-specific launcher arguments for cross-platform product export |
In the product editor, it is now possible to
specify platform-specific program and VM arguments to launch a product with.
This allows the creation of platform-specific <launcher>.ini files in a
single cross-platform export operation.
|
Add a Welcome page to your product |
A welcome page is your opportunity to provide a
pleasant initial user experience to your product.
The Branding page of the product configuration editor (File > New > Other...> Product Configuration) now has a Welcome Page section, which will help you create a template welcome page for your product.
|
Sharable and portable PDE launch configurations |
The PDE launch configurations (Eclipse Application and Plug-in JUnit) now support variable substitutions. Careful use of variables allows the saved form of the launch configuration to be portable across operating systems and sharable across teams. |
Templates for launching arguments |
You can now specify a template for program and
VM arguments, which will be used to initialize default arguments on new PDE
launch configurations.
|
Enhanced and automatic plug-in validation prior to launching |
The Validate Plug-in Set functionality, available on the Plug-ins tab of all PDE launchers, analyzes the list of selected
plug-ins to find lurking launching startup problems.
This function has now been enhanced to forecast more types of unsatisfied constraints that would prevent your plug-in from running. You can also opt to have this validation done automatically prior to every launch.
|
New source lookup for debugging Eclipse applications |
When debugging Eclipse applications,
PDE now uses a custom source lookup mechanism that is tied to the OSGi class
loader. This is both faster and more accurate than the standard linear Java
source lookup.
The Source tab has been removed from the Eclipse/Equinox/Plug-in JUnit launch configurations as it is no longer needed. |
Plug-in level custom Ant targets |
The generated build.xml for a plug-in now supports custom targets at the plug-in level. Set the property "customBuildCallbacks" in a plug-in's build.properties file to point at an Ant script and pre and/or post ant calls will be generated for the following targets: build.jars, build.sources, the compilation target (eq: @dot), gather.bin.parts, gather.sources, gather.logs, and clean. In many cases these custom callbacks can be used instead of having an entirely custom build.xml. A template customBuildCallbacks.xml is provided in org.eclipse.pde.build/templates. |
Building products |
PDE Build now supports building products from a .product file in a headless automated build. A feature will be automatically generated based on the contents of the product file. |
Multiple repository support |
The PDE Build generation of fetch scripts for headless builds is now extensible. Extenders may contribute support for fetching elements from additional repositories through the org.eclipse.pde.build.fetchFactories extension point. PDE Build provides the standard extension for fetching files from CVS. |