<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"Préformaté HTML Car";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.PrformatHTMLCar
        {mso-style-name:"Préformaté HTML Car";
        mso-style-priority:99;
        mso-style-link:"Préformaté HTML";
        font-family:"Courier New";
        mso-fareast-language:FR;}
span.tlid-translation
        {mso-style-name:tlid-translation;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:575822292;
        mso-list-type:hybrid;
        mso-list-template-ids:810158946 789325626 67895321 67895323 67895311 67895321 67895323 67895311 67895321 67895323;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:53.25pt;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:89.25pt;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:125.25pt;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:161.25pt;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:197.25pt;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:233.25pt;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:269.25pt;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:305.25pt;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:341.25pt;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:1391076957;
        mso-list-type:hybrid;
        mso-list-template-ids:1470790630 1911054456 67895321 67895323 67895311 67895321 67895323 67895311 67895321 67895323;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:53.25pt;
        text-indent:-35.25pt;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FR" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hello everybody, <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                It is my first post on this mailing-list and probably not the last one, so I will introduce myself.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I’m Vincent LORENZO and I’m developing with my colleagues an UML modeler, called Papyrus and based on Eclipse (<a href="https://www.eclipse.org/papyrus/">https://www.eclipse.org/papyrus/</a> ).<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">We are developing a new feature to generate a text document from a UML model and we use the LibreOffice API.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">We found many examples to start a document creation and now we have a good prototype. Each relevant element of the UML model is transformed into title, section, paragraph, image, … in an odt file.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">At this step, we want to store additional datas for each LibreOffice elements, in order to identify the UML element used to create a title, a paragraph, … to be able to reverse future text changes into the initial UML
 model.  <o:p></o:p></span></p>
<p class="MsoNormal"><span class="tlid-translation"><span lang="EN-US"><o:p> </o:p></span></span></p>
<p class="MsoNormal"><span class="tlid-translation"><span lang="EN-US">We want these additional data not to be directly visible to the user.<o:p></o:p></span></span></p>
<p class="MsoNormal"><span class="tlid-translation"><span lang="EN-US">We want a start and end tag around each information coming from the uml model. (so inside a title, text, cell, …)
<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span lang="EN-US">Question 1: <o:p></o:p></span></u></p>
<p class="MsoNormal" style="text-indent:35.4pt"><span lang="EN-US">Currently we are studying the possibility to use the Bookmark field’s name to store these datas. We want to use the Bookmark with start and end tag, to get something like that.
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt;text-indent:35.4pt;text-autospace:none">
<span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">text:bookmark-start</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">text:name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"UML_element_qualified_name_and_others_useful_informations"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt;text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">              Some text</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">text:bookmark-end</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">text:name</span><span style="color:black">=</span><i><span style="color:#2A00FF">" UML_element_qualified_name_and_others_useful_informations "</span></i>
<span style="color:teal">/></span></span><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-US">In reality, I would prefer to be able to use a more structured datas, extending the Bookmark object (or using another solution ? ) to get that, something like that:
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt;text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">text:bookmark-start</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">text:name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"Bookmark1"</span></i>
<span style="color:#7F007F">umlElementQualifiedName=</span>”Package1::Class1” <span style="color:#7F007F">
umlElementKind</span><span style="color:black">=</span><i><span style="color:#2A00FF">"Class"</span></i>
<span style="color:#7F007F">umlElementfeature</span><span style="color:black">=</span><i><span style="color:#2A00FF">"name"</span></i>
<span style="color:#7F007F">id</span><span style="color:black">=</span><i><span style="color:#2A00FF">"xxx"</span></i><span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt;text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">                           Some text</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt;text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">text:bookmark-end</span><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">text:name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"Bookmark1"</span></i>
<span style="color:teal">/><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-left:35.4pt;text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:teal"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-US">but I have no idea if it is possible and how to do that. Please, does someone have an idea to structure my datas ?
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-US">Of course, if you have a better solution than Bookmark, fell free to propose it.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><u><span lang="EN-US">Question 2: <o:p></o:p></span></u></p>
<p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-US">Today, I succeed to create a such Bookmark, using the example:
<a href="https://api.libreoffice.org/examples/java/Text/BookmarkInsertion.java">https://api.libreoffice.org/examples/java/Text/BookmarkInsertion.java</a>.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-US">I have this code:
<o:p></o:p></span></p>
<pre style="margin-left:35.4pt"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;mso-fareast-language:EN-US"><o:p> </o:p></span></pre>
<pre style="margin-left:35.4pt"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;mso-fareast-language:EN-US">     //document is already created, I’m creating a title<o:p></o:p></span></pre>
<p class="MsoListParagraph" style="margin-left:88.65pt;text-indent:-35.25pt;mso-list:l1 level1 lfo2;text-autospace:none">
<![if !supportLists]><span lang="EN-US"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">                 
</span></span></span><![endif]><span lang="EN-US">xTextCursor.setString(text);<o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:88.65pt;text-indent:-35.25pt;mso-list:l1 level1 lfo2;text-autospace:none">
<![if !supportLists]><span lang="EN-US"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">                 
</span></span></span><![endif]><span lang="EN-US">xTextCursor.gotoEnd(false);<o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:88.65pt;text-indent:-35.25pt;mso-list:l1 level1 lfo2;text-autospace:none">
<![if !supportLists]><span lang="EN-US"><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman"">                 
</span></span></span><![endif]><span lang="EN-US">XInterface xSearchInterface = FindFirst(odtEditor.getXTextDocument(), text);  //(copy of the method provided by the example)<o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:88.65pt;text-indent:-35.25pt;mso-list:l1 level1 lfo2;text-autospace:none">
<![if !supportLists]><span lang="EN-US"><span style="mso-list:Ignore">4.<span style="font:7.0pt "Times New Roman"">                 
</span></span></span><![endif]><span lang="EN-US">XTextRange xSearchTextRange = UnoRuntime.queryInterface(com.sun.star.text.XTextRange.class, xSearchInterface);<o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:88.65pt;text-indent:-35.25pt;mso-list:l1 level1 lfo2;text-autospace:none">
<![if !supportLists]><span lang="EN-US"><span style="mso-list:Ignore">5.<span style="font:7.0pt "Times New Roman"">                 
</span></span></span><![endif]><span lang="EN-US">InsertBookmark(odtEditor.getXTextDocument(), xSearchTextRange, "niceBookMark"); //(copy of the method provided by the example)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt;text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt;text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt;text-autospace:none"><span lang="EN-US">So, in this example, I write text, I look for it, then I create a XTextRange and at the end, I can create the Bookmark. I’m not very have happy with this solution. I would
 prefer a solution without the search step, but I don’t know how to get a valid XTextRange (I admit I don’t yet well understand  the behavior of the API).
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:35.4pt;text-autospace:none"><span lang="EN-US">Please, do you have some pointer or code example ?<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US">I thank you to read me until here.
<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US">Have a nice day.
<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial",sans-serif;mso-fareast-language:FR">Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial",sans-serif;mso-fareast-language:FR">--
</span><span lang="EN-US" style="mso-fareast-language:FR"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial",sans-serif;mso-fareast-language:FR">Vincent LORENZO</span><span lang="EN-US" style="mso-fareast-language:FR"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial",sans-serif;mso-fareast-language:FR">01-69-08-17-24</span><span lang="EN-US" style="mso-fareast-language:FR"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:FR">CEA Saclay Nano-INNOV<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:FR">Institut CARNOT CEA LIST<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:FR">Point Courrier n° 174<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:FR">91 191 Gif sur Yvette CEDEX<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
</body>
</html>