Revert "Remove the Java OfficeBean example from the SDK"

This reverts commit 05ba63c6fc.

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 <hossein@libreoffice.org>
This commit is contained in:
Hossein
2026-08-16 13:14:31 +02:00
parent c831687ef2
commit ddb95685dd
9 changed files with 570 additions and 1 deletions
+1
View File
@@ -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 \
+6
View File
@@ -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 \
@@ -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))
@@ -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: */
Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

+63 -1
View File
@@ -161,13 +161,21 @@ Content Broker (UCB)</a></td>
<td class="content4"></td>
<td class="content3"><img
src="../../docs/images/arrow-1.gif"/></td>
<td><a href="#GraphicalUserInterfaces" title="link to the Graphical UserInterfaces examples">Graphical User Interfaces</a></td>
<td><a href="#OfficeBean"
title="link to the OOoBean examples">Office Bean</a></td>
<td class="content10"></td>
</tr>
<tr valign="top">
<td class="content3"><img
src="../../docs/images/arrow-1.gif"/></td>
<td><a href="#ScriptingFramework" title="link to the Scripting Framework examples">Scripting Framework</a></td>
<td class="content4"></td>
<td class="content3"><img
src="../../docs/images/arrow-1.gif"/></td>
<td><a href="#GraphicalUserInterfaces" title="link to the Graphical UserInterfaces examples">Graphical User Interfaces</a></td>
<td class="content10"></td>
<td class="content3"></td>
<td></td>
</tr>
</tbody>
</table>
@@ -2655,6 +2663,60 @@ configuration in various ways.</td>
</tr>
<tr>
<td class="content1"><img class="nothing8"
src="../../docs/images/nada.gif"/></td>
<td>
<table class="table2">
<tbody>
<tr>
<td>
<table class="table3">
<tbody>
<tr>
<td colspan="2" class="head1"><a name="OfficeBean">Office
Bean example</a></td>
<td align="right"> <a href="#examples"
title="link to the Developer's Guide examples overview"><img
class="navigate" src="../../docs/images/nav_up.png"/></a> <a
href="../../index.html" title="link to the SDK start page"><img
class="navigate" src="../../docs/images/nav_home.png"/></a> </td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table class="table4">
<tbody>
<tr class="thead">
<td class="cell20"> Example</td>
<td class="cell80">Description</td>
</tr>
<tr>
<td class="cell20"><img
src="../../docs/images/bluball.gif"/> <a
href="./OfficeBean/OOoBeanViewer.java"
title="link to OfficeBean/OOoBeanViewer.java">OOoBeanViewer</a></td>
<td class="cell80">Shows how to use the <code>OOoBean</code>
embedded in a Java AWT component. It shows how to load and store
documents as well as how to control toolbar visibility.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
<td class="content1"><img class="nothing8"
src="../../docs/images/nada.gif"/></td>
</tr>
<tr>
<td colspan="3"><img class="line"
src="../../docs/images/sdk_line-1.gif"/></td>
</tr>
<tr>
<td class="content1"><img class="nothing8"
src="../../docs/images/nada.gif"/></td>
<td>
<table class="table2">