On 2/7/13 5:08 PM, Kai Labusch wrote:
> Hi everyone,
>
> I'm a colleague of Robert Barbey at Acrolinx and I'm working on the
> OpenOffice
> Writer integration of our client-server text-processing solution.
> Currently, we already have a working writer extension that has been
> implemented in java and provides the functionality we need.
> For the implementation, we had to modify the AOO sources and add/change some
> API-functions/interfaces.
>
> Robert already posted a call-for-review for a modification of the
> XSmartTagRecognizer interface ("[Call-for-Review] Extension to
> XSmartTagRecognizer interface",
> https://issues.apache.org/ooo/show_bug.cgi?id=121391). We modified this patch
> request according to suggestions of Ariel and Jürgen and submitted a new
> patch
> request that is also mentioned in this post.
>
> During development of our writer extension we stumbled on a number of issues
> where we felt the need to modify something within AOO.
> The purpose of this post is to provide a summary of these changes and to ask
> for comments and input since there might be better ways to solve the problems
> we had without the need to change something within AOO.
>
> We splitted all the modifications in five different patch-sets where each
> patch-set contains a number of changes that belong to a common aspect.
> We submitted the patch-sets via bugzilla and I will refer to them in this
> post
> later on.
>
> First, as a motivation, I would like to describe the most important aspects
> of
> what our writer extension does:
>
> The extension adds a toolbar and menu to the writer application. The menu and
> toolbar have a "check"-button/entry that can be used in order to
> simultaneously check the document for different types of issues.
>
> Among others, issues can be:
> - spelling errors
> - grammar errors
> - style rules (like "Don't use Future tense", "Don't use passive voice")
> - reuse (use a different/better phrase that already has been approved due to
> some reason)
> - terminology (use a different word)
> - sentence break missing
> - broken link
> - sentence too long
> - wrong capitalization
>
> If the user clicks the check-button, the writer extension would extract the
> text of the document and send it to a server application.
> The server application performs a linguistic analysis of the document and
> creates a report of all issues that have been identified.
> The writer extension then receives the report and marks the issues within the
> writer document.
>
> For each issue, a smarttag is shown where its type is depicted by the color
> of
> the smarttag line (colors can be configured, for instance: spelling -> red,
> grammar -> blue, style-> green ...).
>
> The extension does not only send the text of the document to the linguistic
> server but also context information like character-style, paragraph-style,
> font-type. The linguistic rules within the server application are context
> sensitive, i.e., they might behave differently depending on the context of a
> particular part of the text (for instance different capitalization in titles).
>
> Furthermore, they are also context sensitive with respect to the surrounding
> text, i.e., it is not sufficient to consider only one or two words (for
> instance "sentence too long"). The context can be quite large since the
> system
> can be configured so that certain document structures (entire paragraphs,
> footnotes, image captions...) are considered as parenthetic elements which
> are removed from the normal text-flow or completely ignored. Since the
> outcome
> of the checking process can depend on the entire document, it is not possible
> to perform the check based on a part of the text as it is done in some
> proofreading APIs.
>
> Due to the reasons mentioned above, it is neccessary that the smarttag
> extension can globally identify and localize a particular part of the text
> within the entire document. Therefore, we felt the need to introduce a new
> interface "XRangeBasedSmartTagRecognizer" that can be optionally implemented
> in a smarttag extension. The smarttag manager inside AOO would check if a
> smarttag recognizer implements this additional interface. If the interface
> has
> been implemented, the smarttag manager would call "recognizeTextRange" which
> provides a globally identifiable text range to the recognizer
> (https://issues.apache.org/ooo/show_bug.cgi?id=121730).
>
> To enable the marking of text by means of such a text-range, we extended the
> XTextMarkup interface (https://issues.apache.org/ooo/show_bug.cgi?id=121734).
>
> To make colored smarttags possible, we felt the need to modify SwWrongArea
> and
> the lcl_DrawWrongListData function within the AOO sources
> (https://issues.apache.org/ooo/show_bug.cgi?id=121733).
>
> If the user clicks on a smarttag, he/she gets a context menu that offers
> actions to improve the document. What these actions are depends on the type
> and context of the marked part of the text. Depending on the type of issue
> and
> the actual issue itself the number of actions might vary.
> In order to make this possible, we felt the need to modify the
> XSmartTagAction
> interface (https://issues.apache.org/ooo/show_bug.cgi?id=121731).
>
> If the user applies some action to the document, the action could invalidate
> other smartags at different locations in the document. For instance, the
> begin
> and the end of a sentence is marked as a result of a "sentence too long"-
> issue. If the users chooses the "ignore"-action of the begin-smarttag, the
> corresponding end-smarttag would be removed too. Furthermore, the menu and
> toolbar have buttons/entries to hide/show the smarttags that are related to
> our extension. Therefore, we added a new interface "XMarkingAccess" that is
> implemented by SwXTextCursor and can be used in order to invalidate and
> repaint/remove/recolor the smartags within a particular text-range
> (https://issues.apache.org/ooo/show_bug.cgi?id=121732).
>
> We would like to present our modifications to the community since we think
> that they might add desirable functionality to AOO that enables the
> implementation of more powerful smarttag-extensions that could not be
> realized
> before.
>
> Here at Acrolinx, we have set up an AOO build environment for
> Windows/Linux/OSX which provides us with a patched AOO that can already be
> used together with our software. In the long run, we would like to integrate
> our software into a standard version of AOO.
>
> I'm looking forward to your comments and criticism.
>
> Best regards,
> Kai Labusch
>
just to let you know that I will take a look on it later, it seems I
will need a few minutes ...
But I appreciate that you take our concerns serious and reworked on your
patch. Your extension will be definitely useful.
Juergen