diff options
Diffstat (limited to 'odk/examples/DevelopersGuide/OfficeBean')
-rw-r--r-- | odk/examples/DevelopersGuide/OfficeBean/Makefile | 90 | ||||
-rw-r--r-- | odk/examples/DevelopersGuide/OfficeBean/OOoBeanViewer.java | 410 | ||||
-rw-r--r-- | odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor16.jpg | bin | 0 -> 321 bytes | |||
-rw-r--r-- | odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor32.jpg | bin | 0 -> 569 bytes | |||
-rw-r--r-- | odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono16.jpg | bin | 0 -> 321 bytes | |||
-rw-r--r-- | odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono32.jpg | bin | 0 -> 569 bytes |
6 files changed, 500 insertions, 0 deletions
diff --git a/odk/examples/DevelopersGuide/OfficeBean/Makefile b/odk/examples/DevelopersGuide/OfficeBean/Makefile new file mode 100644 index 000000000..09c10d05d --- /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 000000000..f87eb3678 --- /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 <code>desc</code> + * + * @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 Binary files differnew file mode 100644 index 000000000..cd9c5a602 --- /dev/null +++ b/odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor16.jpg diff --git a/odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor32.jpg b/odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor32.jpg Binary files differnew file mode 100644 index 000000000..ccab06b51 --- /dev/null +++ b/odk/examples/DevelopersGuide/OfficeBean/OfficeIconColor32.jpg diff --git a/odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono16.jpg b/odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono16.jpg Binary files differnew file mode 100644 index 000000000..cd9c5a602 --- /dev/null +++ b/odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono16.jpg diff --git a/odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono32.jpg b/odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono32.jpg Binary files differnew file mode 100644 index 000000000..ccab06b51 --- /dev/null +++ b/odk/examples/DevelopersGuide/OfficeBean/OfficeIconMono32.jpg |