• Text an aktueller CursorPosition einfügen klappt nicht
Replies:
12
Views:
154
Up one level
• Text an aktueller CursorPosition einfügen klappt nicht
Posted by
JSteinhilber
at
2010-05-04 21:10:29
Hallo an Alle,
ich habe eine NativeView eingebettet in einem JPanel, das wiederum liegt in einem JInternalFrame (immer noch und leider....). So bislang kann der Benutzer Text eingeben oder Text via copy&paste einfügen und dann den ganzen Krempel abspeichern. Klappt wunderbar. Jetzt sollen Textbausteine an der aktuellen CursorPosition eingefügt werden. Und damit beginnt das Drama. Die Funktion Text "an der aktuellen Position einzufügen" arbeitet prima (prima aber nur auf dem Monitor....) private void insertTextAtCurrentPosition(String text){ ITextCursor textCursor = null; IViewCursor viewCursor = null; try { textCursor = document.getTextService().getText().getTextCursorService().getTextCursor(); viewCursor = document.getViewCursorService().getViewCursor(); ITextRange textRange = viewCursor.getStartTextRange(); textCursor.gotoRange(textRange, false); textCursor.getStart().setText(text); viewCursor = null; textCursor = null; textRange = null; } catch (TextException e) { e.printStackTrace(); } } Füge ich mit dieser Funktion den Text ein und versuche anschließend das Dokument abzuspeichern wird folgender Fehler geworfen: ag.ion.noa.NOAException: java.io.IOException: com.sun.star.io.IOException: java.net.SocketException: Connection reset at ag.ion.bion.officelayer.internal.document.PersistenceService.export(PersistenceService.java:366) Ist meine Funktion evtl. neben der Spur? Grüße Jürgen Steinhilber |
JSteinhilber
Member
Posts:
80
|
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
Markus Krueger
at
2010-05-05 09:07:56
Hallo Jürgen,
in meiner angehangenen Beispiel-App funktioniert dies (nicht auf das Layout der App achten, war nur Quick&Dirty). Ich habe deine Methode allerdings angepasst, so dass diese auch in Tabellen funktioniert (ist jetzt sogar nur 3 Zeilen lang Die "DisposedException" und "SocketException: Connection reset" sind der der OOo-Community relativ bekannt, leider. Scheint immer nur unter gewissen Umständen (Multithreadding, gleichzeitig mehrere Dokumente offen, Massenverarbeitung) aufzutreten, da OOo in solchen Fällen nicht gerade stabil als Service fungiert. Kannst hier mal was lesen: http://ubion.ion.ag/mainForumFolder/noa_forum/0124/ oder hier http://www.oooforum.org/forum/viewtopic.phtml?t=87512 oder googeln. Gruß, Markus |
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
JSteinhilber
at
2010-05-05 12:21:02
Hallo Markus und zunächst herzlichen Dank für die Unterstützung.
Massenverarbeitung scheidet aus, das Dokument ist zu diesem Zeitpunkt das Einzige das geöffnet ist. Ganz komisch ist, daß ich mit dem Dokument anstellen kann was ich will. Cut, copy & paste, Text von Hand eintippen speichern, weiter bearbeiten wieder speichern, alles kein Problem. Aber wehe ich füge den Text mittels der Methode ein (jetzt mittels Deiner optimierten Methode...) - rums ag.ion.bion.officelayer.document.DocumentException: java.io.IOException: com.sun.star.io.IOException: java.net.SocketException: Connection reset at ag.ion.bion.officelayer.internal.document.PersistenceService.store(PersistenceService.java:210) Das ist wirklich zu schade. Gerade diese Funktionalität brauche ich unbedingt für den ärtzlichen Entlassbericht. Gruß Jürgen |
JSteinhilber
Member
Posts:
80
|
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
Markus Krueger
at
2010-05-05 12:24:03
Hallo Jürgen,
also da wir das auch so nutzen, kann ich mir eigentlich nicht erklären, woran es liegen könnten. Gut wäre ein kleines unaghängiges Snippet von dir, in dem das Problem auftritt. Gruß, Markus |
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
JSteinhilber
at
2010-05-05 13:15:25
Hallo Markus,
das mit dem Snippet dürfte etwas schwierig werden, das ganze ist in eine mordsmäßige Umgebung eingebunden. Im Grunde tritt der Fehler nur dann auf wenn ich vor dem Abspeichern mit der Methode einen Text eingefügt habe und dann das Dokument in einen OutputStream exportiere. Dieser wird dann in einer MySql-Datenbank gespeichert. Das geht auch alles nur eben nicht wenn zuvor Text eingefügt wurde. Gespeichert wird wie unten aufgeführt, für meinen Geschmack völlig harmlos. ByteArrayOutputStream out = new ByteArrayOutputStream(); eltern.document.getPersistenceService().export(out, new RTFFilter()); Gruß Jürgen |
JSteinhilber
Member
Posts:
80
|
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
Markus Krueger
at
2010-05-05 13:18:13
Hmmm,
ich bin dann wohl auch mit meinem Latein am Ende Wenn ich das alles in der TestApp mache, dann funzt es ja. Gruß, Markus |
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
JSteinhilber
at
2010-05-05 13:51:19
Bei mir läuft Deine TestApp ebenfalls. und ich mache in meiner App exakt das selbe wie Du in der TestApp.
Eigentlich gibt es nur einen Unterschied: mein NativeView liegt in einem Panel eine JTabbedPane. Und die JTabbedPane wiederum in einem JInternalFrame. Das mit den JInternalFrames und der NativeView ist ja sowieso eine Sache für sich (icon / deicon geht nicht). Grüße Jürgen |
JSteinhilber
Member
Posts:
80
|
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
JSteinhilber
at
2010-05-05 14:11:23
Hi Markus ich glaube ich hab's!
Würdest Du in deiner TestApp noch eine vierte Speichern-Variante hinzufügen und dann Teste ob es bei Dir läuft? ByteArrayOutputStream out = new ByteArrayOutputStream(); document.getPersistenceService().export(out, RTFFilter.FILTER); Bei mir verschwindet (in Deiner TestApp) dann ebenfalls immer die NativeView und größtenteils erhalte ich noch zusätzlich die besagte Fehlermeldung. Gruß Jürgen |
JSteinhilber
Member
Posts:
80
|
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
Markus Krueger
at
2010-05-05 14:49:41
Hmm, bei mir läuft es mit der Testapp so. Hab das jetzt einfach als vierte Speicherroutine an hinter document.getPersistenceService().export(new FileOutputStream("p:/test2.pdf"
Läuft einwandfrei. |
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
Markus Krueger
at
2010-05-05 14:52:41
Was ist denn dein Betriebsystem? 32bit? Java Version? OpenOffice Version? etc. ...
|
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
JSteinhilber
at
2010-05-05 15:21:06
Hallo Markus, es ist der RTFFilter der den Fehler verursacht, aber nur dann wenn Text programmatisch eingefügt wurde.
Meine Umgebung ist WinXP Sp2 Java build 1.6.0_18-b07 NOA Version 2.2.2 OpenOffice.org 3.2.0 Gruß Jürgen |
JSteinhilber
Member
Posts:
80
|
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
Markus Krueger
at
2010-05-06 15:26:03
Hallo Jürgen,
konnte den Fehler so dann auch nachvollziehen. Scheint wohl ein Bug in OpenOffice.org zu sein, da dies auch nur bei RTF passiert. Ich hab dafür nun einen unschönen Workaround in der neuen angehangenen TestApp.java. Gruß, Markus |
• Re: Text an aktueller CursorPosition einfügen klappt nicht
Posted by
JSteinhilber
at
2010-05-08 19:34:39
Hallo Markus,
na da bin ich aber erleichtert. Ich dachte schon es läge daran daß ich zu blöd bin... Grüße Jürgen (Und danke für den Workaround. So ähnlich habe ich das auch gelöst, bis ich mich dann entschlossen habe alles in das ODT-Format zu konvertieren. Das ist ohnehin schneller und zwar sowohl beim speichern als auch beim laden) |
JSteinhilber
Member
Posts:
80
|


