<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="Author" content="Build">
   <meta name="GENERATOR" content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]">
   <title>Eclipse Platform Release Notes - Workbench</title>
</head>
<body>

<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020528
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F05%2F17&chfieldto=2002%2F05%2F28&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/05/17 and 2002/05/28.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020517
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F05%2F13&chfieldto=2002%2F05%2F17&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/05/13 and 2002/05/17.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020513
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<blockquote>icon - new attribute to workingSet element of org.eclipse.ui.workingSets
extension point. The image specified here will be used in the working set
type list on the first page of the working set creation wizard. It will
also be used in the working set selection dialog to indicate the type of
existing working sets.
<p>- Added new global action: Add Task (under Edit menu). Added IWorkbenchActionConstants.ADD_TASK</blockquote>

<h3>
Other highlights</h3>

<blockquote>In order to improve startup time, editors are being lazily
created. The API IWorkbenchPage.getEditors() was deprecated and the APIs
getEditorReferences(), getDirtyEditors (convenience API) and findEditor(input)
were added to IWorkbenchPage. To keep backward compatibility, getEditors()
was changed to initialize/instanciate all editors before returning them.
So getEditors() should be avoided otherwise the first caller will pay the
time saved from the startup.
<p>The API IWorkbenchPage.getViews() was deprecated as well. The intention
is to lazy create views so that views hidden on a tab folder are not going
to be instanciated until they are made visible. The API getViewReferences
was added to IWorkbenchPage but the implementation has not changed yet.</blockquote>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F05%2F07&chfieldto=2002%2F05%2F13&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/05/07 and 2002/05/13.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020507
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F04%2F30&chfieldto=2002%2F05%2F07&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/04/30 and 2002/05/07.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020430
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<blockquote><b>IWorkbenchPage.addPropertyChangeListener/removePropertyChangeListener</b>
- Deprecated methods. Views should register a property change listener
with the IWorkingSetManager to receive notification when a working set
is removed.
<p><b>IWorkbenchPage.getWorkingSet</b> - Deprecated method. Working sets
are now view specific and are no longer stored in the page. If your view
uses a working set it should provide means to select a working set.
<p><b>IWorkingSet.CHANGE_WORKING_SET_CONTENT_CHANGE/CHANGE_WORKING_SET_NAME_CHANGE</b>
- Deprecated constants. Use the constants in IWorkingSetManager instead.
<p><b>IWorkingSet.addPropertyChangeListener/removePropertyChangeListener</b>
- Deprecated methods. Use IWorkingSetManager.addPropertyChangeListener/removePropertyChangeListener
instead to receive notification when a working set has changed.
<br>&nbsp;</blockquote>

<h3>
API additions</h3>

<blockquote><b>org.eclipse.ui.views.framelist</b> - has been promoted to
API from org.eclipse.ui.views.internal.framelist.
<br>org.eclipse.ui.views.internal.framelist has been deleted.
<p><b>org.eclipse.ui.XMLMemento</b> - has been promoted to API from org.eclipse.ui.internal.
Internal implementation has been deleted.
<p><b>IWorkingSetManager.addRecentWorkingSet/getRecentWorkingSets</b> -
Provides access to the most recently used working set list. The MRU list
is a global list of working sets that have recently been selected by the
user. It is the responsibility of the working set selection UI to add the
selected working set using the addRecentWorkingSet API.
<p><b>IResourceNavigatorPart.getWorkingSet/setWorkingSet</b> - Used to
access the resource navigator view working set.</blockquote>

<h3>
Other highlights</h3>

<blockquote>Working sets have been changed from being set in a workbench
page to being view specific. A working set for the resource navigator view
may be selected in the view's filter dialog.
<p>Added a preference for Text File Encoding (on the Work In Progress preference
page). Any clients, such as text editors and builders, which read text
files from the workspace should use the workspace encoding preference.
This preference is actually stored in the preferences for org.eclipse.core.resources,
rather than org.eclipse.ui, so that builders and other headless clients
can access it. See PREF_ENCODING and getEncoding() in org.eclipse.core.resources.ResourcesPlugin.
<p>The following is one recommended way of reading text files:
<br>IFile file = ...;
<br>InputStreamReader reader = null;
<br>try {
<br>&nbsp;reader = new InputStreamReader(file.getContents(), ResourcesPlugin.getEncoding());
<br>&nbsp;// use the reader
<br>}
<br>catch (UnsupportedEncodingException e) {
<br>&nbsp;// The encoding preference is not supported.
<br>&nbsp;// Handle it here.
<br>}
<br>catch (IOException e) {
<br>&nbsp;// Some other IO exception has occurred.
<br>&nbsp;// Handle it here.
<br>}
<br>finally {
<br>&nbsp;if (reader != null) {
<br>&nbsp; try {
<br>&nbsp;&nbsp; reader.close();
<br>&nbsp; }
<br>&nbsp; catch (IOException e) {
<br>&nbsp;&nbsp; // ignore
<br>&nbsp; }
<br>&nbsp;}
<br>}</blockquote>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F04%2F23&chfieldto=2002%2F04%2F30&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/04/23 and 2002/04/30.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020423
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<blockquote><b>fastViewWidthRatio</b> - new optional attribute to view
element of org.eclipse.ui.views extension point. This attribute can be
used to specify the width of views (as a percentage of the width of the
workbench) when they appear as fast views. If it is not specified, a default
width ratio will be used.
<p><b>relationship</b> - attribute to view element of org.eclipse.ui.perspectiveExtensions
extension point may now have a value of "fast", indicating the contributed
view is a fast view.
<p><b>ratio</b> - attribute to view element of org.eclipse.ui.perspectiveExtensions
extension point may now be used to specify the width ratio of the views
contributed as fast views.
<p><b>visible</b> - new optional attribute to view element of org.eclipse.ui.perspectiveExtensions
extension point. This attribute should have a value of either "true" or
"false". If the value of this attribute is "false", the view will not appear
immediately upon perspective opening. If it is not specified, contributed
views will be visible by default.</blockquote>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F04%2F18&chfieldto=2002%2F04%2F23&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/04/18 and 2002/04/23.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020418
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<blockquote><b>ElementListSelectionDialog, MultiElementListSelectionDialog,
TwoPaneElementSelector, ElementTreeSelectionDialog, CheckedTreeSelectionDialog,
SelectionStatusDialog, AbstractElementListSelectionDialog, and FilteredList</b>
<br>- In org.eclipse.ui.dialogs, several selection dialog classes have
been pushed down from JDT.
<br>For more details, see bug 10852 (<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=10852">http://dev.eclipse.org/bugs/show_bug.cgi?id=10852</a>).</blockquote>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F04%2F11&chfieldto=2002%2F04%2F18&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/04/11 and 2002/04/18.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020411
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F04%2F09&chfieldto=2002%2F04%2F11&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/04/09 and 2002/04/11.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020409
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<blockquote><b>ICapabilityWizard </b>- this experimental interface is deprecated
and will be removed prior to M6. Use ICapabilityInstallWizard instead.
<p><b>ResourceNavigator.setLabelDecorator()</b> - This experimental and
deprecated method has been removed. Callers should use the decoration extension
point instead.
<p><b>org.eclipse.ui.views.internal.framelist</b> - all types in this package
have been deprecated and will be removed prior to M6.
<p><b>Single Click</b> - The API addOpenListener(IOpenListener listener)
was added to StructuredViewer. The listeners will be notified of open events
which dependent on the user preference (default is double-click). Views
that are implemented on top of SWT (not JFace) can use the classes OpenStrategy
and IOpenEventListener. Views like the Navigator should change the code
that listen for DoubleClickEvent to listen for OpenEvent instead/as well.
E.g. Navigator opens editors on open event but expands trees on double
click.
<p><b>IWorkbenchPage.isEditorPinned(IEditorPart)</b> - added back the tool
bar button to pin editors. And added the API isEditorPinned(IEditorPart
editor) to IWorkbenchPage. Any kind of editor managment code must use isEditorPinned.</blockquote>

<h3>
API additions</h3>

<blockquote><b>ICapabilityInstallWizard</b> and <b>ICapabilityUninstallWizard</b>
- capability now support both an install and uninstall wizard. See the
documentation for the capabilities extension point for more details
<p><b>org.eclipse.ui.views.framelist</b> - contains all the types previously
contained in org.eclipse.ui.views.internal.framelist package
<p><b>IWorkbenchActionConstants</b> - New constants for the new menus,
global actions and groups (see Menu Reorganization below)
<p><b>IWindowListener</b> - support listeners for window lifecycle events
<p><b>IWorkbench.addWindowListener(IWindowListener)</b> and <b>IWorkbench.removeWindowListener(IWindowListener)</b>
- support listeners for window lifecycle events
<p><b>OpenInNewWindowAction</b> - The action was made public so that views
such as Navigator can have the "Open In New Window" option.</blockquote>

<h3>
Other highlights</h3>

<blockquote><b>Retarget Actions in Action Sets</b> - The action set extension
point now supports the retarget and allowLabelUpdate attributes. The readme
example has been modified to demonstrate the use of these attributes. Parts
can supply handlers for these actions using the standard API on their site.
As with global actions, the enablement is determined by the handler.
<p><b>Menu Reorganization</b> - There has been a major reorganization of
the Workbench menus. The overall intent of the change is to provide all
actions on the main menus, reserving the context menus for frequently used
actions. This is the recommended direction for the Workbench and other
plugins.
<p>The File menu has new items for Revert (used by editors), Refresh (used
by the Navigator and similar views), and Properties (used by the Navigator
and Task List).
<p>The Edit menu has new items for Move and Rename.
<p>The Perspective menu has been removed.&nbsp; The perspective actions
have been moved to the Window menu and renamed.
<p>The Workbench menu has been replaced by the Project menu, and has new
actions for opening, closing, and building individual projects.
<p>There is a new menu, Navigate, which contains Go Into and the Go To
submenu, used by the Navigator and similar views (e.g. the Packages view
in JDT UI). It also has reserved groups for Open On... and Show in... items,
although the Workbench itself does not add any actions to these groups.
See the JDT UI plugin for a good example of how these should be used.
<p>All the new actions are provided as retargetable global actions. There
are no default implementations of these actions provided by the Workbench
proper (the standard views and editors provide handlers though). Use IActionBars.setGlobalActionHandler
to hook handlers in views and editors.
<p>Note that this approach may still change between now and M6 for the
more resource-oriented actions. We are considering providing these as a
separate action set, however this would require changing any existing perspectives
which want these actions available.&nbsp; The additions to the File and
Edit menus will likely remain as retargetable global actions.
<p><b>groupMarker</b> - was added to ActionSets menus allowing menus to
have a marker without a visible separator.</blockquote>

<h2>
Known deficiencies</h2>

<blockquote>- Contributions from other plugins, via action sets or editor
action contributions, to the old menus (Perspective and Workbench) are
lost. We are planning on adding support to forward such contributions to
the new menus (Window and Project).</blockquote>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F04%2F02&chfieldto=2002%2F04%2F09&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/04/02 and 2002/04/09.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020402
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<blockquote>- ActionFactory and subclasses deprecated in org.eclipse.ui.views.navigator.&nbsp;
These will be deleted in M6.
<br>- Changed ResourceNavigator to use ActionGroups instead of ActionFactories.</blockquote>

<h3>
API additions</h3>

<blockquote><b>ICombinedLabelDecorator</b> and <b>ICombinedLabelProvider</b>
<br>- It is now possible to decorate both the text and the image for an
element in the same method call. ICombinedLabelDecorator&nbsp; is a subclass
of ILabelDecorator and specifies a method decorateLabel(Object, CombinedLabel).
A CombinedLabel is a type that contains a text and an image for decoration.
ICombinedLabelProvider extends ILabelProvider and implements a method getCombinedLabel(Object).
The DecoratorManager now handles both the ILabelDecorator and ICombinedLabelDecorator.
<p><b>ActionGroup</b> and <b>ActionContext</b> in org.eclipse.ui.actions
<p><b>RadioGroupFieldEditor</b>
<br>- Added constructor to RadioGroupFieldEditor to specify whether a Group
control should be used (false by default for backwards compatibility).
Preference pages are encouraged to use Group controls for groups of related
radio buttons or toggle buttons, since they provide more context to accessibility
aids like JAWS.</blockquote>

<h3>
Other highlights</h3>

<blockquote><b>LabelProviderChangedEvent</b>
<br>It is now possible to create a LabelProviderChangedEvent with multiple
elements rather than sending an seperate event for each change. The StructuredViewer
now updates based on an array of elements. The previous API has not changed,
now LabelProviderChangedEvent .getElement() returns the first element in
the elements of the event.</blockquote>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F03%2F28&chfieldto=2002%2F04%2F02&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/03/28 and 2002/04/02.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020328
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F03%2F26&chfieldto=2002%2F03%2F28&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/03/26 and 2002/03/28.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020326
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<blockquote><b>AbstractTreeViewer</b>
<br>A new method has been added to AbstractTreeViewer. AbstractTreeViewer.getVisibleExpandedElements()
will only return the expanded elements that are currently visible to the
user. This is meant as a possible alternative to getExpandedElements()
which returns all expanded elements whether they are currently visible
or not. getVisibleExpandedElements()&nbsp; is now being used by the ResourceNavigator
to determine the expansions to be stored in the Momento. This could be
of use for the PackagesView as well.</blockquote>

<h3>
Other highlights</h3>

<blockquote><b>Deleted Editors</b>
<br>Editors deleted via the Workbench>File Editors preference page will
now be remembered after workbench shutdown.
<br>Note that only the editor should be deleted. If the file type is deleted,
the file type and editor will reappear the next time the workbench is started.</blockquote>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F03%2F21&chfieldto=2002%2F03%2F26&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/03/21 and 2002/03/26.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020321
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<blockquote><b>Project Capabilities</b>
<p>Plug-ins developing capabilities will want to turn on the option in
the workbench preference to enable the use of the configurable new project
wizard.</blockquote>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F03%2F18&chfieldto=2002%2F03%2F21&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/03/18 and 2002/03/21.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020318
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<blockquote>IWorkbenchPartSite.getDecoratorManager()
<br>- As the DecoratorManager has proven to be required for more than just
IWorkbenchPartSites we have moved getDecoratorManager() to IWorkbench and
deprecated the getDecoratorManager() in IWorkbenchPartSite. The one in
IWorkbenchPartSite will be removed after the other Eclipse components have
had a chance to switch to the new API.
<p>BasicNewProjectResourceWizard, WizardNewProjectCreationPage, WizardNewProjectReferencePage,
and NewProjectAction
<br>- These classes have been deprecated. Multiple project type creation
wizards are no longer recommended. The workbench provides one wizard to
the user to create a project resource. Plug-ins should now use the org.eclipse.ui.capabilities
extension point. See also CreateProjectAction if the plug-in needs to launch
the new project wizard.
<p>org.eclipse.ui.projectNatureImages
<br>- this extension point is no longer applicable with the new project
capability feature
<p>org.eclipse.ui.newWizards attributes "project" and "final perspective"
<br>- these attributes are no longer applicable with the new project capability
feature</blockquote>

<h3>
API additions</h3>

<blockquote>IWorkbench.getDecoratorManager()
<p>RetargetAction and LabelRetargetAction
<br>- See notes on Editor Action Contributions below
<p>org.eclipse.ui.actionSetPartAssociations
<br>- new extension point, see Action Set - Part Associations below
<p>CreateProjectAction
<br>- action to launch new project creation wizard with option to add capabilities
<p>org.eclipse.ui.capabilities
<br>- new extension point to add capabilities to a new/existing project.
See the documentation on this extension point and also the e-mail sent
to the dev-ui mailing list with further instructions on how to migrate.
<p>ICapabilityWizard
<br>- new interface for wizards that add a capability to a new/existing
project.</blockquote>

<h3>
Other highlights</h3>

<blockquote><b>Editor Action Contributions</b>
<p>Editor contributions remain visible but disabled when the editor is
the "last active editor" but is not the active part. This is now true for
menubar and toolbar contributions (in 1.0 it only applied to toolbar contributions).
<p>There is however an exception to this. The classes RetargetAction and
LabelRetargetAction have been moved to the API package org.eclipse.ui.actions.
These classes implement the "Global Action" behavior in the workbench.
An editor action contributor may&nbsp; contribute one of these actions
(and supply an action handler for it). If an active view supplies a handler
for the action, the action will be enabled.
<p>The readme example has been modified to demostrate this behavior. The
editor contributes global actions and the content outline supplies a handler
for these actions.
<p><b>Action Set - Part Associations</b>
<p>An org.eclipse.ui.actionSetPartAssociations extension point has been
added to associate action sets with particular views and editors. In the
case of an editor, the action set will remain visible while the editor
is the current editor. In the case of a view, the action set will be visible
when the view is the active part.
<p>The user may override these associations using the customize perspective
dialog. Regardless of these associations, action sets which the user turns
off will never appear and action sets which the user turns on will always
be visible.
<p>If an older workspace is used with this drop, perspectives should be
closed then reopend in order to get the correct behavior.
<p><b>Marker Help and Resolutions</b>
<p>Doc has been added for the org.eclipse.ui.markerResolutions and org.eclipse.ui.markerHelp
extension points.
<p><b>Project Capabilities</b>
<p>Support is now available for plug-in to provide capabilities to projects.
The workbench provides one wizard now to create a new project. Users can
then add/remove capabilities to a new/existing project. See the documentation
for the org.eclipse.ui.capabilities extension point. And the e-mail in
dev-ui mailing list for further instructions on how to migrate.</blockquote>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F03%2F12&chfieldto=2002%2F03%2F18&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/03/12 and 2002/03/18.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020312
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<blockquote><b>D&amp;D and Fast Views</b>
<br>Added drag and drop support for fast view buttons. Dragging a file
over a fast view button will activate the fast view. Dragging a file back
over the shortcut bar will reactivate the previously activate view.
<p><b>Task View</b>
<br>Added a properties dialog for task creation, and for viewing or editing
task properties. This also addresses the accessibility issues with task
editing.</blockquote>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F03%2F07&chfieldto=2002%2F03%2F12&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/03/07 and 2002/03/12.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020307
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<blockquote><b>IContextComputer, DialogPageContextComputer, and ViewContextComputer</b>
<br>These classes have been deprecated. See "<a href="#Help Framework">Help
Framework</a>" below for more details
<p><b>IWorkbench</b>
<br>&nbsp;&nbsp;&nbsp; public IWorkbenchPage clonePage(IWorkbenchPage page);
<br>&nbsp;&nbsp;&nbsp; public IWorkbenchPage openPage(IAdaptable input);
<br>&nbsp;&nbsp;&nbsp; public IWorkbenchPage openPage(String perspId, IAdaptable
input, int keyState);
<br><b>IWorkbenchPreferenceConstants</b>
<br>&nbsp;&nbsp;&nbsp; public static final String OPEN_NEW_PERSPECTIVE;
<br>&nbsp;&nbsp;&nbsp; public static final String ALTERNATE_OPEN_NEW_PERSPECTIVE;
<br>&nbsp;&nbsp;&nbsp; public static final String SHIFT_OPEN_NEW_PERSPECTIVE;
<br>&nbsp;&nbsp;&nbsp; public static final String PROJECT_OPEN_NEW_PERSPECTIVE;
<br>&nbsp;&nbsp;&nbsp; public static final String OPEN_PERSPECTIVE_WINDOW;
<br>&nbsp;&nbsp;&nbsp; public static final String OPEN_PERSPECTIVE_PAGE;
<br>&nbsp;&nbsp;&nbsp; public static final String OPEN_PERSPECTIVE_REPLACE;
<br>&nbsp;&nbsp;&nbsp; public static final String NO_NEW_PERSPECTIVE;
<br><b>OpenNewPageMenu, OpenNewWindowMenu, and OpenPerspectiveMenu</b>
<br>These IWorkbench methods, IWorkbenchPreferenceConstants constants,
and 3 classes have all been deprecated. Clients should use the new showPerspective
methods on IWorkbench. See the ui mailing list for a more details about
this new API and how clients are expected to use them.</blockquote>

<h3>
API additions</h3>

<blockquote><b>IMemento</b>
<br>&nbsp;&nbsp;&nbsp; public String getTextData()
<br>&nbsp;&nbsp;&nbsp; public void putTextData(String)
<br>This new API is to allow clients to save text containing tabs, spaces,
newline, etc characters without these characters being changed. See problem
report #4378.
<p><b>ISelectionService</b>
<br>&nbsp;&nbsp;&nbsp; public void addSelectionListener(String partId,
ISelectionListener listener);
<br>&nbsp;&nbsp;&nbsp; public void removeSelectionListener(String partId,
ISelectionListener listener);
<br>&nbsp;&nbsp;&nbsp; public ISelection getSelection(String partId);
<br>This new API allows client to track selection on a specific part. See
problem report #2668
<p><b>IWorkbench</b>
<br>&nbsp;&nbsp;&nbsp; public IWorkbenchPage showPerspective(String perspectiveId,
IWorkbenchWindow window, IAdaptable input);
<br>&nbsp;&nbsp;&nbsp; public IWorkbenchPage showPerspective(String perspectiveId,
IWorkbenchWindow window);
<br>This new API is to support a more consistent and predictable opening
of perspective for the user. See the ui mailing list for a more details
about this new API and how clients are expected to use them.</blockquote>

<h3>
Other highlights</h3>

<blockquote><a NAME="Help Framework"></a><b>Help framework</b>
<br>The API of WorkbenchHelp has been updated to reflect changes to the
API of the help support system. Specifically, nested contexts are no longer
supported. Thus the WorkbenchHelp API now only accepts a single help context
id (the old API is deprecated and in the case of an array of contexts only
the first element is used).
<p>The types IContextComputer, DialogPageContextComputer, and ViewContextComputer
have been deprecated. Clients who wish to dynamically compute a help context
should hook their own help listener then call WorkbenchHelp.displayHelp
with a context id or IContext.
<p><b>Marker resolution</b>
<br>The org.eclipse.ui.markerResolution extension point has been modified
to accept an IMarkerResolutionGenerator. The generator is passed a marker
and may return 0..n resolutions for the marker. It is important that the
generator be targetted as specifically as possible in the xml in order
to avoid unneeded plug-in loading. Full documentation of this extension
point and org.eclipse.ui.markerHelp should be available shortly. See the
readme example for a demostation or thier use.
<br>&nbsp;</blockquote>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F03%2F05&chfieldto=2002%2F03%2F07&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/03/05 and 2002/03/07.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020305
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<blockquote><b>IContextComputer, DialogPageContextComputer, and ViewContextComputer</b>
<br>These classes have been deprecated. See "<a href="#Help Framework">Help
Framework</a>" below for more details
<p><b>IWorkbench</b>
<br>&nbsp;&nbsp;&nbsp; public IWorkbenchPage clonePage(IWorkbenchPage page);
<br>&nbsp;&nbsp;&nbsp; public IWorkbenchPage openPage(IAdaptable input);
<br>&nbsp;&nbsp;&nbsp; public IWorkbenchPage openPage(String perspId, IAdaptable
input, int keyState);
<br><b>IWorkbenchPreferenceConstants</b>
<br>&nbsp;&nbsp;&nbsp; public static final String OPEN_NEW_PERSPECTIVE;
<br>&nbsp;&nbsp;&nbsp; public static final String ALTERNATE_OPEN_NEW_PERSPECTIVE;
<br>&nbsp;&nbsp;&nbsp; public static final String SHIFT_OPEN_NEW_PERSPECTIVE;
<br>&nbsp;&nbsp;&nbsp; public static final String PROJECT_OPEN_NEW_PERSPECTIVE;
<br>&nbsp;&nbsp;&nbsp; public static final String OPEN_PERSPECTIVE_WINDOW;
<br>&nbsp;&nbsp;&nbsp; public static final String OPEN_PERSPECTIVE_PAGE;
<br>&nbsp;&nbsp;&nbsp; public static final String OPEN_PERSPECTIVE_REPLACE;
<br>&nbsp;&nbsp;&nbsp; public static final String NO_NEW_PERSPECTIVE;
<br><b>OpenNewPageMenu, OpenNewWindowMenu, and OpenPerspectiveMenu</b>
<br>These IWorkbench methods, IWorkbenchPreferenceConstants constants,
and 3 classes have all been deprecated. Clients should use the new showPerspective
methods on IWorkbench. See the ui mailing list for a more details about
this new API and how clients are expected to use them.</blockquote>

<h3>
API additions</h3>

<blockquote><b>IMemento</b>
<br>&nbsp;&nbsp;&nbsp; public String getTextData()
<br>&nbsp;&nbsp;&nbsp; public void putTextData(String)
<br>This new API is to allow clients to save text containing tabs, spaces,
newline, etc characters without these characters being changed. See problem
report #4378.
<p><b>ISelectionService</b>
<br>&nbsp;&nbsp;&nbsp; public void addSelectionListener(String partId,
ISelectionListener listener);
<br>&nbsp;&nbsp;&nbsp; public void removeSelectionListener(String partId,
ISelectionListener listener);
<br>&nbsp;&nbsp;&nbsp; public ISelection getSelection(String partId);
<br>This new API allows client to track selection on a specific part. See
problem report #2668
<p><b>IWorkbench</b>
<br>&nbsp;&nbsp;&nbsp; public IWorkbenchPage showPerspective(String perspectiveId,
IWorkbenchWindow window, IAdaptable input);
<br>&nbsp;&nbsp;&nbsp; public IWorkbenchPage showPerspective(String perspectiveId,
IWorkbenchWindow window);
<br>This new API is to support a more consistent and predictable opening
of perspective for the user. See the ui mailing list for a more details
about this new API and how clients are expected to use them.</blockquote>

<h3>
Other highlights</h3>

<blockquote><a NAME="Help Framework"></a><b>Help framework</b>
<br>The API of WorkbenchHelp has been updated to reflect changes to the
API of the help support system. Specifically, nested contexts are no longer
supported. Thus the WorkbenchHelp API now only accepts a single help context
id (the old API is deprecated and in the case of an array of contexts only
the first element is used).
<p>The types IContextComputer, DialogPageContextComputer, and ViewContextComputer
have been deprecated. Clients who wish to dynamically compute a help context
should hook their own help listener then call WorkbenchHelp.displayHelp
with a context id or IContext.
<p><b>Marker resolution</b>
<br>The org.eclipse.ui.markerResolution extension point has been modified
to accept an IMarkerResolutionGenerator. The generator is passed a marker
and may return 0..n resolutions for the marker. It is important that the
generator be targetted as specifically as possible in the xml in order
to avoid unneeded plug-in loading. Full documentation of this extension
point and org.eclipse.ui.markerHelp should be available shortly. See the
readme example for a demostation or thier use.
<br>&nbsp;</blockquote>

<h2>
Known deficiencies</h2>

<blockquote>Save All action remains disabled when there are known editors
that need saving.</blockquote>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F02%2F12&chfieldto=2002%2F03%2F05&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/02/12 and 2002/03/05.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020212
<h2>
What's new in this drop</h2>
<b>Clipboard copy support</b>
<blockquote>Copy in the navigator is now implemented as a clipboard based
action.
<br>Project, Folder and File copy is accomplished by:
<br>1) Selecting the resources to copy
<br>2) Invoking the Copy menu action (or pressing Ctrl-C)
<br>3) Selecting the destination
<br>4) Invoking the Paste menu action (or pressing Ctrl-V)
<p>Resources can also be copied to and "imported" from the file system
(ex. MS File Explorer) in this manner.</blockquote>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F02%2F05&chfieldto=2002%2F02%2F12&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/02/05 and 2002/02/12.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020205
<h2>
What's new in this drop</h2>
<b>Detached/Floating Views Disabled</b>
<blockquote>In this build, all support for views in detached/floating windows
has been disabled. When restoring the workbench state that includes views
as detached windows, these views will be ignored and will need to be manually
opened again by the user using Perspective > Show View sub-menu. Drag and
drop of a view to a detached window is also disabled.</blockquote>
<b>Import/Export Wizard Pages</b>
<blockquote>The import and export pages have an out-of-date and up-to-date
version. In order to remove confusion about these, the following classes
have been deprecated:
<p>WizardExportPage
<br>WizardFileSystemExportPage1
<br>WizardZipFileExportPage1
<p>WizardImportPage
<br>WizardFileSystemImportPage1
<br>WizardZipFileImportPage1
<p>The up-to-date supported versions of these classes are
<p>WizardExportResourcesPage
<br>WizardFileSystemResourceExportPage1
<br>WizardZipFileResourceExportPage1
<p>WizardResourceImportPage
<br>WizardFileSystemResourceImportPage1
<br>WizardZipFileResourceImportPage1</blockquote>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F01%2F29&chfieldto=2002%2F02%2F05&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/01/22 and 2002/01/29.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020129
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>
- Deprecated CheckboxTableViewer(Composite) and CheckboxTableViewer(Composite,
int) -- use newCheckList or CheckboxTableViewer(Table) instead
<h3>
API additions</h3>
- Added CheckboxTableViewer.newCheckList(Composite, int)
<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F01%2F22&chfieldto=2002%2F01%2F29&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/01/22 and 2002/02/05.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020122
<h2>
What's new in this drop</h2>
- Added patch by Cagatay Kavukcuoglu &lt;cagatayk@acm.org> for Task List
filtering by same project.
<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F01%2F15&chfieldto=2002%2F01%2F22&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/01/15 and 2002/01/22.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020115
<h2>
What's new in this drop</h2>
<b>Marker F1 Help - Experimental</b>
<br>This drop contains preliminary work for marker F1 help and resolutions.
<br>Two new extension points have been added:
<br>- org.eclipse.ui.markerHelp
<br>- org.eclipse.ui.markerResolution
<br>These extension points target specific kinds of markers using a marker
type and attributes
<p>The marker help registry is available from the Workbench.
<p>The task list has been modified to show the F1 help for its selected
marker and an "Autofix..." menu item has
<br>been added to its context menu to display the resolutions registered
for the marker.
<p>The readme example has been modified to demonstrate these extension
points.
<br>Use the editor context "Add" menu to add markers for which F1 help
and resolutions have been registered.
<p>NOTE: Any of this API and implementation is subject to change. More
extensive documentation will follow once
<br>the API has stabilzed.
<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F01%2F08&chfieldto=2002%2F01%2F15&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/01/08 and 2002/01/15.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020108
<h2>
What's new in this drop</h2>

<h3>
Changes to plugin action support</h3>
There have been two changes to plugin action support in the workbench.&nbsp;&nbsp;
The xml grammar for action enablement and visibility has been extended.&nbsp;
In addition, the IStructuredSelection limitations for plugin action enablement
have been removed.&nbsp; Now, the workbench can enable actions which work
with non-IStructuredSelection objects.
<h4>
Action Enablement</h4>
In version 1 of Eclipse the enablement and visibility of window, view,
editor and popup menu action extensions was defined using a limited set
of elements in xml.&nbsp; The existing tags cannot adequately describe
the conditions when an action should be enabled or visible.&nbsp; To resolve
these issues, the following approach has been implemented:
<p>- a refreshPluginActions() has been added to AbstractUIPlugin. The AbtractUIPlugin.startup
method will call this to trigger the creation of the action delegates for
the plugin.
<br>- a new enablement element has been added to the action markup for
action sets, views, editors, and popup menus.&nbsp; This can be used to
define the enablement criteria for any action, and is a sub element of
the action element.
<br>- a new visibility element has been added to popup menu extension action
markup.&nbsp; This can be used to define the visibility criteria for the
action, and is a sub element of the object contribution element.
<p>The new xml extends the existing markup, and do not replace it.
<p>The xml format for visibility and enablement criteria is defined in
actionExpressions.html, in the org.eclipse.ui doc directory.&nbsp; This
doc is referenced from the popup menu, view, editor, and action set documents.
<h4>
IStructuredSelection Limitations</h4>
In the past, the workbench plugin action enablement code could only handle
IStructuredSelection objects.&nbsp; If a non-IStructuredSelection object
was selected, the workbench would disable most of the plugin actions (in
the view, editor, or action set) and drop the selection on the floor.&nbsp;
This limitation has been removed.&nbsp; Regardless of selection type, the
workbench plugin action enablement code will now forward the selection
to the action delegate (once it has been instantiated).
<p>The action enablement code has also been modified to support non IStructuredSelections.&nbsp;
According to one dictionary, a selection is "one that is selected" or "a
collection of selected things".&nbsp; In reflection of this definition,
the workbench will treat an IStructuredSelection as a collection of selected
things, and any other selection type as one thing.
<p>For instance, suppose you add an action to the window (via an action
set), and it should be enabled if some text is selected in an editor.&nbsp;
You can use the following declaration to enable the action.
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;action id="org.eclipse.ui.tests.internal.as_1"
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
label="anyText"
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
menubarPath="org.eclipse.ui.tests.internal.TextSelectionMenu/group1"
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
class="org.eclipse.ui.tests.api.MockActionDelegate"
<br>&nbsp; enablesFor="1">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;selection class="org.eclipse.jface.text.ITextSelection"/>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/action>
<p>If you want to add an action to the window which is enabled when an
IFile with extension .txt is selected, you can use the following declaration
(shown with the new enablement block).&nbsp; In this case, the IFile will
be exposed in an IStructuredSelection, but there is no need to mention
the IStructuredSelection in the action declaration.&nbsp; The workbench
treats IStructuredSelection as a container for the important data inside.
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;action id="org.eclipse.ui.tests.internal.as_2"
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
label="anyTextFile"
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
menubarPath="org.eclipse.ui.tests.internal.TextSelectionMenu/group1"
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
class="org.eclipse.ui.tests.api.MockActionDelegate">
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;enablement>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;objectClass name="org.eclipse.core.IFile"/>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;objectState name="extension" value="txt"/>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/enablement>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/action>
<h3>
API changes</h3>

<h3>
API additions</h3>

<ul>
<li>
Added IActionDelegateWithEvent (experimental).</li>
</ul>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2001%2F12%2F18&chfieldto=2002%2F01%2F08&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2001/12/18 and 2002/01/08.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20011218
<h2>
What's new in this drop</h2>

<h3>
Changes to perspectives</h3>
In order to address a number of common problems encountered by novice users,
the default behavior of some perspective actions has been modified.
<p>1) The default behavior for "Open Perspective" has been changed from
"open in current window" to "open in new window".&nbsp; This was done to
clarify the separation between state in one perspective and another.
<p>2) A perspective reuse strategy has been implemented in the workbench,
and is "on" by default.&nbsp; If an object is opened once (using Open Perspective
in the Navigator), you get a new page (in implementation terms).&nbsp;
If the object is opened again, and a page is already open for the same
object, the old page will be activated and the active perspective type
will be changed.&nbsp;&nbsp; This was done to avoid the creation of duplicate
perspectives, unless the user explicitly asks for it.&nbsp; If two pages
are needed on the same object, you can now invoke Perspective > Clone to
create a second page with the same input and perspective type as where
the action is invoked.&nbsp;&nbsp; The "reuse perspective" option can be
turned off in the Workbench Preferences page.
<p>3) The contents of the Perspective > Open submenu are now determined
using a global "most recently used" list.&nbsp; As you switch from one
perspective to another, the list is updated with the new perspective (and
clipped at 7 items).&nbsp; This was done to avoid the frustration which
occurs when you switch from one perspective to another, then can't get
back to the first.&nbsp; In order to avoid menu reordering, the items are
sorted by perspective name.
<p>4) A drop down combo box has been added to the window toolbar, to change
the "perspective type" in a page.&nbsp; For instance, if you switch from
a "resource perspective" to a "java perspective", the existing views and
editors in the page will be re-arranged to suit the new perspective.&nbsp;
This makes it easy to switch between perspective types without losing the
open editors.
<h3>
New behaviour for view opening</h3>
If a view is opened within a perspective for the first time, it will open
as a fast view, floating view, or embedded view, depending on the user
preference (Workbench > Appearance).&nbsp; If a view is moved, closed,
and reopened, it will appear in the last position defined by the user.&nbsp;
The default value for this preference is "fast view" on all platforms.&nbsp;
On platforms which do not support floating views, the floating preference
is not visible.
<h3>
View Drag and Drop changes</h3>
In Eclipse, the size and position of a view may be changed by grabbing
the view title with the mouse, and dragging.
<br>This feature&nbsp; has led to a number of problems.
<p>1) If you click on the title bar of a view, and then move your mouse
to access the main toolbar or menubar, sometimes you don't release the
mouse button fast enough.&nbsp; In this situation a d&amp;d is started
and a detached window is created.&nbsp; The detached window looks a lot
like a view within a folder, so you may not notice it until much later,
after you do some other actions, and the floating window manifests itself.
<p>2) If you click on a view and then drag it, there is no obvious way
to cancel the drag just by putting the view back where it came from.&nbsp;
This creates a floating window, which you have to redrag to regain the
original layout.&nbsp; This also occurs with view folders.
<p>To resolve problem 1, the hysteresis for view movement has been bumped
from 8 to 10 pixels, so a (slightly) more deliberate effort is required
to begin the drag.
<p>To resolve problem 2, the behavior of drag and drop has been changed.&nbsp;
If you drag a view or folder out, then back over itself, the "reject cursor"
appears.&nbsp; If you release the mouse button at that point, the drag
is cancelled.&nbsp; In all other scenarios, the behavior is unchanged.
<h3>
New API for opening pages</h3>
An openPage method has been added to IWorkbench.&nbsp; If this method is
called, a page will be opened in a new window, or in the current page,
depending on the user preference as stated in the Workbench Preferences
page.&nbsp; If the active window is empty, the new page will be opened
in the active window, regardless of the user preference.
<br>The existing methods to open a page or window have been deprecated
(see API changes below).&nbsp; For backwards compatability, the behavior
of these methods will remain the same.
<br>From this point on, developers are expected to call the new method.&nbsp;
Existing code will continue to work without change.
<h3>
New API for refreshing viewers</h3>
There is a new API to refresh a structured viewer without having to update
labels for unaffected elements.&nbsp; See refresh(boolean updateLabels)
and refresh(Object element, boolean updateLabels) in org.eclipse.jface.viewers.StructuredViewer.&nbsp;
TableViewer has been changed to take advantage of this.
<h3>
API changes</h3>

<ul>
<li>
IWorkbench.openWorkbenchWindow(IAdaptable) is deprecated</li>

<li>
IWorkbench.openWorkbenchWindow(String, IAdaptable) is deprecated</li>

<li>
IWorkbenchWindow.openPage(IAdaptable) is deprecated</li>

<li>
IWorkbenchWindow.openPage(String, IAdaptable) is deprecated</li>
</ul>

<h3>
API additions</h3>

<ul>
<li>
Added IWorkbench.openPage(IAdaptable)</li>

<li>
Added IWorkbench.openPage(String, IAdaptable)</li>

<li>
Added StructuredViewer.refresh(boolean updateLabels)</li>

<li>
Added StructuredViewer.refresh(Object element, boolean updateLabels)</li>
</ul>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2001%2F12%2F11&chfieldto=2001%2F12%2F18&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2001/12/11 and 2001/12/18.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20011211
<h2>
What's new in this drop</h2>

<h3>
Project menu renamed to Workbench</h3>
The Project menubar menu has been renamed to Workbench to better reflect
the scope of the actions it contains.
<br>The menu id for this menu has not changed (in fact it is "workbench"
see IWorkbenchActionConstants.M_WORKBENCH).
<br>The Preferences menu item has been moved form the Window menu to the
Workbench menu.
<h3>
Changed UI for project deletion</h3>
When prompted whether to delete a project, it now uses radio buttons to
choose whether to delete the project's contents as well.
<br>This makes the Yes and No buttons work more consistently with the non-project
case.
<br>The default has been changed to not delete the contents.
<h3>
Adapters added for Task List and Resource Contribution adaption</h3>
Two new interfaces IContributorResourceAdapter and ITaskListResourceAdapter
have been added.
<br>ITaskListResourceAdapter has been added for objects that wish to define
an IResource that they are related to for updating purposes for the task
view.
<br>IContributorResourceAdapter has been added for objects that wish to
define an equivalent IResource for inclusion in object contributions, decorators
and properties pages.
<br>The current default adapters use the IAdaptable mechanism to get the
resource via adaptable.getAdapter(IResource.class) and so there will be
no change in the current behavior should these adapters not be defined.
<br>Please take care that menubarPath attributes used in the plugin.xml
for objectContributions are still valid for objects that will not be adaptable
to IContributorResourceAdapter.
<h3>
API changes</h3>

<ul>
<li>
Added org.eclipse.ui.IContributorResourceAdapter</li>

<li>
Added org.eclipse.ui.views.tasklist.ITaskListResourceAdapter</li>
</ul>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h3>
Decorator manager clarification</h3>
If an ILabelDecorator is defined using the org.eclipse.ui.decorator extension
the decorator manager will be added to it using addListener(ILabelProviderListener)
when the decorator is enabled and removed via removeListener(ILabelProviderListener)
when the decorator is disabled. Implementors of an org.eclipse.ui.decorator
extension should use the ILabelProviderListener passed to them to update
any views that are using the decorator manager mechanism.
<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2001%2F12%2F04&chfieldto=2001%2F12%2F11&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2001/12/04 and 2001/12/11.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20011127
<h2>
What's new in this drop</h2>

<h3>
<b>Contributing to Outline Context Menus</b></h3>
The workbench has added support to allow outline context menus to be registered
with the platform. Plug-ins will thus be able to contribute actions to
these menu's via the org.eclipse.ui.popupMenus extension point.
<p>The interface IPageBookViewPage has been introduced as an extension
of IPage. It defines the methods init(IPageSite) and getSite(). The method
init(IPageSite) is called before createControl in the page's lifecycle.
The IPageSite api includes the method registerContextMenu(String, MenuManager,
ISelectionProvider) to allow the context menus to be registered. The class
org.eclipse.ui.part.Page now implements IPageBookViewPage.
<p>Pages (e.g. content outline pages and property sheet pages) which extend
org.eclipse.ui.part.Page will simply need to perform the menu registration
(typically in their createControl method). Pages which implement IContentOutlinePage
or IPropertySheetPage (but do not extend org.eclipse.ui.part.Page) will
need to explicitly implement IPageBookViewPage. Typically this would involve
implementing the init(IPageSite) method to store a reference to the site
and then performing the menu registration in their createControl method.
<p>The org.eclipse.ui.examples.propertysheet and org.eclipse.ui.examples.readmetool
examples have been updated to demonstrate context menu registration and
contributing actions to such menus.
<h3>
<b>Demo of Perspective changes</b></h3>
In the <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/loss-of-context/Proposal.html">Loss
of Context RFC document</a> we proposed a number of changes to the perspective
feature.&nbsp; This build includes a demonstration of these changes.&nbsp;
To try them out, check "Try Version 2 Perspectives" in the Workbench preferences.&nbsp;
When you check this the following behavioral changes will come into effect.
<p>1. If you select Perspective > Open > X, the active perspective in the
page is changed.&nbsp; The old behavior, to create a new page, does not
occur.
<br>2. If you select an object in the Navigator, then invoke Open Perspective
> X, we search the workbench.&nbsp; If a window already exists within input
== selected object, that window is activated and the perspective is changed
in it.&nbsp; Otherwise, a new window is created.
<br>3. The drop down list box is visible in the tool bar.&nbsp; You can
use it to change the active perspective in the active page.
<br>4. The contents of any perspective menu are determined using an MRU
algorithm, and are consistent in every perspective.
<br>5. From any window, you can always get back to the root of the workspace
by invoking Window > Open Workbench.&nbsp; This is like the old VAJ behavior.
<h3>
API changes</h3>

<h3>
API additions</h3>

<ul>
<li>
Added IPageBookViewPage and IPageSite in package org.eclipse.ui.part, and
added IPageBookViewPage as an implemented interface on class Page.</li>
</ul>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2001%2F11%2F20&chfieldto=2001%2F11%2F27&product=Platform&component=UI&cmdtype=doit&&order=Bug+Number">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2001/11/20 and 2001/11/27.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20011120
<h2>
What's new in this drop</h2>

<h3>
Accelerator Tag added to Action Definitions</h3>
As the names of the modifier keys (Ctrl, Alt) are not localized in Eclipse,
defining an action accelerator using a translated label will not work (see
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=5216">bug
5216</a>).
<br>In order that accelerators can be used across all Locales the <i>accelerator</i>
tag has been added to the definition for an action so that the accelerator
can be defined via a keycode.
<p>The current method of specifying accelerators via the labels will continue
to work in locales where the labels use the English words for the control
keys (like Japanese).
<p>The accelerator is an integer or String&nbsp; that is used to specify
the keycode of the accelerator for the action. The integer value used is
the one resulting from a bitwise OR of zero or more SWT key modifier masks
(i.e. SWT.CTRL or SWT.ALT) and a character code. For example, for Ctrl+Z
use SWT.CTRL | 'Z' = (1&lt;&lt;18)|'Z' = 262234.
<p>If you wish to use the string directly use it as you would have for
the label (i.e. Ctrl+Z from the above example).
<br>Such strings should go directly in the plugin.xml, and should not be
translated in the plugin.properties file, since the strings for the modifier
keys are not localized.
<br>Note that this will require care to ensure that the translated, human-readable
accelerator text in the label (in the .properties file) corresponds to
the assigned accelerator (in the plugin.xml).
<p>Two of the actions we ship should use this tag:
<p>org.eclipse.jdt.ui
<br>&nbsp;OpenTypeAction.label=Open &amp;Type...@Ctrl+Shift+T
<p>&lt;action id="org.eclipse.jdt.ui.actions.OpenType"
<br>&nbsp;&nbsp; menubarPath="workbench/wbEnd"
<br>&nbsp;&nbsp; toolbarPath="Normal/Java"
<br>&nbsp;&nbsp; label="%OpenTypeAction.label"
<br>&nbsp;&nbsp; tooltip="%OpenTypeAction.tooltip"
<br>&nbsp;&nbsp; icon="icons/full/ctool16/opentype.gif"
<br>&nbsp;&nbsp; accelerator="Ctrl+Shift+T"
<br>&nbsp;&nbsp; class="org.eclipse.jdt.internal.ui.actions.OpenTypeAction"/>
<p>org.eclipse.search
<br>&nbsp;OpenSearchDialogAction.label = &amp;Search...@Ctrl+H
<p>&lt;action id="org.eclipse.search.ui.OpenSearchDialogAction"
<br>&nbsp;&nbsp; menubarPath="edit/find"
<br>&nbsp;&nbsp; toolbarPath="Normal/Search"
<br>&nbsp;&nbsp; label="%OpenSearchDialogAction.label"
<br>&nbsp;&nbsp; tooltip="%OpenSearchDialogAction.tooltip"
<br>&nbsp;&nbsp; icon="icons/full/ctool16/search.gif"
<br>&nbsp;&nbsp; accelerator="Ctrl+H "
<br>&nbsp;&nbsp; class="org.eclipse.search.internal.ui.OpenSearchDialogAction"/>
<h3>
API changes</h3>

<h3>
API additions</h3>

<ul>
<li>
Added accelerator attribute to action elements in extension points which
take actions (actionSets, editorActions, viewActions).</li>

<li>
Added setAccelerator(int keyCode) to IAction and Action in org.eclipse.jface.</li>
</ul>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>

<p><br>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20011120
<h2>
What's new in this drop</h2>
Object contributions on resources show up in browsers that show objects
that adapt to IResource.
<br>The ObjectContribution mechanism has been changed such that the actions
defined on IResource will also be applied to objects that adapt to IResource
(like IJavaElement) thereby eliminating the need to specify the same actions
in multiple plug-ins due to a wrappered type being displayed in different
views.
<br>As a result, there will be some duplication for certain compare and
vcm functions using the current plug-in definitions. These will eventually
have to be removed.
<br>Although this does not change any existing APIs or extension points,
it does change the behavior of object contributions which contribute to
IResource.
<br>This may cause duplication if a contribution applies to both IResource
and to a class which wrappers IResource via the IAdaptable mechanism.
<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
The following PRs were fixed by the UI team (includes PRs fixed since build
207):
<p>Bug 1824&nbsp; [JFace Text] 50 reconciling threads for 4 editors opened
(1GFXMV8)
<br>Bug 1847&nbsp; Work with help team for example integration (1G5T6A8)
<br>Bug 1850&nbsp; EditableTable (1G5T6MC)
<br>Bug 1851&nbsp; WALBAKCK - Long Operation (1G5T6TP)
<br>Bug 1974&nbsp; 5 line file takes 7 seconds to open (1GD0KY4)
<br>Bug 2074&nbsp; PropertySheet should expand categories by default (1GE36VQ)
<br>Bug 2569&nbsp; [JFace Text] Content assist list truncated (1GG1W9B)
<br>Bug 2577&nbsp; [Standard Components] Property sheet: up/down arrow
causes a
<br>Bug 2904&nbsp; [JFace Text] PropagatingFontFieldEditor has moved (1GKKL13)
<br>Bug 4975&nbsp; Status area too short
<br>Bug 5456&nbsp; Esc doesn't cancel code assist anymore
<br>Bug 5462&nbsp; Can't cancel code assist anymore
<br>Bug 5560&nbsp; ESC on rename dialog renames the file
<br>Bug 5586&nbsp; problem with PageBookView code changes
<br>Bug 5721&nbsp; Welcome not disabled
<br>Bug 5922&nbsp; Property page ordering broken because of info page
<br>Bug 5993&nbsp; Widget has the wrong parent
<br>Bug 6030&nbsp; Need to allow filenames with no extensions when registering
<p>The following PRs were closed with no action by the UI team (includes
PRs closed since build 207):
<p>Bug 1839&nbsp; No support for 640x480 resolution (1GELIAS)
<br>Bug 2042&nbsp; SEVERE: Perspective lost (1GDSH6F)
<br>Bug 5753&nbsp; Make dialogs modal on with respect to a single perspective
<br>Bug 5788&nbsp; EC: Build on save preference text unclear...
<br>Bug 5869&nbsp; eclipse.exe throwing and exception
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20011113
<h2>
What's new in this drop</h2>

<h3>
Dialog to switch between editors</h3>
You can now open a dialog which allows you to switch between editors by
choosing Window / Switch to Editor..., or by pressing CTRL+ALT+S.
<br>It also supports saving modified editors, and closing editors.
<h3>
Accelerator support for switching between views and editors</h3>
You can now use CTRL+F6 to switch between editors, and CTRL+F7 to switch
between views (includes the editor area).
<br>The list is shown in most recently used order.&nbsp; The list stays
up while CTRL is held down, then switches to the selected item when CTRL
is released.
<br>Pressing the function key again goes to the next item.&nbsp; Holding
SHIFT down goes the other way.&nbsp; You can also use the arrow keys.
<br>The editor switcher replaces the previous CTRL+F6 support for cycling
between editors (released in build 207).
<p>Known problems:
<ul>
<li>
There is a blank line at the bottom of the switchers (apparently an SWT
sizing issue).</li>

<li>
Not all views always show in the view switcher when a perspective is newly
opened.&nbsp; Workaround: when a view is activated with the mouse, it will
appear in the list.</li>

<li>
ESC is not hooked properly.&nbsp; It will cancel the switcher, but also
activate the Start menu on Windows.&nbsp; Workaround: use any other key,
e.g. SPACE, to cancel.</li>
</ul>

<h3>
Accelerator to activate editor</h3>
F12 now activates the editor.&nbsp; This is useful when using the view
switcher above, to quickly get back to the editor from another view.
<br>We had to back out of using ESC to activate the editor, because it
broke other uses of ESC, e.g. rename in Navigator, task editing, code assist.
<h3>
Accelerators to activate specific views</h3>
You can now use accelerators to activate specific views.&nbsp; Eclipse
UI defines the following view accelerators:
<br>&nbsp;
<table BORDER COLS=2 WIDTH="50%" >
<tr>
<td><b>View</b></td>

<td><b>Accelerator</b></td>
</tr>

<tr>
<td>Navigator</td>

<td>CTRL+ALT+N</td>
</tr>

<tr>
<td>Bookmarks</td>

<td>CTRL+ALT+B</td>
</tr>

<tr>
<td>Outline</td>

<td>CTRL+ALT+O</td>
</tr>

<tr>
<td>Properties</td>

<td>CTRL+ALT+P</td>
</tr>

<tr>
<td>Tasks</td>

<td>CTRL+ALT+K</td>
</tr>
</table>

<p><b>Note</b>: The view accelerator support is experimental.&nbsp; The
assigned accelerators may change, or this feature may be removed completely.
<p>Known problems:
<ul>
<li>
Accelerators only work for views with entries in the Perspective / Show
View menu.&nbsp; It is currently possible to have a view that is visible
in the window, but with no entry in the Show View menu.&nbsp; Its accelerator
(if any) will therefore not work.</li>
</ul>

<h3>
PreferenceConverter expanded to provide support for FontData arrays</h3>
The PreferenceConverter now supports the setting and getting of FontData
arrays as well as single instances of FontDatas in order to be consistent
with the way FontDatas are specified in the font resources for the FontRegistry.&nbsp;
See below for API additions.
<br>&nbsp;
<h3>
API changes</h3>

<h3>
API additions</h3>

<ul>
<li>
Added IntegerFieldEditor.setValidRange(int min, int max) in package org.eclipse.jface.preference.</li>

<li>
Added the following to PreferenceConverter in package org.eclipse.jface.preference:</li>

<br>public static FontData[] getDefaultFontDataArray(IPreferenceStore,
String)
<br>public static FontData[] getFontDataArray(IPreferenceStore, String)
<br>public static void setDefault(IPreferenceStore, String, FontData[])
<br>public static void setValue(IPreferenceStore, String, FontData[])
<p>Also the code used to determine the validity of FontDatas by the FontRegistry
has now been made public. The new method bestData takes an array of FontDatas
and returns the first one for which there is corresponding font defined.
If it cannot find one it returns the first entry. If the array is empty
null is returned.
<br>public FontData bestData(FontData[], Display)</ul>

<h3>
Other highlights</h3>
Added navigation accelerators:
<ul>
<li>
CTRL+F6 to cycle between editors (+ SHIFT to go the other way) -- (has
known problem whereby order is not persisted between sessions)</li>

<li>
ESC to activate editor</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
The following PRs were fixed by the UI team:
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse SDK Build 207 - November 1, 2001
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>
Added navigation accelerators:
<ul>
<li>
CTRL+F6 to cycle between editors (+ SHIFT to go the other way) -- (has
known problem whereby order is not persisted between sessions)</li>

<li>
ESC to activate editor</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
The following PRs were fixed by the UI team (includes PRs from builds 202
- 206):
<p><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5107">Bug 5107</a>&nbsp;
Duplicate mnemonic in Perspective menu: Open and Close all
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=4938">Bug 4938</a>&nbsp;
Deleting Project with Read-only files will cause non-readonly files to
be erased if user said to NOT erase them (1GLG2WT)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2968">Bug 2968</a>&nbsp;
TaskListMarker violates API (1GL2XHA)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2794">Bug 2794</a>&nbsp;
[UI] org.eclipse.ui.actionSets doc wrong (1GJNBT8)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2694">Bug 2694</a>&nbsp;
Editor Selection Dialog: UI suggestions (1GI6RPE)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2682">Bug 2682</a>&nbsp;
[UI] EC: Can't contribute submenu items (1GI3XO6)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2672">Bug 2672</a>&nbsp;
[UI] EC: Action delegate's concrete action should have same ID (1GHUJUZ)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2627">Bug 2627</a>&nbsp;
[UI] Dragging view border near scroll bar detaches view (1GHDIIU)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2601">Bug 2601</a>&nbsp;
[UI] Finish button still grayed out even though file name is pasted (1GGYVYG)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2558">Bug 2558</a>&nbsp;
[UI] Unzoom can cause view to move tab folder (1GFOGFE)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2318">Bug 2318</a>&nbsp;
[UI] Type Hierarchy View resize (1GENYR4)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2304">Bug 2304</a>&nbsp;
Action Set Actions appear in reverse order (1GENP9K)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2240">Bug 2240</a>&nbsp;
[UI] Unzoom occurs if you select file in navigator (1GEASOF)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2178">Bug 2178</a>&nbsp;
[JFace] Cannot select root of hierarchy view (1GE92IL)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=1911">Bug 1911</a>&nbsp;
[UI] Popup Menu Extension produces duplicate results in static menu (1GC2RTS)
<br>1GL4ZQA: ITPUI:WINNT - Workbench crash
<br>1GKKR4V: ITPUI:ALL - Referencing the wrong perspective icon in plugin.xml
<br>1GKESDP: ITPUI:WIN2000 - WizardDialog comment wrong
<br>1GKEPV7: ITPUI:ALL - English: Missing punctuation
<br>1GKEPJH: ITPUI:WINNT - Outline View should wrap text
<br>1GKDG0C: ITPUI:WINNT - Reset does not work on deleted perspective
<br>1GKD8FV: ITPUI:WIN98 - Japanese - default text font can not display
japanese characters
<br>1GKCX6Y: ITPUI:WIN2000 - ActionSetLabelProvider assumes &amp; is first
char
<br>1GKCX37: ITPUI:WIN2000 - PerspectiveDescriptor.restoreState should
use ATT_SINGLETON
<br>1GKAYD6: ITPUI:WINNT - AboutDialog.createDialogArea is using wrong
GridData constant
<br>1GKA7RL: ITPUI:WIN2000 - Compare: last line on right clipped
<br>1GK9IOA: ITPUI:ALL - IEditorActionDelegate is not initialized correctly
<br>1GK7EJV: ITPUI:WINNT - Startup should fail if missing product.ini or
platform.ini
<br>1GJZYYB: ITPUI:ALL - Phantom resources
<br>1GJYMG4: ITPUI:WINNT - no context help for some menus/dialogs
<br>1GJWMGJ: ITPUI:WIN98 - Next &amp; Previous perspective labels changed?
<br>1GJWAJ9: ITPUI:WIN2000 - Netscape reference in shipped doc
<br>1GJUNL6: ITPUI:ALL - EC: PropertySheetViewer.setInput() does not save
editor value.
<br>1GJUH0A: ITPUI:Linux - Critical: Full Crash on Linux: While Printing
<br>1GJUAO7: ITPUI:WINNT - NPE on shutdown
<br>1GJP153: ITPUI:EC: root property sheet entry does not do a dispose
<br>1GJNB52: ITPUI:ALL - ToolItems in EditorToolBarManager can get out
of synch with the state of the IAction
<br>1GJ8HCU: ITPUI:ALL - XML example in org.eclipse.ui.viewActions doc
wrong
<br>1GIV8TL: ITPUI:WIN2000 - Can't open files in Notepad or Wordpad
<br>1GITIG6: ITPUI:ALL - H-shell: OK button still grayed out in Save As
dialog even though file name is pasted
<br>1GIEH2I: ITPUI:WINNT - TaskListContentProvider should cache markers
<br>1GI7HBZ: ITPUI:ALL - Cancel saving a file causes error
<br>1GI58G1: ITPUI:WINNT - Collator is not a singleton
<br>1GHUA5I: ITPUI:ALL - Error in ProductInfo.readConfigurationPreferences
<br>1GHQHGH: ITPUI:WINNT - Should cache the alternateMask in OpenPerspectiveMenu
<br>1GHOHW6: ITPUI:WINNT - PageBookView not disposing default page
<br>1GHHIO2: ITPUI:ALL - Goto Resource dialog resizing needs rework
<br>1GHC26Y: ITPUI:WINNT - Effeciency issues
<br>1GH2VTG: ITPUI:WIN98 - Properties view: enabling categories collapses
list
<br>1GGZ208: ITPUI:WIN2000 - ActionSetLabelProvider trims everything before
&amp;
<br>1GFOF1F: ITPUI:WIN2000 - Move by drag-and-drop uses multiple workspace
operations
<br>1GFMFIE: ITPUI:WINNT - Replace perspective with no perspective open
is a no op
<br>1GFBKRR: ITPUI:WIN2000 - minor: PreferencePage's javadoc comment has
a typo error
<br>1GFBJ9K: ITPUI:WIN2000 - Yes to All no longer works for DND import
<br>1GF9LG3: ITPUI:ALL - File->New menu &amp; New Wizard tool button diff...why?
<br>1GF7NAD: ITPUI:ALL - Export to zip has .jar in the list of names
<br>1GF68L0: ITPUI:ALL - Should hide closed project when selecting folder.
<br>1GF66A4: ITPUI:WIN98 - Outline has no help
<br>1GF5VPX: ITPUI:ALL - File MRU List is enabled when no perspectives
open.
<br>1GEZB8G: ITPUI:WIN2000 - Menu: delete is enabled with no resource
<br>1GEYPZU: ITPUI:ALL - Perspective windows should remember size of window
<br>1GEV72H: ITPUI:ALL - Goto resource should not be updated when arrow
or shift is pressed.
<br>1GEUXQL: ITPUI:WINNT - WorkbenchWindow#getMenuBarManager change comment
<br>1GEUW49: ITPUI:ALL - Last files opened menu items does nothing when
perps close
<br>1GET7WN: ITPUI:ALL - Add Bookmark is enabled when nothing is selected
<br>1GEPLQO: ITPUI:WIN98 - Close All enabled when no pages exist
<br>1GEPKMG: ITPUI:WIN98 - Cannot drag editor tab to correct location
<br>1GENVF4: ITPUI:ALL - The tasklist combo cell editor does not work correctly
<br>1GENTWQ: ITPUI:WIN98 - Import dialog should expand top folder
<br>1GENK55: ITPUI:WIN2000 - File Listbox: displays wrong icon for certain
file name
<br>1GEIC67: ITPUI:WINNT - Getting a focus callback before part creation
<br>1GE8OSQ: ITPUI:ALL - Inconsistent English in the status for the Task
Bar
<br>1GE8OFD: ITPUI:WIN2000 - Message in outline should have margins
<br>1GE6UQC: ITPUI:ALL - Drag out of folder leaves single tab
<br>1GDCVPF: ITPJUI:WINNT - cannot cancel build
<br>1GD7JX5: ITPUI:ALL - Menu items in nav popup New sub menu
<br>1GD0BN5: ITPUI:ALL - Set focus to container name (when empty) in folder
wizard
<br>1GCT3F5: ITPUI:WINNT - Poor details when moving fails
<br>1GCROF1: ITPUI:WINNT - Wizard banner misalignment
<p>The following PRs were closed with no action by the UI team (includes
PRs from builds 202 - 206):
<p><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5403">Bug 5403</a>&nbsp;
NPE on closing embedded netscape
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5259">Bug 5259</a>&nbsp;
EC: Project delete removes files on disk even when "no" selected
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2791">Bug 2791</a>&nbsp;
[UI] EC - SaveAll does not work right (1GJJG1M)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2294">Bug 2294</a>&nbsp;
Fast View can be resized only once (1GELX93)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2293">Bug 2293</a>&nbsp;
NPE during build (1GELWYX)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2204">Bug 2204</a>&nbsp;
Opening PDF files. (1GEAHMI)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=2061">Bug 2061</a>&nbsp;
Usability: "Close All" is rude (1GDY6HE)
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=1914">Bug 1914</a>&nbsp;
F2 should invoke rename? (1GC2UNE)
<br>1GFDB1N: ITPUI:WINNT - DCR: Print from default text editor
<br>1GEYEH3: ITPUI:WIN2000 - Copy shortcut not responding in Navigator
on startup
<br>1GEV2DL: ITPUI:ALL - Open Persp modifier keys different on win32 &amp;
linux
<br>1GEUWWH: ITPUI:WIN2000 - Welcome: too tied to CVS?
<br>1GEUW7K: ITPUI:WIN2000 - Welcome: Creating Java project does not show
Java perspective
<br>1GETC1F: ITPUI:ALL - View left stranded in folder
<br>1GET01H: ITPUI:ALL - Why is the welcome page an editor?
<br>1GEJN27: ITPJUI:WINNT - new project wizard should have selected "All
Projects" if you open it
<br>1GEI1GR: ITPJUI:WINNT - button in import wizzard should not be enabled
before selecting a destination project/folder
<br>1GEAOJK: ITPUI:WIN98 - Shift-select doesn't always work in Navigator
<br>1GEAMVM: ITPUI:WIN98 - Wrong view shown when tab order changes
<br>1GEAD4H: ITPUI:ALL - Text font should be set on one preference page
<br>1GDIP42: ITPJUI:WINNT - Smoke 105: Finish isn't default in Create Project
wizard
<br>1GD0BXF: ITPUI:ALL - File save as dialog banner area empty
<br>1FW3H9W: ITPUI:ALL - ExternalEditor::open may fail if path includes
spaces
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse SDK Build 201 - September 21, 2001
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
The following PRs were fixed by the UI team:
<p>1GK7H21: ITPUI:WIN2000 - Default text editor comes up black
<br>1GK0388: ITPJCORE:WIN2000 - replace with local history: selecting (workspace)
deletes source
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse SDK Build 200 - September 19, 2001
<h2>
What's new in this drop</h2>

<h3>
API changes</h3>

<h3>
API additions</h3>

<h3>
Other highlights</h3>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
The following PRs were fixed by the UI team:
<p>1GIV495: ITPUI:ALL - TextMergeViewer doesn't reveal token diffs horizontally
<br>1GIUS6L: ITPUI:ALL - TextMergeViewer uses deprecated Thread.stop()
<br>1GIIBHM: ITPUI:WIN2000 - Problems when comparing zip files
<br>1GI5DN9: ITPUI:WIN2000 - Conflicting token deletions don't show up
in text compare viewer
<br>1GI3KUR: ITPJUI:WIN2000 - Compare: double-click in versions list closes
view
<br>1GHBPA1: ITPVCM:WINNT - Compare - next change arrow switches to wrong
file
<br>1GGZ8DO: ITPJUI:WIN - MergeViewer invalid selection range
<br>1GGQQH3: ITPJUI:WINNT - Compare hightlights a non-change instead of
the change
<br>1GGNX9W: ITPVCM:Linux - Internal error comparing out of sync resource
<br>1GGNKHN: ITPJUI:ALL - No progress during replace with local history
<br>1GG0ELM: ITPVCM:ALL - Local history displayed some of Today's items
as Yesterday
<br>1GFMLFB: ITPUI:WIN2000 - files that are out of sync with the file system
appear as empty
<br>1GFFR4B: ITPUI:WIN98 - local history is misleading
<br>1GEUX0D: ITPJUI:ALL - not state aware toolbar button in compare
<br>1GBM0IL: ITPUI:WINNT - CompareEditorInput#save should throw CoreException
</body>
</html>
