Eclipse 3.1 M5 - New and Noteworthy
Part 1
SWT
Native tree with columns
The SWT Tree widget can now display multiple columns. New API in Tree, TreeItem, and TreeColumn provides the same support for columns as Table. This obsoletes the TableTree widget, which is now deprecated.
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.
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.
SWT Browser widget improvements
On Windows, new window requests can now be opened in a standalone Internet Explorer browser. A new flag (required) added to the WindowEvent notification specifies whether the platform requires the user to provide a
Browser to handle the new window or if the request will open in a standalone system browser otherwise.
Eclipse RCP launcher improvements
The Eclipse launcher supports new arguments (-name and -startup) and a new configuration file to improve customization for RCP applications. For details, see the Eclipse Launcher description.
Starting SWT standalone applications inside Eclipse is now easy
You can now run and debug your SWT application quickly and easily using the new SWT application launcher. It handles such things as identifying the location of the SWT native libraries. A shortcut to the launcher is available in the context menu of your Java class via Run As > SWT Application.
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.
New Link widget
The new Link widget displays text containing hyperlinks.
For more details, see the example snippet.
Remove widgets from Layout
RowData and GridData have a new exclude attribute for removing the associated widget from the layout management. Previously, applications had to dispose and recreate widgets to achieve this effect.
For more details, see the example snippet.
PDE
Build an Eclipse product with a single click
You can now create and manage an Eclipse product in a *.product file, which can be created via File > New > Other...> Product Configuration.
The product configuration editor manages all aspects of a product from basic definition to branding. You can create plug-in-based and feature-based products. The overview page provides hot links to test and export the product.
More RCP templates
PDE now provides two more customizable templates to help get new RCP developers up and running faster.
New feature and update site manifest editors
The PDE feature and update site manifest editors have been redesigned to provide a simpler and better workflow. Improvements include the ability to build and package features without having to import them into your workspace.
Part 2
Platform Runtime
Don't delete config.ini
After modifying an Eclipse install by means other than the Eclipse Update manager (e.g., after unzipping a new plug-in or feature into your Eclipse install directory, the next time you restart Eclipse you need to use the -clean option to ensure that the changes are noticed and picked up.
Note: In the past, some people accomplished the desired outcome by deleting the configuration folder in the install directory. This is no longer possible because the config.ini file in that directory contains vital irreplaceable information. If you still prefer mucking with the configuration directory instead of using -clean, you should delete the inner folders but leave config.ini alone.
Platform UI
Searching in the Properties dialog
The Properties dialog now supports searching for property pages in the same way that the Preference dialog does.
View settings dialogs
There is now a dialog provided to do settings for your views (ViewSettingsDialog), with a reusable action provided (ViewPreferencesAction). Below is the settings dialog for the progress view.
Deferred content providing
The ILazyContentProvider has been implemented for use in SWT.VIRTUAL TableViewers that wish to only lookup content as it is requested.
Keywords in the preferences dialogs
The preference dialog now support searching by keyword as well as by page name so that several pages with related content but unrelated page names can be found with the same search. In the example below all of the displayed pages have the keyword "Appearance". See the org.eclipse.ui.keywords and org.eclipse.ui.preferencePages extension points for more details.
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. The text editors and refactoring support have not yet migrated to this API, but migration is planned shortly after M5. Feedback is encouraged. The API is still evolving, so early adopters should expect some changes before the dust settles.
WorkbenchAdvisor API refactored
The window-level responsibilities in WorkbenchAdvisor have been split out into a window-level advisor, WorkbenchWindowAdvisor and a corresponding ActionBarAdvisor. This leads to a cleaner separation of responsibilities, with a one-to-one correspondence between the advisors and the configurers. The ActionBarAdvisor also has some convenience methods for managing action lifecycle. The change is backwards-compatible, but it is recommended for 3.1-based RCP apps to migrate to the new API.
For more details, see bug 83658.
New wizard registry API
Workbench wizards (of the New, Import, and Export varieties) are now available from registries obtained from IWorkbench.getXXXWizardRegistry() methods. The IWizardRegistry allows you to access IWizardDescriptor and IWizardCategory objects. From these descriptors, RCP and plug-in developers may create their own Wizard container implementations.
New view registry API
The descriptors for workbench views contributed via extension points are now publicly accessible via the IViewRegistry interface obtained from IWorkbench.getViewRegistry(). From this registry you can obtain IViewDescriptors and view Category objects that can be used by RCP and plug-in developers to create their own view activation mechanisms.
Import and Export specific sets of preferences
The Import/Export wizards now support preferences. The list of specific sets of preferences that can be exported and imported will grow in future milestones.
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 right 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.
XHTML support for authoring Welcome pages
Welcome pages can now be authored using XHTML 1.0 in addition to the existing XML markup. A WYSIWYG editor can be used to produce XHTML 1.0-compliant pages that can then be contributed and used as Welcome pages. This support is an add-on to the existing 3.0 welcome functionality. This means that existing features like content reuse, targeted page contributions and dynamic content creation continue to be supported via XHTML tags.
You can read more about this in the XHTML Welcome proposal.
Controls in FormText
It is now possible to mix SWT Control objects with hyperlinks, text and images in FormText (part of Eclipse Forms). The new tag is <control> and it can be added anywhere where <img> tag could go. If a group of controls needs to go together is a certain way, you can group them in a Composite and register that Composite using the <control> tag. Controls that can take focus will be inserted in the focus traversal list so that focus moves between links and controls according to their position in text when you use Tab and Shift+Tab keys.
Help
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. And 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).
You can read more about the help view and the new document search in the Help view proposal. Feedback on this new feature would be appreciated.
CVS
CVS operations on Java packages are no longer deep
In the past, performing a CVS Update on a Java package would update the package and all of its subpackages. With new support added in this milestone, a CVS Update (or any other CVS operation) will exclude subpackages and update only those files contained in the package.
Note that this support is general to any model or repository provider. Click here for more details.
Platform Text
Word completion
In any text editor, you can now complete a prefix to a word occurring in all currently open editors or buffers. The default key binding for word completion is Alt+/.
Update
Install/Update wizard redesigned
The install wizard (Help > Software Updates > Find and Install) has been redesigned to address performance and usability issues:
searching an update site can be performed as a background job, which is very handy when the update servers are slow to respond
the update sites page has been simplified to only lists the sites, without having to connect to extract category information
features found on those sites are now displayed hierarchically, under the appropriate site and category, as defined in the update sites
the location page has been simplified
the update site search performance has also been improved by avoiding downloading of unnecessary feature packages.
Debug
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.
Find variable
The Find Variable action in the Variables view allows you to type in the name of a variable you are looking for. As you type, the Variables view selects the next visible variable matching the entered text. As well, the Find variable dialog shows variables matching the text entered so far.
Ant
Ant "objects" presentation in the UI
Ant tasks, types, properties, and extra classpath entries are differentiated in the Ant preferences and Ant launch configuration tabs based on their availability for same or separate JRE builds.
Ant debugger call stack and properties
The Ant debugger presents the dependency call stack for any target.
The presentation of Ant properties are also grouped in the Variables view for your convenience:
System: Ant properties set from the System for the the build
User: properties such as those set using the -D option
Runtime: all properties set during the execution of the build
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".
Part 3
JDT
Boxing/unboxing diagnosis
The J2SE 5.0 autoboxing capability is powerful but it can lead to unexpected behavior especially when passing arguments. The compiler introduces an optional diagnosis that indicates when autoboxing or autounboxing is performed. In the following example, one might think that foo(Integer) would be called, but since autounboxing is performed, foo(int) is called.
Assignment with no effect diagnosis for postfix expression
The optional diagnosis for assignment with no effect now detects the case where a postfix expression is assigned to the same variable, e.g. i = i++;
Searching generic methods and constructors
The Java search engine now finds references to, and declarations of, generic and parameterized methods.
Searching type parameters
The Java search engine now finds references to, and declarations of, type parameters in generic types and methods.
Source Actions
The source actions available in the Source context menu now support all the features of J2SE 5.0:
Override/Implement Methods supports generics and varargs in method declarations
Generate Getters and Setters works on fields of generic type as well
Generate Delegate Methods has support for generics and varargs, and handles methods from types occurring in type bounds as well
Add Constructors from Superclass offers support for generics
Generate Constructor using Fields offers support for generics
(More details on JDT UI's and JDT Text's Java 5.0 status for 3.1 M5 is available here.)
Change Signature and other refactorings are J2SE5-aware
Many refactorings have been improved to handle new J2SE 5.0 language features. For example, Change Method Signature now allows editing methods whose parameters are parameterized types:
Other refactorings that have been updated include Rename, Inline Constant, Inline and Extract Method, Generalize Type, and Introduce Factory.
Extract Interface refactoring
The extract interface refactoring has been rewritten in order to provide full support for J2SE 5.0 and to better respect code style preferences. New features include:
Support for generic types and varargs of J2SE 5.0
Full rewriting of existing method comments
Full use of code templates during code generation
Static import groups
To organize your static imports, create groups for the static imports and place them where you prefer. A new feature is to define an 'others' group to collect up all imports not matched by any other group:
The 'others' group feature is also available for non-static imports.
New quick fixes
For unresolved Java types, you now also get proposals to create enums, annotations, and new type parameters:
Syntax highlighting
The Java editor now properly highlights the new J2SE 5.0 language features. Go to the Java > Editor > Syntax Coloring preference page to change the colors or to enable semantic coloring of type variables, annotation elements and auto(un-)boxed expressions:
New for loop template
The new foreach template inserts a new 'for' loop into the code, proposing local Iterable instances you may want to iterate over:
Autoboxing parameter proposals
Proposed parameters include auto(un-)boxing proposals:
Note: Java > Editor > Code Assist > Advanced > Guess filled argument names preference has to be enabled.
Folding provides better captions
When folding a Java element, the remaining line in the Java editor is the one containing the element's name. The first comment line is displayed for folded Javadoc comments:
Header comment folding
Header comments and copyright statements in Java source files are now folded:
Improved source folder page for new Java project wizard
An improved source folder configuration page in the Java project creation wizard assists you in creating projects from existing source. You can define source folder entries, include/exclude folders directly on the tree, and test the results of your action right away.
Build path menu in the Package Explorer
The context menu of the Java Package Explorer has a new 'Build Path' menu entry, offering context-sensitive actions to modify the build path of a Java project. You can add/remove new source folders, archives and libraries, and include/exclude folders and files from a source folder:
Tool tip description for Javadoc
Edit > Show Tooltip Description (F2) for Javadoc now uses the SWT Browser widget.