<!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="Microsoft FrontPage 4.0">
   <title>Eclipse Platform Release Notes - Workbench</title>
</head>
<body>

<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20021107
<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>

<p>
<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=25818">Bug 25818</a> [Workbench] PageBookView causes editors to leak 
<p>

<hr SIZE=0 WIDTH="100%">
Eclipse Integration Build 20021023
<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>

<p>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F10%2F18&chfieldto=2002%2F10%2F23&product=Platform&component=UI&cmdtype=doit&order=Bug+Number&&target_milestone=2.0.2"">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/10/18 and 2002/10/23.</p>

<p>

&nbsp;

<hr SIZE=0 WIDTH="100%">

<p>
&nbsp;</p>
Eclipse Integration Build 20021018
<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>

<p>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F10%2F16&chfieldto=2002%2F10%2F18&product=Platform&component=UI&cmdtype=doit&order=Bug+Number&&target_milestone=2.0.2"">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/10/16 and 2002/10/18.</p>

<p>

&nbsp;

<hr SIZE=0 WIDTH="100%">

<p>
&nbsp;</p>
Eclipse Integration Build 20021016
<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>

<p>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F10%2F09&chfieldto=2002%2F10%2F16&product=Platform&component=UI&cmdtype=doit&order=Bug+Number&&target_milestone=2.0.2"">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/10/09 and 2002/10/16.</p>

<p>

&nbsp;

<hr SIZE=0 WIDTH="100%">

<p>
&nbsp;</p>
Eclipse Integration Build 20021009
<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>

<p>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F10%2F03&chfieldto=2002%2F10%2F09&product=Platform&component=UI&cmdtype=doit&order=Bug+Number&&target_milestone=2.0.2"">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/10/03 and 2002/10/09.</p>

<p>

&nbsp;

<hr SIZE=0 WIDTH="100%">

<p>
&nbsp;</p>
Eclipse Integration Build 20021003
<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>

<p>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F10%2F20&chfieldto=2002%2F10%2F03&product=Platform&component=UI&cmdtype=doit&order=Bug+Number&&target_milestone=2.0.2"">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/10/02 and 2002/10/03.</p>

<p>

&nbsp;

<hr SIZE=0 WIDTH="100%">

<p>
&nbsp;</p>
Eclipse Integration Build 20021002
<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>

<p>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F09%2F25&chfieldto=2002%2F10%2F02&product=Platform&component=UI&cmdtype=doit&order=Bug+Number&&target_milestone=2.0.2"">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/09/25 and 2002/10/02.</p>

<p>

&nbsp;

<hr SIZE=0 WIDTH="100%">

<p>
&nbsp;</p>
Eclipse Integration Build 20020925
<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>

<p>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F09%2F17&chfieldto=2002%2F09%2F25&product=Platform&component=UI&cmdtype=doit&order=Bug+Number&&target_milestone=2.0.2"">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/09/17 and 2002/09/25.</p>

<p>

&nbsp;

<hr SIZE=0 WIDTH="100%">

<p>
&nbsp;</p>
Eclipse Integration Build 20020917
<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>

<p>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F08%2F14&chfieldto=2002%2F09%2F17&product=Platform&component=UI&cmdtype=doit&order=Bug+Number&&target_milestone=2.0.2">Click
here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
between 2002/08/14 and 2002/09/17.</p>

<p>

&nbsp;

<hr SIZE=0 WIDTH="100%">

<p>
&nbsp;</p>
Eclipse Integration Build 20020814
<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>

<p>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F08%2F13&chfieldto=2002%2F08%2F14&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/08/13 and 2002/08/14.</p>

<p>

&nbsp;

<hr SIZE=0 WIDTH="100%">

<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020814
<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>

<p>
<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&chfield=bug_status&chfieldfrom=2002%2F06%2F27&chfieldto=2002%2F08%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/06/27 and 2002/08/13.</p>

<p>

&nbsp;

<hr SIZE=0 WIDTH="100%">

<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020627
<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>

<p>

&nbsp;

<hr SIZE=0 WIDTH="100%">

<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020626
<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>

<h1>

</h1>

<hr SIZE=0 WIDTH="100%">

<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020625
<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>
20256 - Why switch to resource persp when opening Welcome editor?
<h1>

</h1>

<hr SIZE=0 WIDTH="100%">

<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020624
<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>
18692 - [External Tools] Including XML files in ANT does not work an
<br>20599 - [ExternalTools] F3 behaves differently than F2 with variable
<br>20635 - [External Tools] Unable to run Ant build-files which include
<br>20796 - org.eclipse.ui still has icons\basic directory
<h1>

</h1>

<hr SIZE=0 WIDTH="100%">

<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020621
<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>
1938 - [JFace] ICellModifier.modify() is passed Item, not element (
<br>9082 - Debug action set contributed items not "filled"; accerlerato
<br>18469 - Welcome text for workbench should link to Welcome... dialog
<br>18470 - Welcome dialog list should be multi-select
<br>19267 - Types view show types of wrong package
<br>20088 - Placement of "Reset Toolbar Layout"
<br>20336 - [External Tools] Need variable to identify build kind
<br>20403 - [External Tool Builders - names truncated
<br>20404 - [External Tools] NPE in External Tool Builders property page
<br>20405 - Stack overflow
<br>20471 - WWinKeyBindingService property listener using == instead of
<br>20600 - TVT2:'About...' page:garbled char in "System info" page
<br>20609 - External Tools: NPE if target has no name
<br>20617 - Missing help context IDs for Keyboard Shortcuts actions
<br>20625 - 'Save all' not always enabled appropriately
<br>20720 - TVT2: Wrong F1 help contents
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020619
<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>
12752 - Delete action factories
<br>14046 - Make drag and drop adapters public
<br>15950 - Doc: editorActions doc doesn't adequately describe meaning
o
<br>17477 - Coolbar doesn't wrap to multiple lines
<br>17722 - Creating TaskList is slow
<br>18047 - Internal Error copying a file in the navigator.
<br>18481 - TVT: corrupt quote character in new plugin wizard
<br>18682 - [External Tools] "tool's file does not exist"/"could not fin
<br>19106 - Unable to restore MRU list message sent to log
<br>19935 - Leaking jface.text.source.CompositeRuler$CompositeRulerCanva
<br>20065 - About Features dialog displays plugin name, not Feature name
<br>20073 - TVT2:Preference-perspective panel: buttons Delete and Reset
<br>20084 - AssertionFailed in WelcomeEditor.dispose()
<br>20093 - Double entries on Java project properties
<br>20162 - edit menu entries show up 3 times
<br>20166 - NPE in ClassFileEditorActionContributor while restoring work
<br>20178 - Lack of a product welcome.xml specification breaks Welcome..
<br>20193 - NPE after importing Editor page preferences
<br>20245 - line numbering does not obey regional settings
<br>20266 - Pin button looks pressed.
<br>20347 - IllegalArgumentException pressing Ctrl+F6
<br>20380 - Single click mode does not give focus to editor
<br>20505 - Multiple hover threads are running.
<br>20506 - TVT2: possible problems with keys in UI
<br>20542 - [External Tools] Need to pull out support for external tool
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020612
<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>
10025 - Resizing views should not use height ratios
<br>10774 - Shortcut for deleting current line
<br>13367 - Ctrl+Up and Ctrl+Down don't match emacs behaviour
<br>16907 - Moving or copying a file to a different folder containing a
<br>16962 - Fastview thumbtack Icon/pressed state confusing
<br>17071 - Emacs: Ctrl+Z should Scroll Up
<br>17086 - Emacs: problems with mark
<br>17342 - R1.0 workspace: Task view settings lost
<br>17429 - Ctrl+X U in emacs is UNDO.
<br>18232 - Performance: Replace All very slow
<br>18525 - Calls to IWorkbenchPart.dispose() should be wrapped in an IS
<br>18579 - Selection event not fired
<br>18597 - Missing a seperator in the Run menu
<br>18692 - [External Tools] Including XML files in ANT does not work an
<br>18732 - Tooltip wrong on start up for label retarget toolitem from
a
<br>18821 - Warning should be thrown if an Ant classpath entry does not
<br>19150 - Leaking RetargetAction and LabelRetargetAction etc on editor
<br>19267 - Types view show types of wrong package
<br>19302 - DefaultEncodingSupport#initialize() should take ITextEditor
<br>19321 - Need help context IDs everywhere
<br>19372 - Dropping folder into a container with a folder of the same
n
<br>19415 - Emacs: File->New->Other accelerator not cleared
<br>19426 - Editor name in tab changes
<br>19490 - Emacs: Keybindings not getting Alt+R
<br>19672 - MSWord in-place loses scroll bars
<br>19707 - Duplicate CoolBar Contribution Items
<br>19742 - System info does not indicate 4th version number field
<br>19753 - [external tools] *_loc are limited by leading slash
<br>19832 - Editor switcher should use Ctrl+E
<br>19842 - Ctrl+D is associated with 2 action in emacs.
<br>19848 - Action multiple set contributions lost when one action set
r
<br>19872 - Go to Line should use ".." instead of "..."
<br>19900 - Emacs: Alt+&lt; bindings
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020611
<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>
2229 - Usability: Progress Dialog on Save is distracting (1GEAR0D)
<br>11731 - Modal dialog does not appear
<br>16180 - Why is the Ant graphic used for external tools
<br>16639 - Ant Preference Page need mnemonics
<br>17024 - Emacs key bindings for find actions are non-standard
<br>18372 - get rid of all fragment.properties in UI fragments
<br>18393 - Persistent hover help
<br>18407 - Run External - Command variables not working?
<br>18499 - [External Tools] Locations with spaces cause some tools to
f
<br>18630 - Name in task tray does not include perspective
<br>18668 - Deprecated RuleBasedPartitioner is broken
<br>18682 - [External Tools] "tool's file does not exist"
<br>18734 - Problem with new preference import feature
<br>18738 - Typo in preference import: "Preferences importeded..."
<br>18754 - System info plugin registry information contains extra tabs
<br>18819 -&nbsp; About dialog does not close after showing system info
<br>18919 - Out of handles when closing project
<br>19101 - View tab contains title text
<br>19152 - Import and Export on Preference page causes numerous mnemoni
<br>19165 - Poor hit-testing during DND in Navigator View
<br>19191 - NPE in EditorManager when closing workbench
<br>19204 - Missing mnemonics for Workbench preference page
<br>19206 - Editor is "Revert"-ed when pressing apply in Workbench->edit
<br>19223 - Label in upper case instead of lower for Workbench > Decorat
<br>19295 - System Summary format hard to read for change log
<br>19340 - Export preferences overwrites files without warning
<br>19343 - Export preferences doesn't append file extension
<br>19358 - NPE in WorkbenchPage.busyResetPerspective
<br>19368 - Task View: Autofix caused bad dialog
<br>19511 - NPE zooming on stale editor
<br>19517 - External tool uses focused resource instead of selected reso
<br>19555 - ConcurrentModificationException in AbstractMarkerAnnotationM
<br>19612 - F2- NullPointer using Find/Replace dialog
<br>19786 - multiple status items when opening editors
<br>19790 - "Lock the ToolBars" option uses capital "B"
<br>19798 - When all perspectives are closed, we should exclude the "-
"
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020608
<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>
16666 - NullPointerException in preferences dialog with hover-select
<br>16780 - New file wizard doesn't give focus to 'File name' field
<br>18641 - IllegalArg exception while deleting projects/closing editors
<br>18725 - Create name field does not have focus in new project wizard
<br>18748 - External Tools Configuration dialog Details field is too sho
<br>18774 - External tools NPE
<br>18899 - Error activating view/walkback log
<br>18925 - Editor coolbar contributions not disabled
<br>18929 - Switching view to fast view leaves a "zumbi" view around
<br>19207 - [External Tools] Shell script cannot be cancelled and can ha
<br>19238 - Widget is disposed and null pointer exceptions changing pers
<br>19337 - Group box labels should use consistent capitalization
<br>19498 - Severe: workbench crash after deleting project with open edi
<br>19516 - Wrong file separator for External Tools Variables
<br>19540 - XMLMemento.createReadRoot can return null
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020607
<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>
Bug 16944 need default hpux fonts to be defined
<br>Bug 18654 NPE in GotoActionGroup
<br>Bug 18714 Dialog opens up off the screen
<br>Bug 18717 NullPointerException in ApplicationWindow when no menubar
added
<br>Bug 19247 StringFieldEditor: width != UNLIMITED is ignored
<br>Bug 19300 ObjectContributions call toString()
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020601
<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%2F30&chfieldto=2002%2F06%2F01&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/30 and 2002/06/01.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020530
<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%2F29&chfieldto=2002%2F05%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/05/29 and 2002/05/30.
<p>
<hr SIZE=0 WIDTH="100%">
<h1>
Eclipse Platform Build Notes<br>
Workbench</h1>
Eclipse Integration Build 20020529
<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%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/05/17 and 2002/05/29.
<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>
