Office-Beans der Versionen 1 und 2
Das Office-Bean dient dem Einbetten der Office-Funktionalität in Java-Programme. Es wird zwar im noch aktuellen Developer\'s Guide von Open Office 1.1 beschrieben (Kapitel 16), doch ist diese Version nur umständlich einzusetzen. Das hat nichts damit zu tun, dass das Open Office Application Programming Interface in irgendeiner Form schlecht wäre - im Gegenteil, allen Unkenrufen zum Trotz ist das API gut dokumentiert und sehr zielstrebig.
Laut Michael Hönnig, dem Projektleiter für das Open-Office-API, gibt es drei Gründe, warum Entwickler für Version 1.1 das Office-Bean in wesentlichen Teilen neu schreiben müssen:
-
Es ist keine offizielle Basisklasse:
»BasicOfficeBean« existiert nur als SDK-Beispiel. Ihm
fehlen wichtige Methoden und Parameter (zum Beispiel die Optionen
für »loadComponentFromURL«) und die
Fehlerbehandlung ist nur rudimentär implementiert. Da viele
Programmierer die Klasse individuell anpassen, kann Sun keine
allgemeinen Bugfixes dafür liefern. -
Es ist mit dem alten Bean nicht möglich, die
Window-Parent-Beziehung wieder aufzuheben, wenn zum Beispiel eine
AWT-Komponente aus ihrem Parent entfernt wurde. Auch das Beenden
des Programms gestaltet sich schwierig, weil dafür eine
bestimmte Reihenfolge vorgeschrieben ist. Eine entsprechende
Änderung im SDK ist allerdings schon in neueren Versionen von
Open Office 1.1.x eingeflossen. -
Abstürze und Hänger in Open Office machen das
Java-Bean unbenutzbar, manchmal stirbt sogar das AWT.
Open Office 2 behebt all diese Probleme. Das Office-Bean ist damit zu einer offiziellen Komponente geworden. Java-Entwickler können mit ihm Programme schreiben, die Suns Originalklasse einfach benutzen.
|
Listing 1: Speichern |
|---|
01 public synchronized void saveToStream(java.io.OutputStream o)
02 throws java.io.IOException
03 {
04 removeXSelectionChangeListener();
05 super.save(o);
06 postInitListenersEvent();
07 }
|
| Listing 2: Speichern |
|---|
01 FileOutputStream o = null;
02 try {
03 o = new FileOutputStream("/tmp/MeinDokument.sxw");
04 } catch (FileNotFoundException ex) {
05 ex.printStackTrace();
06 }
07 try {
08 officeWriter1.saveToStream(o);
09 o.close();
10 } catch (IOException ex1) {
11 ex1.printStackTrace();
12 }
|
|
Listing 3: Einfaches |
|---|
01 com.sun.star.view.XPrintable xPrintable = (com.sun.star.view.XPrintable) com.sun.star.uno.UnoRuntime.queryInterface(com.sun.star.view.XPrintable.class,
02 officeWriter1.getTextDocument());
03
04 try {
05 xPrintable.print(null);
06 } catch (Exception ex1) {
07 ex1.printStackTrace();
08 }
|
Einschränkungen beim Gebrauch des Office-Bean
Aber auch in Open Office 2 gibt es einige Dinge, die zu beachten sind. Da es sich um ein natives Programm handelt, führt die Java Virtual Machine die Swing-Zeichenoperationen in der Regel optisch hinter der Darstellung von Open Office aus. In der Praxis heißt dies, dass ein Swing-Popup nur über einem Office-Bean gezeichnet werden kann, es sei denn, das Popup benutzt native Zeichenfunktionen.
Dies tut es, wenn man es als so genanntes Heavy-Weight zeichnen lässt, was aber nicht für alle Komponenten funktioniert, siehe[4]. Die Alternative besteht darin, alle grafischen Elemente nativ zu zeichnen, also in der Regel mit dem Abstract Window Toolkit (AWT). Profis könnten durchaus auch mit einer Einbettung in das Standard Widget Toolkit (SWT) Erfolg haben, für das jedoch keine Quelltextbeispiele existieren.
Alle Aktionen mit UNO setzen beim Endanwender ein Open Office voraus, das mit speziellen Optionen gestartet wird oder dessen Einstellungsdatei die Fernsteuerung erlaubt, siehe[3].
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...





