<!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="GENERATOR" content="Microsoft FrontPage 4.0">
   <meta name="Author" content="IBM">
   <title>Eclipse Platform Release Notes - Desktop</title>
</head>
<body>

<h1>
Eclipse Platform Build Notes</h1>

<h1>
Text Editor Support (including JFace Text)</h1>

<p><br>Eclipse SDK Build 20020601
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
Introduced the concept of setRedraw(boolean) on text viewers. See ITextViewerExtension.setRedraw(boolean).
This allows to avoid any UI updating while manipulating the viewer's document.
While redraw == false, the viewer selection is still available, i.e. setSelectedRange
and getSelectedRange can be used and always refer to the actual state of
the viewer's document. However, no selection change event and no view port
changes are sent out. TextEvent (See ITextListener) has been extented to
carry the viewer's redraw flag.</li>

<li>
Introduced the concept of&nbsp; a "sequential rewrite mode" on documents.
See IDocumentExtension. This informs a document about an upcoming sequence
of non-overlapping consecutive replace commands. If capable the document
can use this information to operate on an optimized text store. In JFace
Text, Document operates on a SequentialRewriteTextStore during this period.</li>

<li>
Reworked text shifting, line delimiter conversion, and find/replace to
use the newly introduced concepts.</li>

<li>
Reworked the reactivation behavior of text hovers.</li>

<li>
Pushed text hover information computation in a background thread.</li>

<li>
Reactivated and extended the concept of widget token management. See IWidgetTokenOwner,
IWidgetTokenKeeper.</li>

<li>
Extended text operations so that they can externally be enabled/disabled.
See ITextOperationTargetExtension. Currently, this is only used for content
assist in the source viewer. All other text operations ignore the enable
flag.</li>

<li>
Improved incremental search behavior.</li>

<li>
Further code cleanup.</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
See bugzilla.
<p>
<hr WIDTH="100%">
<br>Eclipse SDK Build 20020517
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
The ruler context menu action are initialized correctly when invoked over
keyboard shortcut. (Ctrl+W)</li>

<li>
Added delete line actions ([Esc 0] Ctrl+K with emacs key bindings) to text
editor</li>

<li>
Added support for setting/clearing/swapping a mark (emacs style selection)</li>

<li>
Code Cleanup</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
See bugzilla.
<p>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20020514
<h2>
Breaking API changes</h2>
IVerticalRulerInfo.addMouseListener/removeMouseListener have been removed
again. The vertical ruler now provides a control that shares its listeners
with its children.
<p>IDocumentProviderExtension.getStatus(Object element) returns an IStatus
connected with the given element. The status can be used to relate any
relevant kind of status information with an element for which a provider
manages a document.
<h2>
Other highlights</h2>
Introduced a StatusTextEditor. The status text editor checks the status
flag managed for its input element by the editor' document provider. If
the status is not-OK, a different control is shown. By default an InfoForm
is shown. Subclasses can change what is shown or subclass InfoForm.
<p>StorageDocumentProvider and FileDocumentProvider honor the workbench's
encoding settings. In addition, encoding support is provided by standard
text editor. File can be viewed using different encodings. Save always
uses the workbench's encoding setting. Custom editors can leverage the
support by including the EncodingActionGroup into their menus. The encoding
support uses the newly introduced status text editor.
<p>Text hover timeout when typing has been improved. It's now always 1500ms.
<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
See bugzilla.
<br>&nbsp;
<p>
<hr WIDTH="100%">
<br>&nbsp;
<br>&nbsp;
<p>Eclipse SDK Build 20020508
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
The context menu of the vertical ruler can be opened with Ctrl+W when using
the default key binding. Accelerator for the emac's key binding is still
to be defined.</li>

<li>
Added support for composite vertical ruler. See CompositeVerticalRuler.&nbsp;
A composite vertical ruler is configured with ruler columns. Two ruler
columns are provided by default: AnnotationRulerColumn and LineNumberRulerColumn.</li>

<li>
Performance changes to the reconciling mechanism in JFace Text.</li>

<li>
Changes in handling read only files: All modifying text actions are disabled
by default.</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#15071 convert line delimiters - one os missing
<br>&nbsp;
<p>
<hr WIDTH="100%">
<br>&nbsp;
<p>Eclipse SDK Build 20020430
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
Introduced the concepts of state dependent actions, i.e. actions which
change their enabling state depending on whether the editor's input is
read only or not.</li>

<li>
Added line delimiter conversion actions for DOS, UNIX and Mac.</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>

<p><br>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20020423
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
Viewport clipping in the vertical ruler</li>

<li>
Improved painting of range indicator</li>

<li>
Fixed problem in position handling in AbstractDocument</li>

<li>
Improved handling of delete in GapTextStore</li>

<li>
Changes in partition parsing: Introduced the concept of a partition token
scanner which can resume scanning in the middle of&nbsp; token range.&nbsp;
The basic assumption is that partition delimiters don't contain line delimiters.
Partition token scanners can be built with rules implementing IPredicateRule.
A predicate rule can start evaluation between their start and end sequence.
PatternRule has been adapted.</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>

<p><br>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20020418
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
Added method <i>undelete</i> to Position.</li>

<li>
AbstractMarkerAnnotationModel better supports heterogenous sets of annotations.</li>

<li>
DefaultUndoManager causes selection changes when executing undo/redo to
ensure correct enabling/disabling of selection dependent actions.</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>

<p><br>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20020411
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
Enabled annotation models for more fine grained change notification</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#13358 incremental find: displays little squares after you press 'delete'
<br>#13283 Find/Replace: Close button too small
<br>#13459 Typing tab with selection in middle of line shifts right
<p>
<hr WIDTH="100%">
<br>&nbsp;
<br>&nbsp;
<p>Eclipse SDK Build 20020409
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
Added support for external contribution of ruler actions. I.e. plugins
can contribute actions to the context menu of an editor's vertical ruler&nbsp;
by specifying those actions in their plugin.xml file.</li>

<li>
In the default key binding Ctrl+ArrowUp and Ctrl+ArrowDown are bound to
scroll a single line without moving the cursor.</li>

<li>
AnnotationModel is be used from several threads.</li>

<li>
TextViewer implements ITextViewerExtensions which supports the stacking
of VerifyKeyListeners. A listener that is prepended to the list of verify
key listeners can take over the control over all key strokes not bound
as menu item accelerators.</li>

<li>
The scheme according to which an editor calls Workspace.validateEdit has
been reworked.</li>

<li>
The editor hooks to the Revert action in the File menu.</li>

<li>
AbstractTextEditor supports property dependent actions similar to selection
or content dependent actions.</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#11215 Editor task creation actions should use TaskPropertiesDialog
<br># 9761 Line has to be selected from beginning when using the 'Tab'
<br>#10806 call validateEdit() again before any further changes
<br>#11480 READ/WRITE not updated on focus change
<br>#12901 P2 Find/Replace should keep last selection highlighted
<p>
<hr WIDTH="100%">
<br>&nbsp;
<p>Eclipse SDK Build 20020402
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
fixed a problem in the TextViewer's handleDipose method</li>

<li>
AbstractMarkerAnnotationModel can now deal with a heterogenous set of annotations</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>

<p><br>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20020326
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
Enabled key binding support</li>

<li>
dialog-less incremental search (improvements)</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>

<p><br>
<hr WIDTH="100%">
<br>&nbsp;
<p>Eclipse SDK Build 20020318
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
All find operations can be limited to a scope using the find replace dialog.
Multi-line selections serve as scope.</li>

<li>
Emacs-like incremental search (Ctrl-J) is now part of AbstractTextEditor.</li>

<li>
Preparations for key binding support</li>

<br>&nbsp;</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#2280 Undo does not jump to undone location (1GEK1G5)
<br>#7381 Search results block hover help for problems
<br>#7954 Content assist off the edge of the display
<br>#10141 Shift Left/Right disabled unless selection is "full lines".
<br>#11047 Index out of bounds on text hover
<br>#11148 Syntax coloring lost on revert
<br>#11377 Code assist leaks threads
<br>#11433 NPE opening editor when some plugins disabled
<br>&nbsp;
<br>&nbsp;
<p>
<hr WIDTH="100%">
<br>&nbsp;
<p>Eclipse SDK Build 20020312
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
All editors based on AbstractTextEditor now support <i>Find Next</i> and
<i>Find
Previous. </i>Both actions are selection aware, i.e. having a word selected
when invoking <i>Find Next </i>searches for the next appearance of the
selected word.</li>

<li>
A first cut of incremental search is implemented accessible via the Find/Replace
dialog.</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#5191 EC DCR: Add keyboard accelerator for "Find Next"
<br>#5710 Emacs-like isearch (aka "incremental search")
<br>#10489 Indention a template results in NPE
<br>#2698 Opening Default Text Editor not showing right icon in the file
tab (1GI7GK2)
<br>#7954 Content assist off the edge of the display
<br>#9964&nbsp; nor P3 Syntax highlight and comments bug
<br>#11047&nbsp; nor P2 Index out of bounds on text hover
<br>&nbsp;
<p>
<hr WIDTH="100%">
<br>&nbsp;
<p>Eclipse SDK Build 20020305
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#8652 ctl-space doesn't wrk for content assist in Java editor when
<br>#8910 @link-tag in Javadoc display broken
<br>#9576 Method argument hints not as smart as code assist
<br>#10315 Syntax highlighting glitch
<br>#10422 Incorrect syntax highlighting for comments
<br>#10721 Syntax highlighting lost in Java editor after replace with r
<br>&nbsp;
<p>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20020212
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
Added IContextInformationExtension to support context information positions
not equal to completion position (related to #4366).</li>

<li>
Added preference store keys for system default background/foreground colors
(related to #5811).</li>

<li>
Reworked handling of read-only resources and state changes of resources.</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#2635 Find should remember last string if selection empty (1GHFMYL
<br>#5380 Error hover doesn't appear
<br>#7483 NPE during revert in Java editor
<br>#2575 [JFace Text] BUG - org.eclipse.ui.texteditor inconsistency (1GGLRU6)
<br>#5969 Find dialog placement needs improvement
<br>#5811 Pref to set editor background color
<br>#5819 Code formatter doesn't work well with else if on next line
<br>&nbsp;
<p>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20020129
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#5819 Code formatter doesn't work well with else if on next line
<p>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20020122
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#4324 EC: Find/replace gets stuck in infinite loop (1GLCBZE)
<br>#3736 DCR: Go to line - would be nice to show valid range (1GEHSDX)
<p>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20020115
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#4335 Find/Replace should come up with first history entry (1GEL5NS)
<br>#4338 Find/change history is never pruned (1GHDUJW)
<br>#4342 TextViewer.setTopIndex doesn't take horizontal scrollbar into
account (1GIFYC7)
<br>#4343 Text hidden inserted by code assist (1GJ9PGK)
<br>#6701 Code assist: java hint not properly aligned
<br>#6379 StatusLine 'Writeable' is not readable
<p>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20020108
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#3833 Javadoc hover appears under code assist window (1GF0K3T)
<br>#4363 Two Java Doc hovers
<p>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20011218
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#1614 Current line in Debugger should start at center of source ed
<br>#5000 Context menu IDs not fully qualified
<br>#5959 Text editor: SEVERE - Revert should be undoable
<br>#6075 NPE while editing in compare view
<br>#6318 F2 window accessability issues
<br>#4367 Argument hover doesn't work for nested method call
<br>#4964 Automatic Code Assist needs to be smarter
<br>#4966 Automatic Code Assist needs to be smarter #2
<br>#4967 Automatic Code Assist needs to be smarter #3
<br>#4968 Automatic Code Assist needs to be smarter #4
<br>#4969 Automatic Code Assist needs to be smarter #5
<br>#4999 Automatic Code Assist needs to be smarter #7
<br>#6589 ctrl+insert, shift+insert incorrectly flips the insert/overw
<br>#3467 Horizontal scrolling when stepping through errors (1GE6AF1)
<br>#4041 out of sync error message after copying resources (1GGR6VZ)
<br>#6699 Save should not flush undo stack
<br>#4071 Format option loses place in editor (1GHQFU6)
<p>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20011211
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#1614 Current line in Debugger should start at center of source editor
(1GETH7J)
<br>#3467 Horizontal scrolling when stepping through errors (1GE6AF1)
<p>
<hr WIDTH="100%">
<br>&nbsp;
<p>Eclipse SDK Build 20011206
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>
Support for read-only but modifiable resources in editors. For this reason
AbstractTextEditor now calls validateState if its document provider also
implement IDocumentProviderExtension. The calls are issued:
<ul>
<li>
when an editor is marked dirty</li>

<li>
when an editor saves its document to its input</li>

<li>
when a dirty resource is moved (if allowed)</li>
</ul>
Calling validateState may cause changes to the isModifiable and isReadOnly
properties of the editor's input.
<br>FileDocumentProvider implements validateState by calling IWorkspace.validateEdit
on the input file.
<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>

<hr WIDTH="100%">
<p>Eclipse SDK Build 20011204
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>
Perparations for supporting the concept of read-only but modifiable resources
in editors.
<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#6203 SEVERE: typing in java editor causes OutOfMemoryError in JDK 1.4
<br>#6263 Extra closing braces inserted
<p>
<hr WIDTH="100%">
<br>&nbsp;
<p>Eclipse SDK Build 20011127
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
An BasicTextEditorActionContributor now contributes three status fields
into the window's status line. Each field is dedicated to show information
of a particular category. The categories are defined in ITextEditorActionConstants.
A new interface ITextEditorExtension has been introduced. On activation,
implementing editors of this interface are informed about the status fields
they can use to publish status information. AbstractTextEditor implements
ITextEditorExtension. Subclasses of AbstractTextEditor can get access to
the editor's current status fields using the method getStatusField(String
category). By default, AbstractTextEditor publishes the following information:
cursor position, input mode, reade only state of its input. Subclasses
may change this behavior by overriding updateStatusField(String category)
or callers of this method.</li>

<li>
The default text editor uses the feature described above and now provides
status information.</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#4071&nbsp;&nbsp;&nbsp; Format option loses place in editor (1GHQFU6)
<br>#6168&nbsp;&nbsp;&nbsp; code assist preference (auto complete) does
not work
<br>#6087&nbsp;&nbsp;&nbsp; NPE closing content assist from DisplayView
on exit
<br>#6013&nbsp;&nbsp;&nbsp; Repeatable Java editor hang in 200111115
<br>#4947&nbsp;&nbsp;&nbsp; No indication of Insert/Overwrite mode
<p>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20011120
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
Change to AbstractHoverInformationControlManager to reset the hover location
on a time basis.</li>

<li>
Added configuration method to ContentAssistant to automatically insert
a single proposal.</li>

<li>
Behavioral configuration methods such as enableAutoInsert, enableAutoActivation,
and setAutoActivationDelay can now be called when after the content assistant
has been installed.</li>

<li>
Context information popup recomputes size after style information has been
applied.</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports closed</h2>
#2569&nbsp;&nbsp;&nbsp; [JFace Text] Content assist list truncated (1GG1W9B)
<br>#2904&nbsp;&nbsp;&nbsp; [JFace Text] PropagatingFontFieldEditor has
moved (1GKKL13)
<br>#1824&nbsp;&nbsp;&nbsp; [JFace Text] 50 reconciling threads for 4 editors
opened (1GFXMV8)
<br>&nbsp;
<p>
<hr WIDTH="100%">
<p>Eclipse SDK Build 20011101
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>

<ul>
<li>
introduction of setDocumentContent(IDocument, IEditorInput) on StorageDocumentProvider.</li>

<li>
introduction of IDocumentExtension (see JavaDoc)</li>

<li>
AbstractDocument implements IDocumentExtension</li>
</ul>

<h2>
Known deficiencies</h2>
Instances of DefaultInformationControl are wider than necessary.
<h2>
Problem reports fixed</h2>

<hr WIDTH="100%">
<p>Eclipse SDK Build 206
<h2>
Breaking API changes</h2>
Corrected spelling of&nbsp; "anchor" in AbstractInformationControlManager
and its subclasses.
<h2>
Other highlights</h2>

<h2>
Known deficiencies</h2>
Instances of DefaultInformationControl are wider than necessary.
<h2>
Problem reports fixed</h2>
<a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5066">#5066&nbsp;&nbsp;&nbsp;
Code Assist: Thread created / not removed</a>
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5120">#5120&nbsp;&nbsp;&nbsp;
Empty popup doc in java editor</a>
<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=3473">#3473&nbsp;&nbsp;
mnemonics (1GF25DN)</a>
<p>
<hr WIDTH="100%">
<br>&nbsp;
<p>Eclipse SDK Build 204
<h2>
Breaking API changes</h2>

<h2>
Other highlights</h2>
For more information about the following issue please see JavaDoc of the
classes
<ul>
<li>
Several improvements of the new hover infrastructure, such as customizable
SWT styles.</li>

<li>
Improved look of the content assist window.</li>

<li>
Content assist supports customizable completion characters, i.e. each completion
proposal can specify which characters trigger its insertion.</li>
</ul>

<h2>
Known deficiencies</h2>
Instances of DefaultInformationControl are wider than necessary.
<h2>
Problem reports fixed</h2>

<p><br>
<hr WIDTH="100%">
<br>&nbsp;
<p>Eclipse SDK Build 203
<h2>
Breaking API changes</h2>
&nbsp; package:&nbsp;&nbsp; org.eclipse.jface.text
<br>&nbsp; interface:&nbsp;&nbsp; IHoverInfoPresenter
<br>&nbsp; change:&nbsp;&nbsp; removed interface
<br>&nbsp; change type: breaking API change for implementers of IHoverInfoPresenter
<h2>
Other highlights</h2>
For more information about the following issue please see JavaDoc of the
classes
<ul>
<li>
Complete rework of hover popups (previously a package private mechanism
hidden from clients). There is now the concept of an IInformationControl
and an IInformationControlCreator. Everywhere where floating windows are
used to present some kind of information, now IInformationControl is used.
More precise, the according component is equiped with an IInformationControlCreator
and creates the IInformationControl instance when needed. So clients can
set an IInformationControlCreator on a TextViewer and a SourceViewer. They&nbsp;
use it&nbsp; to create the text hover window and the annotation bar hover
window respectively. DefaultInformationControl&nbsp; is a StyledText-based
default implementation of IInformationControl. Clients may implement IInformationControl
directly and inject their custom information control creator.</li>

<li>
AbstractInformationControlManager and its subclasses abstractly&nbsp; implement
the process of providing a SWT control with support for floating information
windows. This covers layout, positioning, content, and visibility of the
floating window. They offer a broad customization space such as layout
strategies, colors, etc.</li>

<li>
TextViewer hovers, annotation bar hovers, additional info on completion
proposals in the content assistant, etc. benefit from the new infrastructure.
UI improvements are especially visible in the layout behavior.</li>

<li>
Introduced the concept of an information presenter. An information presenter
shows information on a context derivved subject on request. See IInformationPresenter
for details as well as SourceViewer and SourceViewerConfiguration for how
to use it.</li>
</ul>

<h2>
Known deficiencies</h2>
Instances of DefaultInformationControl are wider than necessary.
<h2>
Problem reports fixed</h2>

<p><br>
<hr WIDTH="100%">
<p>Eclipse SDK Build 200
<h2>
Breaking API changes</h2>
&nbsp; package:&nbsp;&nbsp; org.eclipse.jface.text
<br>&nbsp; interface:&nbsp;&nbsp; ITextViewer
<br>&nbsp; change:&nbsp;&nbsp; added method public void invalidateTextPresentation(
)
<br>&nbsp; change type: breaking API change for implementers of ITextViewer
<p>&nbsp; package:&nbsp;&nbsp; org.eclipse.jface.text
<br>&nbsp; interface:&nbsp;&nbsp; ITextViewer
<br>&nbsp; change:&nbsp;&nbsp; added method public void setDefaultPrefixes(String[]
defaultPrefixes, String contentType)
<br>&nbsp; change type: breaking API change for implementers of ITextViewer
<p>&nbsp; package:&nbsp;&nbsp; org.eclipse.jface.text
<br>&nbsp; interface:&nbsp;&nbsp; ITextViewer
<br>&nbsp; change:&nbsp;&nbsp; removed method&nbsp; void setDefaultPrefix(String
defaultPrefix, String contentType)
<br>&nbsp; change type: breaking API change for implementers of ITextViewer
<p>&nbsp; package:&nbsp;&nbsp; org.eclipse.jface.text.rules
<br>&nbsp; class:&nbsp;&nbsp; RuleBasedDamagerRepairer
<br>&nbsp; change:&nbsp;&nbsp; deprecated constructor&nbsp; public RuleBasedDamagerRepairer(RuleBasedScanner
scanner, TextAttribute defaultTextAttribute)
<br>&nbsp; change type: breaking API change for clients of RuleBasedDamagerRepairer
<h2>
Other highlights</h2>
For more information about the following issue please see JavaDoc of the
classes
<ul>
<li>
IContextInformationValidator implementers may also implement IContextInformationPresenter
to style context information</li>

<li>
ITextHover implementers may also implement IHoverInfoPresenter to style
hover information</li>

<li>
PropagatingFontFieldEditor has been introduced</li>

<li>
MonoReconciler has been introduced to support partition independent reconciling</li>

<li>
Token has been reimplemented, supports setData method now</li>

<li>
RuleBasedScanner now supports&nbsp; public void setDefaultReturnToken(IToken
defaultReturnToken). This token is returned if no rule can fire.</li>

<li>
TextPresentation now supports&nbsp; public static void applyTextPresentation(TextPresentation
presentation, StyledText text)</li>

<li>
BasicMarkerUpdater has been marked as final</li>

<li>
SelectMarkerRulerAction has been introduced</li>

<li>
WorkbenchChainedTextFontFieldEditor has been introduced</li>
</ul>

<h2>
Known deficiencies</h2>

<h2>
Problem reports fixed</h2>
1GJ65EW: ITPSRCEDIT:WINNT - ResourceMarkerAnnotaionModel: unnecessary fireModelChange
<br>1GIYR3X: ITPSRCEDIT:ALL - NL: word select (double click) in Java comments
<br>1GGYYWK: ITPJUI:ALL - Dismissing editor with code assist up causes
lots of Internal Errors
<br>1GEUOZ9: ITPJUI:ALL - Confusing UI for multiline Bookmarks and Tasks
<br>1GII2RZ: ITPJUI:WINNT - AssertionFailed Ex. in Java editor
<br>1GIYQ9K: ITPUI:WINNT - StyledText swallows Shift+TAB
<br>1GIJZOO: ITPSRCEDIT:ALL - Gotodialog's edit field has no initial focus

</body>
</html>
