# Dokumente in Editoren



## Sunchezz (7. Mrz 2009)

Moin Leuts...

stehe momentan vor dem Problem das ich dokumente in meinem Programm bearbeiten will. allerdings sollten die schon nen bisschen besser aussehen als nur nen bisschen text... Das solln mal professionelle rechnungen mit kopfzeile und logo und sowas werden. Deshalb meine Frage wie man sowas am besten umsetzen kann! meine erste überlegung war ein word .doc als vorlage zu benutzen und dann nur noch die fehlenden infos einzusetzen, aber da weiß ich auch nich wie ich ein .doc in zum beispiel ein jEditorPane original einfüge.

danke schonmal für Ideen und vorschläge.


----------



## Wildcard (7. Mrz 2009)

Du kannst OpenOffice.org in eine Java Applikation einbetten.


----------



## hdi (7. Mrz 2009)

Falls es sich um eine Web-Applikation handelt:

FCKeditor - The text editor for Internet

Bietet das meiste schon von Haus aus, man kann aber quasi alles konfigurieren
(eigene Templates, Plugins usw)


----------



## Sunchezz (7. Mrz 2009)

nein, handelt sich nicht um eine Web-App. aber danke!

und wie war das mit OpenOffice.org? was muss man da machen? ich werd vosichtshalber einfach mal googln...


----------



## Wildcard (7. Mrz 2009)

OpenOffice.org hat eine 'Office Bean'. Damit lässt sich der Editor in ein einfaches Panel integrieren.


----------



## Sunchezz (7. Mrz 2009)

ok... hab jetzt ne weile gegooglt um das Paket zu finden, steht auch überall en ganze menge, aber nirgends wie man da ran kommt -.-

kann mir da vielleicht einer nen Link geben und mir ungefähr sagen wie man das teil in eine App einbindet??


----------



## Wildcard (7. Mrz 2009)

Im Download sind Snippets enthalten (zumindest im Source paket, bei binär bin ich nicht sicher).


----------



## Sunchezz (7. Mrz 2009)

achso, also das Bean paket is in der normalen OfficeDownload-Version mit drinne oder was?
ich dachte man kann das irgendwo einzeln runter laden...

muss dann auf dem zielrechner des Programms auch open Office installiert sein??


----------



## Wildcard (8. Mrz 2009)

Die Bean ist in einer OOo Standard Installation enthalten, aber du brauchst die UNO Bibliotheken zur kommunikation (enthalten im verlinkten NOA Paket). OOo muss nicht installiert sein, die Binaries reichen, und du kannst sie mit deinem Programm ausliefern wenn du möchtest.


----------



## Sunchezz (8. Mrz 2009)

ok... ich hab mir jetzt das ganze zeug runter geladen, aber das is für mich als anfänger jetzt doch etwas viel auf einmal gewesen. Irgendwie hab ich kein Plan was ich jetzt wie machen muss um da nen laufenden Editor auf ein Panel zu bekommen -.-


und nur mal so ganz am rande: kann ich dokumente die ich damit in meinem programm erstelle dann in nem normalen JEditorPane darstellen?


----------



## Wildcard (8. Mrz 2009)

Nein, es sei denn du möchtest die Rendering Capabilities einer Office Suite nachprogrammieren. Aber warum meinst du eine JEditorPane zu benötigen, wenn du bereits den echten Editor in deinem Programm hast?
Wie gesagt, dort liegen Code Snippets für konkrete Anwendungsfälle, so auch das embedden einer Office Bean vor. Ist also im Prinzip nur Copy Paste.


----------



## Sunchezz (8. Mrz 2009)

Ok, jetzt nochmal für Anfänger. Ich kann mit diesem Fachschinesisch nicht wirklich viel anfangen! Was sind Snippets? Eigentlich muss ich doch jetzt nur noch wissen welche klassen ich genau einbinden und benutzen muss... oder?? Son kleiner Schnipsel als beispiel wär glaub ich recht hilfreich!
Und den JEditorPane wollt ich benutzen um die Dokumente einfach nur darzustellen ohne die möglichkeit sie zu verändern, sozusagen eine Vorschau!

Sorry falls ich nen bisschen anstrengend bin xD


----------



## Wildcard (8. Mrz 2009)

Sunchezz hat gesagt.:


> Ich kann mit diesem Fachschinesisch nicht wirklich viel anfangen! Was sind Snippets? Eigentlich muss ich doch jetzt nur noch wissen welche klassen ich genau einbinden und benutzen muss... oder?? Son kleiner Schnipsel als beispiel wär glaub ich recht hilfreich!


Ein Snippet ist ein Beispielschnipsel


----------



## Sunchezz (9. Mrz 2009)

So, ich denke ich hab nen nützliches Beispiel gufenden, den SWriter. So, der will aber nich Kompilieren weil er die packages nicht findet -.- und das obwohl ich die nötigen UNO-Jars im selben verzeichnis habe, also das ridl.jar, juh.jar und jurt.jar! kann mir das mal einer erklären?


----------



## Wildcard (9. Mrz 2009)

Alle jars von NOA müssen in deinen Build Path


----------



## Sunchezz (12. Mrz 2009)

Ok, ich hab jetzt alle jars aus dem verzeichnis "\OpenOffice.org 3\URE\java" in das Verzeichnis der SWriter Klasse kopiert, und dennoch findet er 90% (ungefähr) der gebrauchten Packages nicht. Langsam zweifle ich ein bisschen an meiner Kompetenz 
Ich schätze mal ich habe bei der Installation etwas falsch gemacht. Obwohl ich eigentlich alles wie beschrieben getan habe. Auch in anderen Foren wurde beschrieben was gemacht werdne muss, und mir ist aufgefallen das öfter das JAR unoil.jar erwähnt wurde, welches ich aber nicht in meinem Verzeichnis habe! liegt das an der neuen 3er Version des OpenOffice ? Oder habe ich wirklich etwas falsch gemacht?


----------



## Wildcard (12. Mrz 2009)

Was hast du überhaupt installiert? Besagtes NOA, oder wagst du dich an blankes UNO?
Ich kann wir wirklich nur empfehlen, die NOA API zu verwenden.


----------



## Sunchezz (13. Mrz 2009)

wie bereits gesagt, ich hab dat UNO ding gegoogelt und absolut nix zum download gefunden... das einzige was ich finden konnte war das OpenOffice3 Paket wo angeblich alles drinne is was man braucht... aber verwirrung machte sich breit als nix funktioniert hat und ich nirgends was von UNO finden konnte.
Also, ich wär echt glücklich wenn du mir präziser beschreiben könntest was genau zu tun ist! Hab mich damit halt noch nie beschäftigt und kann daher nicht mit einer Selbstverständlichkeit genau wissen was du alles meinst 

(falls das unterschwellig agressiv klingt, ich weiß nur nich wie ich das anders ausdrücken soll )


----------



## Wildcard (13. Mrz 2009)

Ich sagte doch: NOA, nicht UNO.
Veröffentlichungen &mdash; ubion.ORS
Das lädst du runter, das ist der Java spezifische Teil und nichts anderes benötigst du in deinem Java Projekt. Im Paket sind Codebeispiele enthalten darunter auch welche, die Zeigen wie man OOo in ein AWT Panel embedded.
Ausserdem brauchst du entweder eine OOo Installation, oder OOo Portable.


----------



## Sunchezz (17. Jun 2009)

So, nach längerer Pause kann ich mich nun endlich wieder meinem Problem widmen!
Danke nochmal für die viele Hilfe die mir hier schon gegeben wurde.

Ich habe nun die meisten Griff bekommen! Allerdings ist noch ein einziges übrig geblieben. Ziemlich banal eigentlich, und dennoch scheinbar unlösbar für MICH.

Ich kann trotz stundenlangem suchen nirgendswo das benötigte com.sun. package finden. 

Kann mir jemand sagen wo ich das bekomme?


----------



## Wildcard (18. Jun 2009)

Geht es auch genauer?


----------



## Sunchezz (18. Sep 2009)

Danke nochmal für deine Mühe Wildcard!

Ich bin jetzt ein ganzes Stückchen alleine weiter gekommen.
Allerdings ist noch nicht alles fertig.
Das OOo habe ich jetzt in meiner Anwendung zum laufen bekommen ( vielleicht sollte ich mal dazu sagen das es sich hierbei um eine swing Anwendung handelt)

Ich hatte bis heute das Problem das beim Start der Anwendung stehts die Fehlermeldung "can't lock drawing surface" kam. Das konnte ich jetzt umgehen/beheben dadurch das ich den Writer erst gestartet habe nachdem der Rest der kompletten Software fertig mit darstellen war! (wobei sich mir immernoch die Frage stellt warum das so ist)

Jetzt ist aber ein neues seltsames Problem aufgetreten.

Der Writer ist in einem Tab (JTabbedPane) untergebracht. Beim start der Software wird der Editor ganz normal dargestelt, wenn ich jetzt aber zu einem anderen Tab wechsle ist in dem neuen Tab genau an der Stelle wo im alten der Editor war ein großes weißes Rechteckt! Schonmal extrem unschön und auch hinderlich, weils andere Funktionen verdeckt. Aber es geht noch weiter. Wenn ich wieder zum alten Tab wechsle, wird nicht mehr der Editor dargestellt, sondern wieder ein großes weißes Rechteck diesmal allerdings mit zwei Scrollbars an beiden Seiten vom darunterliegenden JPanel. Noch nicht genug, die beiden bewegen sich unaufhörlich, so als würden ständig neue Editoren hinzugefügt zum Panel. Ich bin mir aber zu 99% sicher das das nicht der Fall ist, denn ich habe dafür gesorgt das bei jedem Tabwechsel der Editor beendet wird, und nur beim öffnen dieses bestimmten Tabs der Editor erneut gestartet wird.

Ich habe es bereits mit allem möglichen versucht:
repaint, revalidate, und große google suchaktion und auch hier habe ich bereits stunden geschaut.
(ich muss zugeben das ich mir nicht sicher was revalidate gebirkt, aber es hat mir bei einigen Darstellungsproblemen geholfen )

Ich kann mir nur vorstellen das es daran liegt das eine eigenständige Software in eine andere eingebunden wird, obwohl ich ja nicht der erste wäre der das tut -.- also muss es ja irgendwie funktionieren!

(Ich hoffe es wird nicht nötig den Code zu posten, denn der besteht aus ca. 20 Klassen und einigen MB anderen Dateien.  )


Vielen Dank schonmal für jegliche Hilfe!!!


----------



## Wildcard (18. Sep 2009)

Du mischst AWT mit Swing (denn die Office Bean ist heavy weight). Das geht zwar, aber nur solange sich die Swing Components sich nicht direkt mit den AWT Components überdecken (wie bei einer JTabbedPane der Fall).


----------



## Sunchezz (18. Sep 2009)

Hmm... -.-

mit anderen Worten ich hab nen großes Problem wenn ich meine swing-Anwendung jetzt nicht komplett in AWT ändern will??

oder gibts da jetzt noch irgend ne Möglichkeit? wäre es machbar den Editor in einem gesonderten Panel außerhalb des TabbedPane zu implementieren?


----------



## Wildcard (18. Sep 2009)

Niemand redet davon die ganze Anwendung auf AWT umzustellen. Nur die JTabbedPane funktioniert so eben nicht. Gibt ja auch noch AWT Panel + CardLayout. Die packst du in ein JPanel das oben ein paar JLabel mit MouseListener hat (oder ähnlich) und fertig.


----------



## Sunchezz (18. Sep 2009)

Ok danke auf jeden Fall erstmal für die viele Mühe!!

vielleicht kann ich mich ja mal revangieren wenn du hilfe von mir brauchst... ^^ 
(Anfänger-)Spaß!!! 


Nein wirklich, vielen Dank!


----------



## Sunchezz (18. Sep 2009)

Hmm... verdammt, das habe ich über die ganze vergangene Zeit schon fast vergessen:

im Prinzip liegt das EditorPanel garnicht im JTappedPane. Eigentlich habe ich fast wie du beschrieben hast mir nur das TabbedPane genommen, nen MouseListener drauf gelegt und dann die Positionen der einzelnen Tabs  mit extra JInternalFrames verbunden. also Tab 1 = InternalFrame1
je nach einfachem Klick oder doppeltem wird der Internal Frame normal dargestellt, oder maximiert/minimiert. 
Also liegt mein EditorPanel im InternalFrame, welcher aber nichts mit dem TabbedPane von der ContainerHirarchie her zu tun hat.

Ich hoffe es ist klar geworden was gemeint ist


----------



## Sunchezz (18. Sep 2009)

Ich stelle immer wieder fest rumwurschteln und probieren ist die beste Möglichkeit etwas herauszufinden 

Also das Problem mit den Weißen Flecken auf den anderen Tabs ist behoben.
--> Ich habe das Untergrund Panel des Editors als AWT-Panel implementiert!

Aber jetzt hat sich das vorhin beschriebene Phenomän mit den Scrollbars verkleinert, aber es besteht weiterhin ein anderes^^
wenn ich den tab wechsle, und dann wieder zurückgehe, habe ich 2 editoren im gleichen Panel, nur halt nicht wirklich S). das Panel wird sozusagen geteilt, und nur noch auf der rechten Seite des Panels wird der Editor dargestellt, jetzt nur leider halb so klein. Die linke seite ist in bekanntem Weiß -.-
Eigentlich sieht es ja so aus als ob zwei editoren da sind, aber das kann nicht sein... ich lösche bei jedem Wechsel das blöde Panel!


----------



## Wildcard (18. Sep 2009)

Warum denn löschen? Nimm Cardlayout


----------



## Sunchezz (20. Sep 2009)

Dann wird der Editor wieder ganicht mehr angezeigt! -.-
So langsam werde ich wahnsinnig^^

Es scheint als ob der nur das GridLayot akzeptiert. Habe alle anderen mal durchprobiert!
Es muss also an was anderem liegen.


----------



## Wildcard (20. Sep 2009)

Wie benutzt du denn CardLayout?


----------



## Sunchezz (20. Sep 2009)

Ich habe dem darunterliegenden Panel das CardLayout zugewiesen.

Ist das falsch?


----------



## Sunchezz (20. Sep 2009)

So, ich habe jetzt geschafft! Ich finde es zwar sehr umständig was ich machen musste, aber es funktioniert. 
Ich musste jetzt bei jedem Tabwechsel das OOO deaktivieren, Das "NoaPanel" vom darunterliegenden Panel entfernen, und es danach wieder leer hinzufügen. Dann wird erst das NoaPanel wie am anfang neu gestartet und dem Panel hinzugefügt...

Es bleibt mir weiterhin ein Rätsel warum es nicht ohne neustart funktioniert!!! Ich schätze mal wegen den vielen Swing-Elementen und dem AWT Editor dazwischen der dann nicht mit dem repaint klar kommt!

Wenn jemand ne bessere lösung hat die funktioniert würde ich mich freuen! meine ist nämlich ziemlich langsam -.- Zwar ausreichend, aber Trotzdem unschön.
Außerdem ist das OOO noch scheinbar verbugt, oder es ist das Noa-Paket was nicht einwandfrei arbeitet : Es kommt teilweise vor das der Editor ohne leeres Blatt startet. nach einigen Versuchen ist dann aber doch wieder eine Seite zu sehen! Alles Seltsam 

Und dennoch vielen Dank für alle die geholfen haben!!!
Besonders Wildcard


----------



## Wildcard (21. Sep 2009)

Sunchezz hat gesagt.:


> Ich habe dem darunterliegenden Panel das CardLayout zugewiesen.
> 
> Ist das falsch?


Und dann? Du musst dann auch bestimmen welches Kind gerade angezeigt werden soll 
How to Use CardLayout (The Java™ Tutorials > Creating a GUI with JFC/Swing > Laying Out Components Within a Container)

Deine Lösung ist übrigens ziemlich daneben, mach es lieber richtig, sonst bekommst du damit Probleme.
Ich würde dir empfehlen von 0 Anzufangen mit einem Frame der ein Panel mit Cardlayout hat und dort zwei OOo Dokumente anzeigt + Ein Button um zu wechseln.
Das macht es für dich einfacher weil du dich auf das konkrete Problem beschränkst, und es macht es mir einfacher, weil du dann ein lauffähiges Code Snippet posten kannst mit dem ich dir helfen kann wenn etwas nicht funktioniert.


----------



## Sunchezz (24. Sep 2009)

So... ich habe jetzt mal das ganze Projekt hochgeladen....

http://www.java-leopard.de/Sunny/Projekt.rar

Ne Textdatei ist dabei... 

Das ganze dürfte ziemlich unübersichtlich sein, weils erst die Probeversion ist!
Schreibe das ganze denn nochmal ordentlich und übersichtlich wenn ich fertig bin xD

wäre schön wenn dus dir mal anguckst. Sag bescheid wenn dus dir runtergeladen hast damit ich es wieder löschen kann!


----------



## Wildcard (24. Sep 2009)

Nein, tut mir leid. Ich bin gerne bereit dir zu helfen, aber derart viel Quellcode werde ich nicht durchsehen.
Mach ein kleines Beispiel, das dein Problem reproduziert und sonst *nichts* tut, dann sehe ich was ich für dich tun kann.


----------



## Sunchezz (25. Sep 2009)

Hmm okay Schade!
Dann werde ich mich wohl mal hinsetzen und das alles reduzieren.
Ich hoffe du hast die Readme gelesen und nur die beiden klassen angesehen...

Wenn ja und dir das trotzdem alles zuviel ist, werd ich wohl in den sauren Apfel beißen müssen 

Aber anstatt zu nörgeln sollte ich vielleicht lieber dankbar sein!! ^^


----------



## Wildcard (25. Sep 2009)

Ja, habe die Readme gesehen aber meiner Meinung nach reichen diese beiden Klassen nicht als Kontext. Ich habe mich dann ein paar Klassen weiter durchgegraben, recht viel duplizierten Code gesehen und beschlossen, das eine sinnvolle Fehleranalyse kaum möglich ist ohne das ganze Ding durchzugehen.


----------



## Sunchezz (7. Okt 2009)

Ja, wie gesagt... der ganze duplizierte Code hängt mit der entwicklung zusammen :-D
Andauernd blitzideen die sofort ausprobiert werden müssen und da vergesse ich manchmal das ich was ähnliches oder das gleiche bereits woanders schon habe 

Egal, zurück zum Problem:
Ich habe mir mal die Freiheit genommen und einen NOA-Entwickler auf das Problem angesprochen, der meinte das es am JInternalFrame liegt. Er bekommt das gleiche Problem bei einem von ihm geschriebenen Beispiel.
Nun soviel zu dem Thema.
Das wird letztendlich wohl die kompatiblität vom OOo zum Frame sein.

Ich kann nur hoffen das er sich irrt


----------

