From ddb95685dda6b0935322c36fc648e3f4f46a62fe Mon Sep 17 00:00:00 2001 From: Hossein Date: Thu, 19 Feb 2026 19:20:22 +0100 Subject: [PATCH] Revert "Remove the Java OfficeBean example from the SDK" This reverts commit 05ba63c6fce1954e52399e01ffbde2ff4f55f19e. Reason for revert: The goal is to re-introduce the example with AWT/Swing instead of applet in a subsequent patch, while preserving git history. Change-Id: I1210eea93149aefb5ad0f57216b2fbdaad9c224f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199755 Tested-by: Jenkins Reviewed-by: Hossein --- odk/CustomTarget_build-examples_java.mk | 1 + odk/Package_examples.mk | 6 + .../DevelopersGuide/OfficeBean/Makefile | 90 ++++ .../OfficeBean/OOoBeanViewer.java | 410 ++++++++++++++++++ .../OfficeBean/OfficeIconColor16.jpg | Bin 0 -> 321 bytes .../OfficeBean/OfficeIconColor32.jpg | Bin 0 -> 569 bytes .../OfficeBean/OfficeIconMono16.jpg | Bin 0 -> 321 bytes .../OfficeBean/OfficeIconMono32.jpg | Bin 0 -> 569 bytes odk/examples/DevelopersGuide/examples.html | 64 ++- 9 files changed, 570 insertions(+), 1 deletion(-) create mode 100644 odk/examples/DevelopersGuide/OfficeBean/Makefile create mode 100644 odk/examples/DevelopersGuide/OfficeBean/OOoBeanViewer.java create mode 100644 odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor16.jpg create mode 100644 odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor32.jpg create mode 100644 odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono16.jpg create mode 100644 odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono32.jpg diff --git a/odk/CustomTarget_build-examples_java.mk b/odk/CustomTarget_build-examples_java.mk index 675d35ce2330..c8cef347aa7b 100644 --- a/odk/CustomTarget_build-examples_java.mk +++ b/odk/CustomTarget_build-examples_java.mk @@ -24,6 +24,7 @@ my_example_dirs_java = \ DevelopersGuide/FirstSteps/HelloTextTableShape/java \ DevelopersGuide/Forms \ DevelopersGuide/GUI \ + DevelopersGuide/OfficeBean \ DevelopersGuide/OfficeDev \ DevelopersGuide/OfficeDev/Clipboard/java \ DevelopersGuide/OfficeDev/DesktopEnvironment \ diff --git a/odk/Package_examples.mk b/odk/Package_examples.mk index 92c9b6918503..b58041202541 100644 --- a/odk/Package_examples.mk +++ b/odk/Package_examples.mk @@ -250,6 +250,12 @@ $(eval $(call gb_Package_add_files_with_dir,odk_examples,$(SDKDIRNAME)/examples, DevelopersGuide/GUI/UnoMenu.java \ DevelopersGuide/GUI/UnoMenu2.java \ DevelopersGuide/GUI/oologo.gif \ + DevelopersGuide/OfficeBean/Makefile \ + DevelopersGuide/OfficeBean/OOoBeanViewer.java \ + DevelopersGuide/OfficeBean/OfficeIconColor16.jpg \ + DevelopersGuide/OfficeBean/OfficeIconColor32.jpg \ + DevelopersGuide/OfficeBean/OfficeIconMono16.jpg \ + DevelopersGuide/OfficeBean/OfficeIconMono32.jpg \ DevelopersGuide/OfficeDev/Clipboard/java/Clipboard.java \ DevelopersGuide/OfficeDev/Clipboard/java/ClipboardListener.java \ DevelopersGuide/OfficeDev/Clipboard/java/ClipboardOwner.java \ diff --git a/odk/examples/DevelopersGuide/OfficeBean/Makefile b/odk/examples/DevelopersGuide/OfficeBean/Makefile new file mode 100644 index 000000000000..09c10d05d722 --- /dev/null +++ b/odk/examples/DevelopersGuide/OfficeBean/Makefile @@ -0,0 +1,90 @@ +#************************************************************************* +# +# The Contents of this file are made available subject to the terms of +# the BSD license. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of Sun Microsystems, Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +#************************************************************************** + +# Builds the OOoBean of the Developers Guide + +PRJ=../../.. +SETTINGS=$(PRJ)/settings + +include $(SETTINGS)/settings.mk +include $(SETTINGS)/std.mk + +# Define non-platform/compiler specific settings +OUT_COMP_CLASS = $(OUT_CLASS)/OOoBeanViewer + +PACKAGE = org/libreoffice/sdk/examples/developers_guide/office_bean + +JAVAFILES = \ + OOoBeanViewer.java \ + +CLASSFILES = $(patsubst %.java,$(OUT_COMP_CLASS)/$(PACKAGE)/%.class,$(JAVAFILES)) + +SDK_CLASSPATH = $(subst $(EMPTYSTRING) $(PATH_SEPARATOR),$(PATH_SEPARATOR),\ + $(PATH_SEPARATOR)$(URE_CLASSES_DIR)/libreoffice.jar\ + $(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/officebean.jar\ + $(PATH_SEPARATOR)$(OUT_COMP_CLASS)) + +# Targets +.PHONY: ALL +ifeq "$(OS)" "MACOSX" +ALL : + @printf 'This example does not work on macOS\n' +else +ALL : \ + OOoBeanViewer +endif + +include $(SETTINGS)/stdtarget.mk + +$(CLASSFILES) : $(JAVAFILES) + -$(MKDIR) $(subst /,$(PS),$(@D)) + javac $(JAVAC_FLAGS) -classpath "$(SDK_CLASSPATH)" -d $(OUT_COMP_CLASS) $(JAVAFILES) + +OOoBeanViewer: $(CLASSFILES) + @echo -------------------------------------------------------------------------------- + @echo Please use the following command to execute the example! + @echo - + @echo $(MAKE) OOoBeanViewer.run + @echo -------------------------------------------------------------------------------- + +%.run: $(CLASSFILES) + $(SDK_JAVA) -classpath "$(SDK_CLASSPATH)" $(subst /,.,$(PACKAGE)).$(basename $@) + +%.dbg: $(JAR1_JAR) + jdb -classpath "$(SDK_CLASSPATH)" $(subst /,.,$(PACKAGE)).$(basename $@) + +.PHONY: clean +clean : + -$(DELRECURSIVE) $(subst /,$(PS),$(OUT_COMP_CLASS)) + diff --git a/odk/examples/DevelopersGuide/OfficeBean/OOoBeanViewer.java b/odk/examples/DevelopersGuide/OfficeBean/OOoBeanViewer.java new file mode 100644 index 000000000000..f87eb36786ea --- /dev/null +++ b/odk/examples/DevelopersGuide/OfficeBean/OOoBeanViewer.java @@ -0,0 +1,410 @@ +/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * The Contents of this file are made available subject to the terms of + * the BSD license. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Sun Microsystems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + *************************************************************************/ + +package org.libreoffice.sdk.examples.developers_guide.office_bean; + +import com.sun.star.comp.beans.OOoBean; +import javax.swing.filechooser.*; +import javax.swing.*; +import java.io.*; + +/* A simple Applet that contains the SimpleBean. + * + * This applet is a sample implementation of the + * OpenOffice.org bean. + * When initially loaded the applet has two buttons + * one for opening an existent file and one to open + * a blank document of a given type supported by + * OpenOffice.org eg. Writer, Calc, Impress, ... + * + */ + +public class OOoBeanViewer extends java.applet.Applet +{ + + /** + * Private variables declaration - GUI components + */ + private java.awt.Panel rightPanel; + private java.awt.Panel bottomPanel; + private javax.swing.JButton closeButton; + private javax.swing.JButton terminateButton; + private javax.swing.JButton newDocumentButton; + private javax.swing.JPopupMenu documentTypePopUp; + private javax.swing.JCheckBox menuBarButton; + private javax.swing.JCheckBox mainBarButton; + private javax.swing.JCheckBox toolBarButton; + private javax.swing.JCheckBox statusBarButton; + private javax.swing.JButton storeDocumentButton; + private javax.swing.JButton loadDocumentButton; + private javax.swing.JButton syswinButton; + private JTextField documentURLTextField; + private JMenuItem item; + private JFileChooser fileChooser; + private byte buffer[]; + + /** + * Private variables declaration - SimpleBean variables + */ + private OOoBean aBean; + + /** + * Initialize the Applet + */ + public void init() + { + //The aBean needs to be initialized to add it to the applet + aBean = new OOoBean(); + + //Initialize GUI components + rightPanel = new java.awt.Panel(); + bottomPanel = new java.awt.Panel(); + closeButton = new javax.swing.JButton("close"); + terminateButton = new javax.swing.JButton("terminate"); + newDocumentButton = new javax.swing.JButton("new document..."); + documentTypePopUp = new javax.swing.JPopupMenu(); + storeDocumentButton = new javax.swing.JButton("store to buffer"); + loadDocumentButton = new javax.swing.JButton("load from buffer"); + syswinButton = new javax.swing.JButton("release/acquire"); + + menuBarButton = new javax.swing.JCheckBox("MenuBar"); + menuBarButton.setSelected( aBean.isMenuBarVisible() ); + + mainBarButton = new javax.swing.JCheckBox("MainBar"); + mainBarButton.setSelected( aBean.isStandardBarVisible() ); + + toolBarButton = new javax.swing.JCheckBox("ToolBar"); + toolBarButton.setSelected( aBean.isToolBarVisible() ); + + statusBarButton = new javax.swing.JCheckBox("StatusBar"); + statusBarButton.setSelected( aBean.isStatusBarVisible() ); + + documentURLTextField = new javax.swing.JTextField(); + + //Set up the Popup Menu to create a blank document + documentTypePopUp.setToolTipText("Create an empty document"); + + item = documentTypePopUp.add("Text Document"); + item.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + createBlankDoc("private:factory/swriter", + "New text document"); + } + }); + + item = documentTypePopUp.add("Presentation Document"); + item.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + createBlankDoc("private:factory/simpress", + "New presentation document"); + } + }); + + item = documentTypePopUp.add("Drawing Document"); + item.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + createBlankDoc("private:factory/sdraw", + "New drawing document"); + } + }); + + item = documentTypePopUp.add("Formula Document"); + item.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + createBlankDoc("private:factory/smath", + "New formula document"); + } + }); + + item = documentTypePopUp.add("Spreadsheet Document"); + item.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + createBlankDoc("private:factory/scalc", + "New spreadsheet document"); + } + }); + + syswinButton.addActionListener( + new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + try + { + aBean.releaseSystemWindow(); + aBean.aquireSystemWindow(); + } + catch ( com.sun.star.comp.beans.NoConnectionException aExc ) + {} + catch ( com.sun.star.comp.beans.SystemWindowException aExc ) + {} + } + }); + + storeDocumentButton.addActionListener( + new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + try + { + buffer = aBean.storeToByteArray( null, null ); + } + catch ( Throwable aExc ) + { + System.err.println( "storeToBuffer failed: " + aExc ); + aExc.printStackTrace( System.err ); + } + } + }); + + loadDocumentButton.addActionListener( + new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + try + { + aBean.loadFromByteArray( buffer, null ); + } + catch ( Throwable aExc ) + { + System.err.println( "loadFromBuffer failed: " + aExc ); + aExc.printStackTrace( System.err ); + } + } + }); + + closeButton.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + close(); + } + }); + + terminateButton.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + terminate(); + } + }); + + newDocumentButton.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + documentTypePopUp.show((java.awt.Component)evt.getSource(), 0,0); + } + }); + + menuBarButton.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + aBean.setMenuBarVisible( !aBean.isMenuBarVisible() ); + } + }); + + mainBarButton.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + aBean.setStandardBarVisible( !aBean.isStandardBarVisible() ); + } + }); + + toolBarButton.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + aBean.setToolBarVisible( !aBean.isToolBarVisible() ); + } + }); + + statusBarButton.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(java.awt.event.ActionEvent evt) + { + aBean.setStatusBarVisible( !aBean.isStatusBarVisible() ); + } + }); + + documentURLTextField.setEditable(false); + documentURLTextField.setPreferredSize(new java.awt.Dimension(200, 30)); + + rightPanel.setLayout( new java.awt.GridLayout(10,1) ); + rightPanel.add(closeButton); + rightPanel.add(terminateButton); + rightPanel.add(newDocumentButton); + rightPanel.add(storeDocumentButton); + rightPanel.add(loadDocumentButton); + rightPanel.add(syswinButton); + rightPanel.add(menuBarButton); + rightPanel.add(mainBarButton); + rightPanel.add(toolBarButton); + rightPanel.add(statusBarButton); + + //bottomPanel.setLayout( new java.awt.GridLayout(1,1) ); + bottomPanel.setLayout( new java.awt.BorderLayout() ); + bottomPanel.add(documentURLTextField); + + setLayout(new java.awt.BorderLayout()); + + add(aBean, java.awt.BorderLayout.CENTER); + add(rightPanel, java.awt.BorderLayout.EAST); + add(bottomPanel, java.awt.BorderLayout.SOUTH); + } + + /** + * Create a blank document of type desc + * + * @param url The private internal URL of the OpenOffice.org + * document describing the document + * @param desc A description of the document to be created + */ + private void createBlankDoc(String url, String desc) + { + //Create a blank document + try + { + documentURLTextField.setText(desc); + //Get the office process to load the URL + aBean.loadFromURL( url, null ); + + aBean.aquireSystemWindow(); + } + catch ( com.sun.star.comp.beans.SystemWindowException aExc ) + { + System.err.println( "OOoBeanViewer.1:" ); + aExc.printStackTrace(); + } + catch ( com.sun.star.comp.beans.NoConnectionException aExc ) + { + System.err.println( "OOoBeanViewer.2:" ); + aExc.printStackTrace(); + } + catch ( Exception aExc ) + { + System.err.println( "OOoBeanViewer.3:" ); + aExc.printStackTrace(); + //return; + } + } + + /** closes the bean viewer, leaves OOo running. + */ + private void close() + { + setVisible(false); + aBean.stopOOoConnection(); + stop(); + System.exit(0); + } + + /** closes the bean viewer and tries to terminate OOo. + */ + private void terminate() + { + setVisible(false); + com.sun.star.frame.XDesktop xDesktop = null; + try { + xDesktop = aBean.getOOoDesktop(); + } + catch ( com.sun.star.comp.beans.NoConnectionException aExc ) {} // ignore + aBean.stopOOoConnection(); + stop(); + if ( xDesktop != null ) + xDesktop.terminate(); + System.exit(0); + } + + /** + * An ExitListener listening for windowClosing events + */ + private class ExitListener extends java.awt.event.WindowAdapter + { + /** + * windowClosed + * + * @param e A WindowEvent for a closed Window event + */ + public void windowClosed( java.awt.event.WindowEvent e) + { + close(); + } + + /** + * windowClosing for a closing window event + * + * @param e A WindowEvent for a closing window event + */ + public void windowClosing( java.awt.event.WindowEvent e) + { + ((java.awt.Window)e.getSource()).dispose(); + } + } + + public static void main(String args[]) + { + java.awt.Frame frame = new java.awt.Frame("OpenOffice.org Demo"); + OOoBeanViewer aViewer = new OOoBeanViewer(); + + frame.setLayout(new java.awt.BorderLayout()); + + frame.addWindowListener( aViewer.new ExitListener() ); + + aViewer.init(); + aViewer.start(); + + frame.add(aViewer); + frame.setLocation( 200, 200 ); + frame.setSize( 800, 480 ); + frame.show(); + } +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor16.jpg b/odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor16.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd9c5a602eff932be521ab82eeccdebde2f5d0e6 GIT binary patch literal 321 zcmex=LJ%Z3brs z4mLJ+HdYRHc6Lrq4lW)MULJ049!Vi#ei2zIc{y1r85so?J#_^o9c39A4RcK$149!N z6M1z@TMHu_J!2E2{|6YjIT!>O1Q;2W82%q&5CvMyfC5<9fx^lH3`|UnEKE$yFgZph zW=IS*#F=F5K2Z#MgRc;0RTt_CX>@2HRA^-&M@dak z|JwjV00;&K2L=TQ2L}fU2?z=d6b%du3k(?&6Au&}8Xq1V8XO!TBrYc)A}k{u94I#_ zEHE)NG&CP4IXyTsJT5adGXKB;3kU!p03ZPYA^`uy02u%P0s{d6000000000000000 z0|W&I2mizXC=dVw0s;X90s#aA00000000330|W&TApiyv6CyDbBP1m+5iXv z0RR9$0PdL_raKW^@-lbo(u00J+cPX{zxB2tZ=~DL;j!x*UCYp{vc_eM&1DnK2DZaz zk;v!ko~Bl{UhQ?UR(Pj{_v0i^8Cyq3L~-^HP3tq5iq$UWt(h3PvUS#@)(Ko8mb;eO zU>JZy02Ju#c#bql7^yo7{MJ3v)VT`DHEB}4Yw||5(BwU>AHl-yBVu^rPxU+l)y*oM z%$W-R0GSR_W-a?^67P&q{*ezv20aZo14G2@^*^y`_YGMs9Mrd17-9^zkB~Eu zFJmG0zr_4_0axqAN6V_d{-X`9>7dr4pkfpyReRWZG722JXedS=Ev@s<{OLG+w{^jh z#Z#6G73;?hc*R-bc?_|70e5E+e~>=MGB3~tcEI$!R(rZ~DLfySkdNCf0+Y*0M3D(3 zb)7(HRem8;f*-`5S-RbJ%=f3l{{SN-lG%#Ym_4#a5u`}xkrBuM4U|LJ%Z3brs z4mLJ+HdYRHc6Lrq4lW)MULJ049!Vi#ei2zIc{y1r85so?J#_^o9c39A4RcK$149!N z6M1z@TMHu_J!2E2{|6YjIT!>O1Q;2W82%q&5CvMyfC5<9fx^lH3`|UnEKE$yFgZph zW=IS*#F=F5K2Z#MgRc;0RTt_CX>@2HRA^-&M@dak z|JwjV00;&K2L=TQ2L}fU2?z=d6b%du3k(?&6Au&}8Xq1V8XO!TBrYc)A}k{u94I#_ zEHE)NG&CP4IXyTsJT5adGXKB;3kU!p03ZPYA^`uy02u%P0s{d6000000000000000 z0|W&I2mizXC=dVw0s;X90s#aA00000000330|W&TApiyv6CyDbBP1m+5iXv z0RR9$0PdL_raKW^@-lbo(u00J+cPX{zxB2tZ=~DL;j!x*UCYp{vc_eM&1DnK2DZaz zk;v!ko~Bl{UhQ?UR(Pj{_v0i^8Cyq3L~-^HP3tq5iq$UWt(h3PvUS#@)(Ko8mb;eO zU>JZy02Ju#c#bql7^yo7{MJ3v)VT`DHEB}4Yw||5(BwU>AHl-yBVu^rPxU+l)y*oM z%$W-R0GSR_W-a?^67P&q{*ezv20aZo14G2@^*^y`_YGMs9Mrd17-9^zkB~Eu zFJmG0zr_4_0axqAN6V_d{-X`9>7dr4pkfpyReRWZG722JXedS=Ev@s<{OLG+w{^jh z#Z#6G73;?hc*R-bc?_|70e5E+e~>=MGB3~tcEI$!R(rZ~DLfySkdNCf0+Y*0M3D(3 zb)7(HRem8;f*-`5S-RbJ%=f3l{{SN-lG%#Ym_4#a5u`}xkrBuM4U| - Graphical User Interfaces + Office Bean Scripting Framework + + + Graphical User Interfaces + + + @@ -2655,6 +2663,60 @@ configuration in various ways. + + + + + + + + + + +
+ + + + + + + +
Office +Bean example
+
+ + + + + + + + + + + +
ExampleDescription
OOoBeanViewerShows how to use the OOoBean +embedded in a Java AWT component. It shows how to load and store +documents as well as how to control toolbar visibility.
+
+ + + + + + + +