Eclipse Platform Build Notes
Text

To see which bugs have been addressed in one of the builds simply open the Platform-Text bugzilla query page, select status, resolution and the time frame.


========== Eclipse Build Input for 3.0.1 ==========
Bugs fixed for 3.0.1:

44613 [misc] some actions go to disk everytime they are selected
68562 [projection] NPE in ProjectionViewer.setRangeIndication
68963 [implementation] A bug of the IME composition string font
69419 [implementation] ChainedPreferenceStore
69710 [find/replace] Replace scope ignored
70428 schema files -- missing <pre> and </pre> tags in Examples section
72545 [encoding] adopt long-running version of IFile#setCharset
73053 [encoding] wrong encoding results in empty status editor
========== Eclipse Build Input May 18th 2004 ==========
- removed last dependency on compatibility plug-in
- bug fixing

The infrastructure for collapsing and expanding ranges of lines in editors (referred to as folding)
is now officially available. The effected plug-ins are org.eclipse.text and org.eclipse.jface.text.

The org.eclipse.text plug-in contains the package org.eclipse.jface.text.projection. This package
defines the UI independent document infrastructure needed for folding. The center piece is the
ProjectionDocument. The content of a projection document is a projection of the content of a master
document. In other words fragments of the master document constitute the segments of the projection
document. The mapping is enacted by the ProjectionMapping implementing IDocumentInformationMapping.
After an instance of ProjectionDocument has been created it is initially empty. The content is defined
by calling addMasterDocumentRange(offsetInMasterDocument, lengthInMasterDocument) and
removeMasterDocumentRange(offsetInMasterDocument, lengthInMasterDocument). The projection document
and its master document are causally connected. Thus, any manipulation of the projection document also
causes master document changes. Any manipulation effecting ranges in the master document that have been
added to the projection document also cause projection document changes.

The org.eclipse.jface.text plug-in contains the package org.eclipse.jface.text.source.projection.
This package defines the UI needed for folding based on the projection document infrastructure. The
center piece is the ProjectionViewer and the ProjectionSupport. A projection support can be installed on
projection viewer. It controls the existence of a vertical ruler column for collapsing/expanding ranges
of lines, the hover behavior, and the presentation of collapsed regions in the viewer. The projection viewer
defines a set of text operations for managing the expansion state of collapsable regions. Collapsable regions
can be defined by requesting the ProjectionSupport to provide an adapter for ProjectionAnnotationModel.class
for the viewer it is installed on. The ProjectionAnnotations managed by this projection annotation model
define the collapsable regions.

ITextViewer defines the concept of a visible region. This concepts is incompatible with folding. Several
assumptions that were safe to make in the world of visible regions are no longer valid in the presence of folding.
For example, in order to determine the document line number of the fifth line in the viewer's widget it was
good enough to determine the start line of the viewer's visible region and to take the fifth line after that.
When folding is enabled, any number of lines can be between two visible lines. Thus, in order to convert between
widget and model coordinates, the methods provided by ITextViewerExtension5 should be used.

Editor implementers (based on AbstractTextEditor) who want to support folding have to do the following:
- override createSourceViewer and return a ProjectionViewer
- override createPartControl resembling:

	public void createPartControl(Composite parent) {
		super.createPartControl(parent);
		
		ProjectionViewer projectionViewer= (ProjectionViewer) getSourceViewer();

		fProjectionSupport= new ProjectionSupport(projectionViewer, getAnnotationAccess(), getSharedColors());
		fProjectionSupport.addSummarizableAnnotationType("org.eclipse.ui.workbench.texteditor.error");
		fProjectionSupport.addSummarizableAnnotationType("org.eclipse.ui.workbench.texteditor.warning");
		fProjectionSupport.setHoverControlCreator(new IInformationControlCreator() {
			public IInformationControl createInformationControl(Shell shell) {
				return new CustomSourceInformationControl(shell, IDocument.DEFAULT_CONTENT_TYPE);
			}
		});
		fProjectionSupport.install();

		...
		
		if (isFoldingEnabled())
			projectionViewer.doOperation(ProjectionViewer.TOOGLE);
	}

- extend getAdapter with 

	public Object getAdapter(Class required) {
		...	
		if (fProjectionSupport != null) {
			Object adapter= fProjectionSupport.getAdapter(getSourceViewer(), required);
			if (adapter != null)
				return adapter;
		}
		
		return super.getAdapter(required);
	}
	
- provide a way to allow the definition of collpsable regions such as:

		ITextEditor editor= getTextEditor();
		ISelection selection= editor.getSelectionProvider().getSelection();
		if (selection instanceof ITextSelection) {
			ITextSelection textSelection= (ITextSelection) selection;
			if (!textSelection.isEmpty()) {
				IAnnotationModel model= (IAnnotationModel) editor.getAdapter(ProjectionAnnotationModel.class);
				if (model != null) {
					int start= textSelection.getStartLine();
					int end= textSelection.getEndLine();
					try {
						IDocument document= editor.getDocumentProvider().getDocument(editor.getEditorInput());
						int offset= document.getLineOffset(start);
						int endOffset= document.getLineOffset(end + 1);
						Position position= new Position(offset, endOffset - offset);
						model.addAnnotation(new ProjectionAnnotation(), position);
					} catch (BadLocationException x) {
					}
				}
			}
		}

========== Eclipse Build Input May 11th 2004 ==========
- reworked editor preference pages:
  - Annotations and Quick Diff sub-pages are gone: they are now centralized under
    Workbench > Editors
  - added API which allows to configure a client's preference store to use the
    centralized preference pages:
    see: EditorsUI.useAnnotationsPreferencePage(IPreferenceStore)
    see: EditorsUI.useQuickDiffPreferencePage(IPreferenceStore)
  - added ChainedPreferenceStore which allows to chain preference stores
  - the text editor's Appearance sub-page is now the only Text Editor's preference page
- removed all but one dependencies on compatibility plug-in
- externalized all strings
- bug fixing
========== Eclipse Build Input May 4th 2004 ==========
- ICompletionProposalExtension3: renamed methods:
	- getCompletionText -> getPrefixCompletionText
	- getCompletionOffset -> getPrefixCompletionOffset
	

Headless annotation model support for text file buffers:

We added headless annotation model support to text file buffers. Each text
file buffer can now have its own annotation model. 
        ITextFileBuffer buffer= FileBuffers.getTextFileBufferManager().getTextFileBuffer(); 
        IAnnotationModel model= buffer.getAnnotationModel(); 
When the buffer's document is changed, all annotations in the buffer's annotation 
model are accordingly updated. 

As annotations (org.eclipse.jface.text.source.Annotation) had dependencies on 
SWT the following changes have been applied. These changes might break existing 3.0 clients. 
The changes in detail: 
- ImageUtilities has been moved from org.eclipse.ui.texteditors to org.eclipse.jface.text.source 
- removed static Annotation.drawImage methods -> use org.eclipse.jface.text.source.ImageUtilities 
- removed setLayer, getLayer, and paint from Annotation -> annotations which want to draw 
  themselves should implement IAnnotationPresentation (as has been introduced by Dec. 18th) 
- MarkerAnnotation now directly implements the methods removed from Annotation (setLayer, getLayer, paint) 
- MarkerAnnotation extends SimpleMarkerAnnotation, SimpleMarkerAnnotation just provides 
  access to the represented IMarker 
- the following classes have been moved from the plug-in org.eclipse.jface.text to the plug-in 
  org.eclipse.text, the package names remain the same 
        org.eclipse.jface.text.ISynchronizable 
        org.eclipse.jface.text.source.Annotation 
        org.eclipse.jface.text.source.AnnotationMap 
        org.eclipse.jface.text.source.AnnotationModel 
        org.eclipse.jface.text.source.AnnotationModelEvent 
        org.eclipse.jface.text.source.IAnnotationMap 
        org.eclipse.jface.text.source.IAnnotationModel 
        org.eclipse.jface.text.source.IAnnotationModelExtension 
        org.eclipse.jface.text.source.IAnnotationModelListener 
        org.eclipse.jface.text.source.IAnnotationModelListenerExtension 

The following changes were made to add headless annotation model support to filebuffers. 
        - added ITextFileBuffer.getAnnotationModel(IPath) 
        - added ITextFileBufferManager.createAnnotationModel(IPath) 
        - introduced IPersistableAnnotationModel give annotations model a sense of a life cycle 
        - added new extension point org.eclipse.core.filebuffers.annotationModelCreation for 
          registering factories for file buffer annotation models 
        - introduced IAnnotationModelFactory to reify the contract for the extension point 
        - changed TextFileDocumentProvider to take the text file buffer annotation models into 
          account. This is only the case when a subclass does override 
              TextFileDocumentProvider.createAnnotationModel 

Theses changes affect the following plug-ins: 
        org.eclipse.core.filebuffers 
        org.eclipse.jface.text 
        org.eclipse.text 
        org.eclipse.ui.editors 
	

========== Eclipse Build Input April 27th 2004 ==========
- Added org.eclipse.ui.contentassist.ContentAssistHandler which can
  be used to install and control enablement of the visual cue and the
  key binding for subject control content assistants.

========== Eclipse Build Input April 20th 2004 ==========
Open / closed partitions:
From IDocumentPartitionerExtension2:
This extension introduces the concept of open and closed (or delimited)
partitions. A delimited partition has a textual token delimiting its start
and end, while an open partition can fill any space between two delimited
partitions.
An open partition of zero length can occur between two delimited partitions,
thus having the same offset as the following delimited partition. The
document start and end are considered to be delimiters of open partitions,
i.e. there may be a zero-length partition between the document start and a
closed partition starting at offset 0.

The partition information queries on IDocumentPartitionerExtension2 carry a 
boolean argument that specifies whether such open partitions should be returned.

-----

API changes:

plug-in: org.eclipse.text 

- pkg: org.eclipse.jface.text
	- renamed FindReplaceDocumentAdapter.search to FindReplaceDocumentAdapter.find
	- changed FindReplaceDocumentAdapter.findReplace to private
	- merged FindReplaceOperationCode into FindReplaceDocumentAdapter, removed FindReplaceOperationCode
	- deleted deprecated classes whose Javadoc stated that these classes were internal
		- ChildDocument
		- ChildDocumentManager
		- ParentChildMapping
		- CoordinatesTranslator
		- Fragment
		- FragmentUpdater
		- ProjectionDocument
		- ProjectionDocumentManager
		- ProjectionPosition
		- ProjectionPositionUpdater
		- ProjectionTextStore

- pkg: org.eclipse.jface.text.link
	- removed ExclusivePositionUpdater
	- marked InclusivePositionUpdater as internal class using Javadoc
	- renamed LinkedEnvironment to LinkedModeModel
		- renamed methods accordingly
  	- renamed LinkedManager to LinkedModeManager
  	- renamed ILinkedListener to ILinkedModeListener
	- renamed LinkedUIControl to LinkedModeUI
	- removed LinkedPositionGroup.createPosition methods
		- use LinkedPositionGroup.addPosition instead

- pkg: org.eclipse.jface.text.templates
	- renamed ContextType to TemplateContextType
	- renamed GlobalVariables to GlobalTemplateVariables
	- renamed SimpleVariableResolver to SimpleTemplateVariableResolver


----------------------------------------

plug-in org.eclipse.jface.text

- pkg: org.eclipse.jface.text
	- renamed IAnnotationHoverExtension.getInformationControlCreator to IAnnotationHoverExtension.getHoverControlCreator
	- renamed ITextHoverExtension.getInformationControlCreator to ITextHoverExtension.getHoverControlCreator

- pkg: org.eclipse.jface.text.formatter
	- merged IContentFormatterExtension2 into IContentFormatterExtension
	- removed IContentFormatterExtension.getPartitioning
	- changed configuration methods of MultipassContentFormatter: substituted IFormattingStrategy for IFormattingStrategyExtension, added assert statements
	- deprecated ContentFormatter

- pkg: org.eclipse.jface.text.source
	- deleted deprecated classes whose Javadoc stated that these classes were internal
		- OutlinerRulerColumn
		- ProjectionAnnotation
		- ProjectionSourceViewer

- pkg: org.eclipse.jface.text.reconciler
	- deleted DocumentAdapter
	- renamed AnnotationEvent to VerticalRulerEvent
	- renamed VerticalRulerEvent.getAnnotation to VerticalRulerEvent.getSelectedAnnotation
	- renamed VerticalRulerEvent.setAnnotation to VerticalRulerEvent.setSelectedAnnotation
	- CompositeRuler no longer implements IVerticalRulerListener
	- renamed CompositeRuler.annotationSelected to CompositeRuler.fireAnnotationSelected
	- renamed CompositeRuler.annotationDefaultSelected to CompositeRuler.fireAnnotationDefaultSelected
	- renamed CompositeRuler.annotationContextMenuAboutToShow to CompositeRuler.fireAnnotationContextMenuAboutToShow
	- changed constructor of AnnotationExpandHover to accept CompositeRuler rather than IVerticalRulerInfo and IVerticalRulerListener

- pkg: org.eclipse.jface.text.contentassist
	- moved AbstractControlContentAssistSubjectAdapter to package org.eclipse.jface.contentassist
	- moved ComboContentAssistSubjectAdapter to package org.eclipse.jface.contentassist
	- moved ContentAssistant to package org.eclipse.jface.contentassist
	- moved IContentAssistProcessorExtension to package org.eclipse.jface.contentassist
	- renamed IContentAssistProcessorExtension to ISubjectControlContentAssistProcessor.java
	- moved IContentAssistSubject to package org.eclipse.jface.contentassist
	- renamed to IContentAssistSubject IContentAssistSubjectControl
	- moved IContextInformationPresenterExtension to package org.eclipse.jface.contentassist
	- renamed IContextInformationPresenterExtension to ISubjectControlContextInformationPresenter
	- moved IContextInformationValidatorExtension to package org.eclipse.jface.contentassist
	- renamed IContextInformationValidatorExtension to ISubjectControlContextInformationValidator
	- moved TextContentAssistSubjectAdapter to package org.eclipse.jface.contentassist
	- added ISubjectControlContentAssistant to package org.eclipse.jface.contentassist
	- moved IContentAssistantExtension.install(IContentAssistSubjectControl) to ISubjectControlContentAssistant
	- added SubjectControlContentAssistant to package org.eclipse.jface.contentassist
	- added SubjectControlContextInformationValidator to package org.eclipse.jface.contentassist

-----------------------------------------------

plug-in org.eclipse.ui.workbench.texteditor

- pkg: org.eclipse.ui.texteditor.templates
	- changed EditTemplateDialog to package visible
	- changed TemplateContentProvider to package visible
	
- org.eclipse.ui.texteditor
	- removed ChainedPreferenceStore (there is a copy in JDT UI)
	- removed PreferencesAdapter (there is copy in JDT UI)
	- deprecated InfoForm
	- renamed SelectMarkerRulerAction2 to SelectAnnotationRulerAction
	- renamed SmartEnterAction to InsertLineAction

- org.eclipse.ui.texteditor.link
	- removed EditorTarget
	- replaced EditorHistoryUpdater with EditorLinkedModeUI
		- clients no longer configure a LinkedModeUI with the EditorHistoryUpdater but instantiate EditorLinedModeUI

-------------------------------------------------

plug-in org.eclipse.ui.editors

- pkg: org.eclipse.ui.texteditor
	- moved AnnotationType to package org.eclipse.ui.internal.texteditor
	- moved AnnotationTypeHierarchy to package org.eclipse.ui.internal.texteditor
	- moved DelegatingAnnotationPreference to package org.eclipse.ui.internal.texteditor
	- marked  AnnotationPreferenceLookup.getAnnotationPreferenceFragment as internal method using Javadoc
	- renamed ExtendedTextEditor to AbstractDecoratedTextEditor
	- renamed ExtendedTextEditorPreferenceConstants to AbstractDecoratedTextEditorPreferenceConstants

- pkg: org.eclipse.ui.editors.text
	- removed EditorUI.getAnnotationTypeHierarchy
	- moved WorkspaceOperationRunner to package org.eclipse.ui.internal.editors.text
	- moved UISynchronizationContext to package org.eclipse.ui.internal.editors.text
	
	
--------------------------------------------------

plug-in org.eclipse.core.filebuffers
- extension point org.eclipse.core.filebuffers.documentSetup now supports the attribute 'fileNames'. The union of
  'fileNames' and 'extensions' is used for setting up a document.
- extension point org.eclipse.core.filebuffers.documentCreation now supports the attribute 'fileNames'.
  'fileName' has precedence over any matching criterion of 'extensions' when creating a document.
	
	
========== Eclipse Build Input March 23rd 2004 ==========
- Added the org.eclipse.ui.editors.templates extension point to the templates infrastructure.
- Added an example of using the extension point to the org.eclipse.ui.examples.javaeditor 
  project, see the Template Editor Example source folder and the html description for reference.
========== Eclipse Build Input March 9th 2004 ==========
- Moved the templates infrastructure to the text, jface.text and ui.workbench.texteditor 
  projects, making it API. The template API is still in the flow and might change considerably.
  
  For people that have been using the internal template code, please note:
    - TemplateVariable has been renamed to TemplateVariableResolver
    - TemplatePosition has benn renamed to TemplateVariable
    - there is first support for adding multiple proposals for a variable
========== Eclipse Build Input March 2nd 2004 ==========
- Moved the linked position infrastructure to the text, jface.text and ui.workbench.texteditor 
  projects, making in API. See package.html in the relevant sections. This is an intermediate step
  in making templates part of the text infrastructure.
- The content assistant can now be configured to restore the completion proposal
  popup's size. For details see:
  - ContentAssistant.setRestoreCompletionProposalSize(IDialogSettings)
- Completion proposal popup of the content assistants in Find/Replace dialog
  now remember their size.
- Several bugs fixed.

========== Eclipse Build Input February 24th 2004 ==========
- A source viewer can now be unconfigured and afterwards configured again.
- Information control managers can now be configured to restore the information
  control's location and size. The information control must implement
  IInformationControlExtension3. For details see:
  - AbstractInformationControlManager.setRestoreInformationControlBounds(...)
  - IInformationControlExtension3.getBounds()
- Several bugs fixed.

========== Eclipse Build Input February 17th 2004 ==========
- Several bugs fixed.

========== Eclipse Build Input February 10th 2004 ==========
- ComboContentAssistSubjectAdapter and TextContentAssistSubjectAdapter allow to
  show cue with tooltip.
- Annotations drawing in text may now be configured. Current drawing styles are boxes, underline, 
  squiggly lines, and an i-beam.
  We might introduce an extension point for specifying custom drawing strategies.
- A roll-over annotation hover has been introduced to cope with many annotations drawn over each 
  other in the vertical ruler. Enable for the Java editor using the roll over preference under 
  Java->Work in Progress. 

========== Eclipse Build Input January 27th 2004 ==========
- Improved performance when installing contributed actions.
- The displayed tab width in the text editor can now be configured,
    see Workbench > Editors > Text Editor preferences.
- Enhanced content assistant to be usable in Text and Combo,
    see ComboContentAssistSubjectAdapter and TextContentAssistSubjectAdapter.
- The DefaultAnnotation and its usages which was introduced in 3.0 to be
    create non-marker based annotations has been replaced by new API in Annotation.

========== Eclipse Build Input January 20th 2004 ==========
- Improved annotation painting: adapted painter to fine grained annotation model delta.

========== Eclipse Build Input December 18th 2003 ==========
This build contains several changes and additions to the annotation mechanism.

1) Annotation Types

There is now the explicit notion of an annotation type. See Annotation.getType() and Annotation.setType().
The type of an annotation can change over it's lifetime. A new extension point has been added for the declaration
of annotation types: "org.eclipse.ui.editors.annotationTypes". An annotation type has a name and can be declared 
as being a subtype of another declared annotation type. An annotation type declaration may also use the attributes 
"markerType" and "markerSeverity" in order to specify that markers of a given type and a given severity should be 
represented in text editors as annotations of a particular annotation type. The attributes "markerType" and 
"markerSeverity" in the "org.eclipse.ui.editors.markerAnnotationSpecification" should no longer be used. Marker 
annotation specifications are thus becoming independent from markers and the name thus misleading. However, the 
name is kept in order to ensure backward compatibility.

Instances of subclasses of AbstractMarkerAnnotationModel automatically detect and set the correct  annotation 
types for annotations they create from markers. In order to programmatically retrieve the annotation type for 
a given marker or a given pair of markerType and markerSeverity use org.eclipse.ui.texteditor.AnnotationTypeLookup.

Access to the hierarchy of annotation types is provided by AnnotationTypeHierarchy. For a given annotation type 
name you can get an AnnotationType that provides information about the chain of super types and a method to check 
whether an annotation type given as name is a subtype. You can also retrieve the information from 
IAnnotationAccessExtension. DefaultMarkerAnnotationAccess implements this interface.

2) MarkerAnnotationSpecification

The annotation type is the key with which to find the associated marker annotation specification. As annotation 
types can extend other annotation types, there is an implicit relation between marker annotation specifications 
as well. Therefore a marker annotation specification for a given annotation type is completed by the marker 
annotation specifications given for the super types of the given annotation type. Therefore, marker annotation 
specification do not have to be complete as this was required before. Marker annotation specifications are 
reified by AnnotationPreferences. By using org.eclipse.ui.texteditor.AnnotationPreferenceLookup, you can retrieve 
an annotation preference for a given annotation type that transparently performs the completion of the preference 
along the annotation super type chain.

3) Painting annotation

Marker annotation specification has been extended with three addition attributed in order to allow the definition 
of custom appearances of a given annotation type in the vertical ruler. These attributes are: "icon", "symbolicIcon", 
and "annotationImageProvider". The value for "icon" is the path to a file containing the icon image. The value of 
"symbolicIcon" can be one of "error", "warning", "info", "task", "bookmark". The attribute "symbolicIcon" is used 
to tell the platform that annotation should be depicted with the same images that are used by the platform to 
present errors, warnings, infos, tasks, and bookmarks respectively. The value of "annotationImageProvider" is a 
class implementing org.eclipse.ui.texteditor.IAnnotationImageProvider that allows for a full custom annotation 
presentation.

The vertical ruler uses it's associated IAnnotationAccess/IAnnotationAccessExtension to draw annotations. 
The vertical ruler does not call Annotation.paint any longer. In general, Annotations are no longer supposed 
to draw themselves. The "paint" and "getLayer" methods have been deprecated in order to make annotation eventually 
UI independent. DefaultMarkerAnnotationAccess serves as default implementation of IAnnotationAccess/IAnnotationAccessExtension. 
DefaultMarkerAnnotationAccess implements the following strategy for painting annotations: If an annotation implements 
IAnnotationPresentation, IAnnotationPresentation.paint is called. If not, the annotation image provider is looked up 
in the annotation preference. The annotation image provider is only available if specified and if the plug-in defining 
the enclosing marker annotation specification has already been loaded. If there is an annotation image provider, the 
call is forwarded to it. If not, the specified "icon" is looked up. "symbolicIcon" is used as the final fallback. For 
drawing annotations, the annotation presentation layer is relevant. DefaultMarkerAnnotationAccess looks up the presentation 
layer using the following strategy: If the annotation preference specifies a presentation layer, the specified layer is 
used. If there is no layer and the annotation implements IAnnotationPresentation, IAnnotationPresentation.getLayer is used 
otherwise the default presentation layer (which is 0) is returned.

4) Additions to Annotation

Annotations additionally support: a message, a flag to indicate whether the annotation is marked as deleted, a 
flag to indicate whether the annotation is persistent or temporary.

5) Migration

The following annotation types are declared by the org.eclipse.ui.editors plug-in:

   <extension point="org.eclipse.ui.editors.annotationTypes">
      <type
         name="org.eclipse.ui.workbench.texteditor.error"
         markerType="org.eclipse.core.resources.problemmarker"
         markerSeverity="2">
      </type>
      <type
         name="org.eclipse.ui.workbench.texteditor.warning"
         markerType="org.eclipse.core.resources.problemmarker"
         markerSeverity="1">
      </type>
      <type
         name="org.eclipse.ui.workbench.texteditor.info"
         markerType="org.eclipse.core.resources.problemmarker"
         markerSeverity="0">
      </type>
      <type
         name="org.eclipse.ui.workbench.texteditor.task"
         markerType="org.eclipse.core.resources.taskmarker">
      </type>
      <type
         name="org.eclipse.ui.workbench.texteditor.bookmark"
         markerType="org.eclipse.core.resources.bookmark">
      </type>
   </extension>

The defined markerAnnotationSpecification extension no longer provide "markerType" and "markerSeverity" 
attributes. They define the "symbolicIcon" attribute with the according value. Thus, MarkerAnnotation.paint 
and MarkerAnnotation.getLayer are not called any longer, i.e. overriding these methods does not have 
any effect.

========== Eclipse Build Input November 11th 2003 ==========
- Finished annotation background painter
- Added new concept of ITextPresentationListener which should be used by clients
  to apply a presentation style (e.g. color, bold) to the text. Clients using
  the StyledText.*styleRange* API methods should convert to this new API. A
  ITextPresentationListener can be added and removed from a text viewer (see
  ITextViewerExtension4)


========== Eclipse Build Input October 28th 2003 ==========
- Vertical ruler annotations can be disabled via editor's Annotation preference
  page.
- Added support to set background for annotations
	- annotation background painter 
	- key/value attributes to "org.eclipse.ui.workbench.texteditor.markerAnnotationSpecification" extension-point
	- updated annotation preference page to show this attribute
	- enabled this feature for Search annotations


========== Eclipse Build Input October 21th 2003 ==========
- Incremental find has its own editor status line field (findField)
- IStatusField has been extended (IStatusFieldExtension) with the following concepts:
  - set error text and image
  - set tool tip
  - control visibility


========== Eclipse Build Input October 7th 2003 ==========
- Find/Replace dialog now offers content assist for regular expression search and replace
- Changes found by Quickdiff are now ordinary annotations. I.e. they can serve as
  navigation target, can be shown in the overview ruler, and in the text. Their presentation
  colors can also be configured.
- "Open External File" can be found in the Files menu. It opens files which are not workspace files
  with the associated editor or the default text editor if no editor is specified. Text editors support
  external files.


========== Eclipse Build Input September 30th 2003 ==========
- Find/Replace dialog now supports regular expression search and replace
- Quick Diff annotations can now be displayed on the overview ruler and support Go to Next / Previous


========== Eclipse Build Input August 26th 2003 ==========
- Improved overview ruler:
	- can now handle annotations on same layer
	- added tool tip text to overview ruler header
	- tool tip text for disabled annotation no longer appears
	- click on overview ruler item respects layer
	- clicking on same overview ruler item jumps to next annotation
- several bugs fixed


========== Eclipse Build Input August 19th 2003 ==========
- added concept of reconcile step: a reconcile step is one of n steps of a
  reconcile strategy that consists of several steps. See the Java Family example
  to see it in action.
- added concept of translator:  a translator translates a given file into another
  language. The translator is also responsible to provide line mapping information
  for the translation and to compute which offset in an original line corresponds
  to a given offset in a target line. See the Java Family example to see it in action.
- TextEditor extends now ExtendedTextEditor, an additional layer combining features 
  used in rich editors, such as the annotation, line number and overview rulers, 
  the print margin, current text highlighting, and quick diff.
- several bugs fixed


========== Eclipse Build Input August 12th 2003 ==========
- the marker annotation specification can now be used to specify if the annotation
  should allow to be a navigation target. For details read the documentation of
  org.eclipse.workbench.texteditor.markerAnnotationSpecification extension point.
- several bugs fixed


========== Eclipse Build Input July 29th 2003 ==========
- several bugs fixed


========== Eclipse Build Input July 22th 2003 ==========
- several bugs fixed


========== Eclipse Build Input July 16th 2003 ==========
- several bugs fixed
- Improvements and framework changes for the light weight change indication. Change indication
  can now happen in the line number ruler or a dedicated change ruler column.


========== Eclipse Build Input July 8th 2003 ==========
- several bugs fixed
- The TextViewer sends out time-out based selection changed events for
  caret position changes for clients registered as post selection changed listeners.
- The default text editor supports a light weight change indicator integrated with the line number ruler. 
  Can be globally enabled on the Text Editor preference page. Can be enabled/disabled for the current editor
  in the editor's context menu or using the short cut "Ctrl+Shift+Q".
- Text frameworks have been extended to support light weight diffing.


========== Eclipse Build Input June 17th 2003 ==========
- several bugs fixed
- The TextViewer sends out time-out based selection changed events for caret position changes.
- added extension interfaces which allow completion proposals to specify their custom
   information control creator


========== Eclipse Build Input June 4th 2003 ==========
- several bugs fixed
- The TextViewer sends out time-out based selection changed events for caret position changes.
- added extension interfaces which allow text hovers and information providers to specify their custom
   information control creator
- text editors support three typing modes: Overwrite, Insert, Smart Insert
	- typing modes are toggled by INS in the default key binding
	- each mode is represented with its own caret
	- modes can be disabled per editor, i.e. when toggling insert modes, disabled modes will not be selected
- status line contribution items can now be associated with an action that is called when double clicking the status item


========== Eclipse Build Input May 13th 2003 ==========
- several bugs fixed
- released new features:
	- Insert new line above the caret line (ui name: "Smart Enter (Inverse)", default key binding: Ctrl+Shift+Enter)
	- Insert new line after the caret line (ui name: "Smart Enter", default key binding: Shift+Enter)
	- Move selected lines upwards (ui name: "Move Lines Up", default key binding: Alt+Arrow_UP)
	- Move selected lines down (ui name: "Move Lines Down", default key binding: Alt+Arrow_Down)
	- Change case of selection to upper case (ui name: "To Upper Case", default key binding: Ctrl+Shift+X)
	- Change case of selection to lower case (ui name: "To Lower Case", default key binding: Ctrl+Shift+Y)


========== Eclipse Build Input April 29th 2003 ==========
- several bugs fixed


========== Eclipse Build Input April 22nd 2003 ==========
- several bugs fixed