# 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 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(<location>);
            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 <work in progress>
    	- 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