Personal tools
You are here: Home Forum Nice Office Access (NOA) Text an aktueller CursorPosition einfügen klappt nicht

 • 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
Markus Krueger Manager
Posts: 507

 • 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
Markus Krueger Manager
Posts: 507

 • 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
Markus Krueger Manager
Posts: 507

 • 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";),PDFFilter.FILTER); dran gehangen.
Läuft einwandfrei.
Markus Krueger Manager
Posts: 507

 • 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. ...
Markus Krueger Manager
Posts: 507

 • 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
Markus Krueger Manager
Posts: 507

 • 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

Powered by Plone, the Open Source Content Management System

This site conforms to the following standards: