Writer einbetten
Sind Open Office 1.1.4 und das entsprechende SDK installiert und das Programm wie im Developer\'s Guide beschrieben konfiguriert ("Make the office listen", Kapitel 2, Seite 31), kann\'s losgehen. Der Developer\'s Guide verwendet Java-Beispiele, die man per Kommandozeile kompiliert oder in Net Beans lädt. Selbstverständlich ist das Office-Bean auch JBuilder-kompatibel.
Zu Beginn erstellt der angehende Open-Office-Programmierer ein neues Projekt mit einer AWT-Anwendung und fügt in den Projekteigenschaften als benötigte Bibliotheken alle Archive unterhalb »program/classes« der Open-Office-Installation hinzu - wie erwähnt befinden sich diese Klassen nicht im SDK. Dann kopiert er die Dateien »Office.java«, »OfficeWriter.java«, »BasicOfficeBean.java« und »OfficeCommand.java« aus »examples/DevelopersGuide/OfficeBean/OfficeWriterBean« beziehungsweise »examples/DevelopersGuide/OfficeBean/« in den Pfad des Package, ändert deren Package-Deklaration entsprechend und nimmt sie in das Projekt auf.
Grafische Oberfläche gestalten
Der GUI-Entwickler startet das Designer-Programm für »Frame1«, wählt als Layout-Manager »XYLayout«, sucht dann in der Bean-Auswahl nach »OfficeWriter« und positioniert ihn im Fenster. Wenn er »import com.sun.star.beans.LocalOfficeConnection« hinzufügt, kann er einen AWT-Button platzieren, der »officeWriter1.setOfficeConnection(new LocalOfficeConnection())« und in einem Try-Catch-Block »officeWriter1.load("private:factory/swriter")« ausführt. Zusätzlich empfiehlt sich ein »WindowListener«, der beim Schließen der Anwendung »officeWriter1.closeConnection()« aufruft, sofern »officeWriter1« nicht gleich »null« ist.
Dabei ist interessant, dass es sich bei »private:factory/swriter« um einen speziellen Uniform Resource Locator handelt, der ein neues Writer-Dokument erzeugt. Jede andere URL, etwa mit den Protokollen »file://« für das Dateisystem oder »http://« für WebDAV, lädt das entsprechende Dokument.
| Listing 4: Drucken |
|---|
01 com.sun.star.beans.PropertyValue[] printerDesc = new com.sun.star.beans.PropertyValue[1];
02 printerDesc[0] = new com.sun.star.beans.PropertyValue();
03 printerDesc[0].Name = "Name";
04 printerDesc[0].Value = "<ml1650>";
05
06 try {
07 xPrintable.setPrinter(printerDesc);
08 } catch (com.sun.star.lang.IllegalArgumentException ex2) {
09 ex2.printStackTrace();
10 }
|
Das neue Programm startet Open Office durch den »setOfficeConnection«-Aufruf, sobald der Anwender den Knopf drückt (Abbildung 1). Aber auch dies passiert wie beim richtigen Open Office nur einmal: Hat der User mehrere Fenster oder mehrere Open-Office-Dokumente in einem Fenster geöffnet, fällt auch hier die volle Ladezeit nur einmal an.
Arbeiten lässt sich mit dem eigenen Open-Office-Ableger erst, wenn die Menüleiste sichtbar ist: Gestaltet es sich doch sonst etwas schwierig, zum Beispiel Grafiken einzufügen. Nach dem Öffnen eines Dokuments dient dazu die Anweisung »officeWriter1.setMenuBarVisible(true)«. Dass dies ohne aktives Dokument nicht funktioniert, also nicht zuerst »setMenuBarVisible« und anschließend »load« aufgerufen werden kann, ist eines der Probleme, die das Office-Bean von Open Office 2 löst.
|
Listing 5: Text |
|---|
01 com.sun.star.util.XReplaceDescriptor xReplaceDescriptor = null;
02 com.sun.star.util.XSearchDescriptor xSearchDescriptor = null;
03 com.sun.star.util.XReplaceable xReplaceable = null;
04
05 xReplaceable = (com.sun.star.util.XReplaceable) com.sun.star.uno.UnoRuntime.
06 queryInterface(
07 com.sun.star.util.XReplaceable.class,
08 officeWriter1.getTextDocument());
09
10 xReplaceDescriptor = (com.sun.star.util.XReplaceDescriptor)
11 xReplaceable.createReplaceDescriptor();
12
13 xReplaceDescriptor.setSearchString("Word");
14 xReplaceDescriptor.setReplaceString("Writer");
15 xReplaceable.replaceAll(xReplaceDescriptor);
|
|
Listing 6: Einfügen von |
|---|
01 com.sun.star.beans.PropertyValue[] writerLoaderProps = new com.sun.star.beans.PropertyValue[1];
02 writerLoaderProps[0] = new com.sun.star.beans.PropertyValue();
03 com.sun.star.text.XText aText = officeWriter1.getTextDocument().getText();
04 com.sun.star.text.XTextCursor xtc = aText.createTextCursor();
05 xtc.gotoEnd(false);
06
07 com.sun.star.document.XDocumentInsertable ins = (com.sun.star.document.XDocumentInsertable) $$
08 com.sun.star.uno.UnoRuntime.queryInterface(com.sun.star.document.XDocumentInsertable.class, xtc);
09 try {
10
11 ins.insertDocumentFromURL("file:///tmp/MeinDokument.sxw",
12 writerLoaderProps);
13 } catch (Exception ex1) {
14 ex1.printStackTrace();
15 }
|
Diesen Artikel als PDF kaufen
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





