ITextViewer
.
A content formatter changes the formatting of a document region while
preserving and correctly updating the positions of the document.
IContentFormatter
defines the concept of a text formatter. It
collaborates with content type specific formatting stratgies (IFormattingStrategy
)
which for a given document region format the subregion with the
matching
content type. The package contains a default implementation of IContentFormatter
(ContentFormatter
).IContentFormatterExtension
is provided
for text edit based formatting strategies. This implementation only
accepts formatting strategies
implementing the extension interface IFormattingStrategyExtension
.
These formatting strategies are required to handle the position
updating of the document. To facilitate the work with these text edit
based formatting strategies, a default implementation called ContextBasedFormattingStrategy
is provided. Formatting strategies inheriting from this class are text
edit based and behave context dependent. Depending on the formatting
context that is passed
to the content formatter, different preferences and modes can be used
to format different parts of a document.
To set up a proper working text edit based content formatter, the following steps are needed:
IFormattingContext
. The default
implementation FormattingContext
already
provides support for the conversion of preferences from a preference
store to a map and vice versa. The method getPreferenceKeys
usually has to be overridden to return the appropriate keys of the
preferences used during the formatting process. Then register a map of
preferences
with the formatting context by calling setProperty(String, Object)
with the property identifier FormattingContextProperties.CONTEXT_PREFERENCES
.MultiPassContentFormatter
. The document partitioning and
its associated
default content type have to be passed to the constructor. This
information is needed since the content formatter is able to format
documents
according to arbitrary partitionings and default content types.CONTEXT_DOCUMENT
of the created formatting context to true
. This is
equivalent to setting CONTEXT_REGION
with a region
spanning the whole document.CONTEXT_REGION
of the formatting context. Note that the content formatter
automatically aligns the offset of a region to a line start for the
master formatting strategy, it also completes eventual partitions
covered only partially by the region for the slave formatting
strategies.CONTEXT_PARTITION
. Note that the region denoted by
this property must correspond to a partition relative to the specified
partitioning in the document to be formatted. The content type of this
property overrides the content type of the partition
in the document.MultiPassContentFormatter#format(IDocument,
IFormattingContext)
with the created formatting context
and the document to be formatted.