<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--
#**************************************************************
#  
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#  
#    http://www.apache.org/licenses/LICENSE-2.0
#  
#  Unless required by applicable law or agreed to in writing,
#  software distributed under the License is distributed on an
#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  KIND, either express or implied.  See the License for the
#  specific language governing permissions and limitations
#  under the License.
#  
#**************************************************************
 -->
<html>
<head>
  <title>Apache OpenOffice %PRODUCT_RELEASE% SDK - Examples</title>
  <link rel="stylesheet" type="text/css" href="../docs/sdk_styles.css">
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <meta name="author" content="J&uuml;rgen Schmidt">
  <meta name="created" content="2004-12-14">
</head>

<body class="sdkbody"><a name="examples"/>
<table class="table1" cellpadding=0>
  <tr style="background-image:url(../docs/images/sdk_head-2.png); backgorund-position: bottom; "> 
    <td class="background" colspan="3" align="left"><img src="../docs/images/sdk_head-1.png" width="800" height="120" usemap="#Map" border="0"></td>
  </tr>
  <tr> 
    <td colspan="3"><img  class="nothing10" src="../docs/images/nada.gif"></td>
  </tr>
  <tr> 
    <td class="content1"><img class="nothing8" src="../docs/images/nada.gif"></td>
    <td> 
      <table class="table2">
	    <tr> 
		  <td colspan="3"><img class="nothing1" src="../docs/images/nada.gif"></td>
        </tr>
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
			<td colspan="2" class="head1">Examples</td>
			<td align="right"><a href="../index.html" title="link to the SDK start page"><img class="navigate" src="../docs/images/nav_home.png"></a></td>
		  </tr> 
		  </table>
          </td>
        </tr> 
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
          <td colspan="3"> 
            <p>The SDK provides a rich set of examples in different programming 
			languages (Java, C++, Apache OpenOffice %PRODUCT_RELEASE% Basic, OLE) to illustrate the use 
			of the API and demonstrate how to benefit from the included word 
			processor, spreadsheet, presentation software, graphics program and 
			database of Apache OpenOffice %PRODUCT_RELEASE%.<br>
            Some fo the examples need a running office instance listening on a 
			port. If this is necessary you will get further information in the 
			makefiles.</p>
			<p>Every makefile contains at least one run target to execute an 
			running example, please see the makefile output in the different 
			example directories. Some of the examples which create a component have
			no run target. In these cases a document is provided which instantiates
			and runs the component (see the makefile output). Also the Basic 
			examples provide documents which use and shows the implemented 
			functionality.</p>
          </td>
		  </tr>
		  <tr> 
            <td><img class="line" src="../docs/images/sdk_line-1.gif"></td>
		  </tr>  
		  </table>
        </tr>
        <tr> 
          <td> 
          <table class="table3">
            <tr valign="top">
              <td class="content3"><img src="../docs/images/arrow-1.gif"></td>
              <td><a href="DevelopersGuide/examples.html" title="link to the Developer's Guide examples overview page">Developer's Guide examples</a></td>
              <td class="content75">The <a href="http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/OpenOffice.org_Developers_Guide" title="link to the Developer's Guide in the Wiki">Developer's Guide</a> comes 
			  with a rich set of examples which demonstrate the use of the API in 
			  the different application areas.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="../docs/images/arrow-1.gif"></td>
              <td><a href="#Java_examples" title="link to the Java examples section">Java examples</a></td>
              <td class="content75">Set of simple and more complex examples which 
			  shows the use of the API from Java.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="../docs/images/arrow-1.gif"></td>
              <td><a href="#Cpp_examples" title="link to the C++ examples section">C++ examples</a></td>
              <td class="content75">Small set of examples which shows the use of 
			  the API from C++.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="../docs/images/arrow-1.gif"></td>
              <td><a href="#Basic_examples" title="link to the Apache OpenOffice %PRODUCT_RELEASE% Basic examples section">Apache OpenOffice %PRODUCT_RELEASE% Basic examples</a></td>
              <td class="content75">Small set of examples which shows the use of 
			  the API from Apache OpenOffice %PRODUCT_RELEASE% Basic.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="../docs/images/arrow-1.gif"></td>
              <td><a href="#OLE_examples" title="link to the OLE examples section">Object Linking and Embedding (OLE) examples</a></td>
              <td class="content75">Examples which show the use of the API from 
			  OLE.</td>
            </tr>
            <tr valign="top">
              <td class="content3"><img src="../docs/images/arrow-1.gif"></td>
              <td><a href="#CLI_examples" title="link to the CLI examples section">Common Language Infrastructure (CLI) examples</a></td>
              <td class="content75">Examples which show the use of the API from 
			  the CLI.</td>
            </tr>
		  </table>
        </tr>
      </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">
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
			<td colspan="2" class="head1"><a name="Java_examples">Java examples</td>
			<td align="right">
		      <a href="#examples" title="link to the 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> 
		  </table>
          </td>
        </tr> 
		<tr>
		  <td>
		  <table class="table4">
		  <tbody>
		  <tr class="thead">
		  <td class="cell20">Text Document Examples</td>
		  <td class="cell80">Description</td>
		  </tr>
		  <tr>
		  <td class="cell20"><a href="java/Text/" title="link to the source directory of the Java Text examples">BookmarkInsertion</a></td>
		  <td class="cell80">This application connects to the office server and 
		  gets the <a href="../docs/common/ref/com/sun/star/lang/XMultiComponentFactory.html" title="link into the IDL reference to the interface com.sun.star.lang.XMultiComponentFactory"> multi component factory</a>. An empty text document will be opened 
		  and an example text will be entered. Afterwards, some bookmarks will be 
		  inserted.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/Text/" title="link to the source directory of the Java Text examples">HardFormatting</a></td>
		  <td class="cell80">This program connects to the office server and gets 
		  the <a href="../docs/common/ref/com/sun/star/lang/XMultiComponentFactory.html" title="link into the IDL reference to the interface com.sun.star.lang.XMultiComponentFactory"> multi component factory</a>. Furthermore, an empty text document will be 
		  opened, an example text will be entered, some text attributes will be 
		  inspected, and the <a href="../docs/common/ref/com/sun/star/beans/PropertyState.html" title="link into the IDL reference to the enum com.sun.star.beans.PropertyState"> PropertyState</a> will be checked from the selection.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/Text/" title="link to the source directory of the Java Text examples">SWriter</a></td>
		  <td class="cell80">The program connects to the office server and gets the 
          <a href="../docs/common/ref/com/sun/star/lang/XMultiComponentFactory.html" title="link into the IDL reference to the interface com.sun.star.lang.XMultiComponentFactory"> multi component factory</a>. An empty text document will be created, some
		  text will be entered, and a text table, a colored text, and text frame 
		  will be inserted.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/Text/" title="link to the source directory of the Java Text examples">StyleCreation</a></td>
		  <td class="cell80">The example connects to the office server and gets the 
          <a href="../docs/common/ref/com/sun/star/lang/XMultiComponentFactory.html" title="link into the IDL reference to the interface com.sun.star.lang.XMultiComponentFactory"> multi component factory</a>. An empty text document will be opened, a new 
		  paragraph style will be created, and applied.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/Text/" title="link to the source directory of the Java Text examples">StyleInitialization</a></td>
		  <td class="cell80">The program connects to the office server and gets the 
          <a href="../docs/common/ref/com/sun/star/lang/XMultiComponentFactory.html" title="link into the IDL reference to the interface com.sun.star.lang.XMultiComponentFactory"> multi component factory</a>. Thereafter, an empty text document will be 
		  opened and an example text will be entered. The paragraph collection will 
		  be used, in order to apply a different paragraph style on the 
		  paragraphs.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/Text/" title="link to the source directory of the Java Text examples">TextDocumentStructure</a></td>
		  <td class="cell80">The application connects to the office server and gets 
		  the <a href="../docs/common/ref/com/sun/star/lang/XMultiComponentFactory.html" title="link into the IDL reference to the interface com.sun.star.lang.XMultiComponentFactory"> multi component factory</a>. An empty text document will be opened, an
		  enumeration of all paragraphs and an enumeration of all text portions 
		  will be created.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/Text/" title="link to the source directory of the Java Text examples">TextReplace</a></td>
		  <td class="cell80">The example connects to the office server and gets the 
          <a href="../docs/common/ref/com/sun/star/lang/XMultiComponentFactory.html" title="link into the IDL reference to the interface com.sun.star.lang.XMultiComponentFactory"> multi component factory</a>. An empty text document will be created, an 
		  example text will be inserted, and some English spelled words will be 
		  replaced with US spelled words.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/Text/" title="link to the source directory of the Java Text examples">GraphicsInserter</a></td>
		  <td class="cell80">The GraphicsInserter creates a graphics object on an 
		  empty text document by setting its position, width, height, and URL.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/Text/" title="link to the source directory of the Java Text examples">WriterSelector</a></td>
		  <td class="cell80">This class gives you information on the selected 
		  objects (text range, text frame, or graphics) at an Apache OpenOffice 
		  Server.</td>
		  </tr>		  
		  <tbody>
		  </table>
		  </td>
		</tr>
		<tr>
		  <td>
		  <table class="table4">
		  <tbody>
		  <tr class="thead">
		  <td class="cell20">Spreadsheet Document Examples</td>
		  <td class="cell80">Description</td>
		  </tr>
		  <tr>
		  <td class="cell20"><a href="java/Spreadsheet/" title="link to the source directory of the Java Spreadsheet examples">CalcAddins</a></td>
		  <td class="cell80">This component adds new functions to the spreadsheet 
		  application. After registering the component, the inserted functions can 
		  be found with help of the functions autopilot. The new functions are 
		  assigned to the category <i>Add-in</i>.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/Spreadsheet/" title="link to the source directory of the Java Spreadsheet examples">ChartTypeChange</a></td>
		  <td class="cell80">This class loads an Apache OpenOffice %PRODUCT_RELEASE% Calc document and 
		  changes the type of the embedded chart.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/Spreadsheet/" title="link to the source directory of the Java Spreadsheet examples">EuroAdaption</a></td>
		  <td class="cell80">The application connects to the office server and gets 
		  the <a href="../docs/common/ref/com/sun/star/lang/XMultiComponentFactory.html" title="link into the IDL reference to the interface com.sun.star.lang.XMultiComponentFactory"> multi component factory</a>, opens an empty Calc document, enters an 
		  example text, sets the number format to DM, changes the number format to 
		  EUR (Euro), and uses the DM/EUR factor on each cell with content.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/Spreadsheet/" title="link to the source directory of the Java Spreadsheet examples">SCalc</a></td>
		  <td class="cell80">The program connects to the office server and gets the 
          <a href="../docs/common/ref/com/sun/star/lang/XMultiComponentFactory.html" title="link into the IDL reference to the interface com.sun.star.lang.XMultiComponentFactory"> multi component factory</a>. Then an empty calc document will be opened, 
		  cell styles will be created, some data will be inserted into the sheets, 
		  and the created cell styles will be applied. Finally, a 3D chart will be 
		  inserted.</td>
		  </tr>		  
		  <tbody>
		  </table>
		  </td>
		</tr>
		<tr>
		  <td>
		  <table class="table4">
		  <tbody>
		  <tr class="thead">
		  <td class="cell20">Drawing Document Examples</td>
		  <td class="cell80">Description</td>
		  </tr>
		  <tr>
		  <td class="cell20"><a href="java/Drawing/" title="link to the source directory of the Java Drawing examples">SDraw</a></td>
		  <td class="cell80">This program connects to the office server and gets 
		  the <a href="../docs/common/ref/com/sun/star/lang/XMultiComponentFactory.html" title="link into the IDL reference to the interface com.sun.star.lang.XMultiComponentFactory"> multi component factory</a>. Afterwards, an empty text document will 
		  be created and some shapes will be inserted on the draw page.</td>
		  </tr>		  
		  <tbody>
		  </table>
		  </td>
		</tr>
		<tr>
		  <td>
		  <table class="table4">
		  <tbody>
		  <tr class="thead">
		  <td class="cell20">Document Handling Examples</td>
		  <td class="cell80">Description</td>
		  </tr>
		  <tr>
		  <td class="cell20"><a href="java/DocumentHandling/" title="link to the source directory of the Java DocumentHandling examples">DocumentConverter</a></td>
		  <td class="cell80">The program offers a service that converts arbitrary 
		  documents to a favored document type.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/DocumentHandling/" title="link to the source directory of the Java DocumentHandling examples">DocumentLoader</a></td>
		  <td class="cell80">The <i>DocumentLoader</i> can open a new or an 
		  existing document.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/DocumentHandling/"title="link to the source directory of the Java DocumentHandling examples">DocumentPrinter</a></td>
		  <td class="cell80">The <i>DocumentPrinter</i> allows you to print the 
		  favored pages of a specified document on your favored printer.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/DocumentHandling/" title="link to the source directory of the Java DocumentHandling examples">DocumentSaver</a></td>
		  <td class="cell80">The DocumentSaver shows how to save a document and 
		  how you can change the type of your document.</td>
		  </tr>		  
		  <tbody>
		  </table>
		  </td>
		</tr>
		<tr>
		  <td>
		  <table class="table4">
		  <tbody>
		  <tr class="thead">
		  <td class="cell20">UNO Component Examples</td>
		  <td class="cell80">Description</td>
		  </tr>
		  <tr>
		  <td class="cell20"><a href="http://wiki.services.openoffice.org/wiki/Object_Inspector" title="link to the Object Inspector project page in the wiki">Object Inspector</a></td>
		  <td class="cell80">The Object Inspector is primarily an auxiliary tool 
		  for the developer, which can present information about an object of the 
		  Apache OpenOffice %PRODUCT_RELEASE% API at run-time. Depending on the object to be inspected, 
		  appropriate methods, interfaces, services, and attributes can be displayed
		  to the developer. The methods, interfaces, services and attributes are 
		  represented in a predictable tree. If the attributes contained in an 
		  object are to be examined, the appropriate nodes in the tree can be 
		  expanded with the help of the mouse. For each non primitive object, five 
		  categories are offered to the user, as long as those are available with 
		  that object. The Object Inspector is currently available as a NetBeans project 
		  only because of major code changes. Please see the <a href="http://wiki.services.openoffice.org/wiki/Object_Inspector" title="link to the Object Inspector project page in the wiki">project page</a> for further details.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/MinimalComponent/" title="link to the source directory of the Java MinimalComponent example">MinimalComponent</a></td>
		  <td class="cell80">This class provides a minimal UNO component. You can 
		  take this class as a base for your own components. By extensions of this 
		  class it is possible to also extend the function range of the Office.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/PropertySet/" title="link to the source directory of the Java PropertySet example">PropTest</a></td>
		  <td class="cell80">Contains a component that provides property set 
		  interfaces by means of inheriting <a href="../docs/java/ref/com/sun/star/lib/uno/helper/PropertySet.html" title="link into the Java UNO reference to the PropertySet helper class">com.sun.star.lib.uno.helper.ProperterSet</a>.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/ToDo/" title="link to the source directory of the Java ToDo example">ToDo</a></td>
		  <td class="cell80">For every to-do listed in a spreadsheet document, this
		  component calculates the start date, day of week of the start date, the 
		  end date, and the day of week of the end date. All calculations are 
		  dependent upon the values of &quot;Needed Days&quot;, &quot;Due Date&quot;
          and &quot;Status&quot;. The columns &quot;Needed Days&quot; and 
		  &quot;Status&quot; are mandatory. The first to-do should be placed in 
		  row nine. The date to start the calculation should be placed in cell C6. 
		  The private holidays should be placed in cell K4/K5 and below.<br>
          All rows will be calculated up to the first empty cell in the first 
		  column. If a cell in the column &quot;Due Date&quot; is colored red, 
		  you should take a look at your entries.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="java/EmbedDocument/EmbeddedObject" title="link to the source directory of the Java EmbeddedObject example">EmbeddedObject</a></td>
		  <td class="cell80">Contains a component that provides an example of embedded object implementation.</td>
		  </tr>		  
		  <tbody>
		  </table>
		  </td>
		</tr>
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
		  <td  colspan="3">
		  <p>Additional information:</p>
		  <p>
		  <a href="http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/Simple_Component_in_Java" title="link to the &quot;Simple component in Java&quot; chapter in the Developer's Guide">How to write a UNO component in Java</a><br>
		  <a href="http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Java/Java_Language_Binding" title="link to the &quot;Java UNO Language Bnding&quot; chapter in the Developer's Guide">Java UNO Language Binding</a><br>
		  <a href="http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/Debugging" title="link to the &quot;Debugging Java components&quot; chapter in the Developer's Guide">Debugging Java components</a><br>
		  </p>
		  </td> 
		  </tr> 
		  </table>
          </td>
        </tr> 
      </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">
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
			<td colspan="2" class="head1"><a name="Cpp_examples">C++ examples</td>
			<td align="right">
		      <a href="#examples" title="link to the 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> 
		  <tr> 
		  <td  colspan="3">
		  The DocumentLoader example needs a running office server, before 
		  running this program you should invoke the office with the following 
		  command:
		  <blockquote>
		  <code>soffice &quot;-accept=socket,host=localhost,port=2083;urp;StarOffice.ServiceManager&quot;</code>
		  </blockquote>
		  You can also customize the mentioned host and port to your needs.
		  </td> 
		  </tr> 
		  </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"><a href="cpp/DocumentLoader/"title="link to the source directory of the C++ DocumentLoader example">DocumentLoader</a></td>
		  <td class="cell80">This component works the same as the appropriate Java 
		  example, but is implemented in C++.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="cpp/counter/" title="link to the source directory of the C++ counter example">Counter</a></td>
		  <td class="cell80">This demo shows how to implement a very simple UNO 
		  component and how to access the UNO component from an executable.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="cpp/remoteclient/" title="link to the source directory of the C++ remoteclient example">Remote client</a></td>
		  <td class="cell80">The 'uno' program is used to export an arbitrary 
		  service to other processes. In this example the com.sun.star.uno.Pipe 
		  service (which is built in io-module) is exported. The client component 
		  implements the <a href="../docs/common/ref/com/sun/star/lang/XMain.html" title="link into the IDL reference to the interface com.sun.star.lang.XMain">
		  com.sun.star.lang.XMain</a> interface. In the run method, it connects to 
		  the servers process and retrieves an instance and does some calls on the 
		  instance.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="cpp/complextoolbarcontrols/" title="link to the source directory of the C++ complextoolbarcontrols example">complextoolbarcontrols</a></td>
		  <td class="cell80">This example shows how to create a toolbar add-on with complex toolbar controls. 
		  It shows how to use an Image Button, a Combo Box, a Spin Field, an Edit Field, a Dropdown Box, a Toggle Dropdown Button and a normal Dropdown Button</td>
		  </tr>		  
		  <tbody>
		  </table>
		  </td>
		</tr>
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
		  <td  colspan="3">
		  <p>Additional information:</p>
		  <p>
		  <a href="http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/WritingUNO/C%2B%2B/C%2B%2B_Component" title="link to the &quot;How to write a UNO component in C++&quot; chapter in the Developer's Guide">How to write a UNO component in C++</a><br>
		  <a href="http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/ProUNO/C%2B%2B/C%2B%2B_Language_Binding" title="link to the &quot;C++ UNO Language Binding&quot; chapter in the Developer's Guide">C++ UNO Language Binding</a><br>
		  <a href="../docs/cpp/ref/index.html" title="link to the C++ API reference">C++ reference</a>
		  </p>
		  </td> 
		  </tr> 
		  </table>
          </td>
        </tr> 
      </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">
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
			<td colspan="2" class="head1"><a name="Basic_examples">Apache OpenOffice %PRODUCT_RELEASE% Basic examples</td>
			<td align="right">
		      <a href="#examples" title="link to the 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> 
		  <tr> 
		  <td  colspan="3">
		  <p>The example programs are embedded in Apache OpenOffice %PRODUCT_RELEASE% documents in the 
		  samples directory. To view or edit the Apache OpenOffice %PRODUCT_RELEASE% Basic source, 
		  select the appropriate document and then select Tools-&gt;Macro.</p>
		  <p>Most of the examples are stand-alone, but two of them (Creating an 
		  Index and Import/Export of ASCII Files) have an associated data file 
		  identified by a .txt file name suffix).</p>
		  <p>Some of the examples are also available in Java, you can find them in 
		  the <a href="#Java_examples" title="link to the Java examples section">
		  Java section</a>.</p>
		  </td> 
		  </tr> 
		  </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"><a href="basic/text/modifying_text_automatically/" title="link to the source directory of the Apache OpenOffice %PRODUCT_RELEASE% Basic text/modifying_text_automatically examples">Changing Appearance</a></td>
		  <td class="cell80"> To change the style used for certain words, you can 
		  start with the following example. This code searches for the regular 
		  expression <code>the[a-z]</code>, which stands for the text portion the 
		  followed by exactly one lowercase letter. All occurrences of these four 
		  letters are then changed to bold characters. The same happens in the next
		  part of the program, this time changing the appearance of 
		  <code>all[a-z]</code> to italic. In order for this example to work, you 
		  must execute it from an open text document.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="basic/text/modifying_text_automatically/" title="link to the source directory of the Apache OpenOffice %PRODUCT_RELEASE% Basic text/modifying_text_automatically examples">Replacing Text</a></td>
		  <td class="cell80">If you regularly receive documents from other people 
		  for editing, you might want to make sure that certain words are always 
		  written the same. The next example illustrates this by forcing certain 
		  words to be spelled in American English.<br>
          In order for this example to work, you must execute it from an open text 
		  document. For a real world application, it is a good idea to read the 
		  words from an external file.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="basic/text/modifying_text_automatically/" title="link to the source directory of the Apache OpenOffice %PRODUCT_RELEASE% Basic text/modifying_text_automatically examples">Using Regular Expressions</a></td>
		  <td class="cell80">Another application of automatic text modification is 
		  related to stylistic questions. Suppose your company&#146;s policy is to 
		  avoid the use of certain words. You want to replace these words, but you 
		  cannot do that automatically because you have to find the appropriate 
		  replacement, which depends on the context. So instead of deleting or 
		  replacing the offending words automatically, you change their color to 
		  make them stand out during a subsequent manual review process.<br>
		  The following example handles two kinds of unwanted wordings: those 
		  which are absolutely forbidden and must be replaced by something else, 
		  and those which are considered bad style. A subroutine is responsible 
		  for the changes. It can be used to make all words in a list appear in a 
		  certain color in the text document. To keep the lists short, we use 
		  regular expressions which provide for the variants of the words 
		  (plural, adjective etc.).</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="basic/text/modifying_text_automatically/" title="link to the source directory of the Apache OpenOffice %PRODUCT_RELEASE% Basic text/modifying_text_automatically examples">Inserting Bookmarks</a></td>
		  <td class="cell80">
		  <p>The next example does something very similar. This time, however, we 
		  do not change the color of the words but insert a bookmark at each of 
		  them. You can thus use the StarOffice navigator to jump directly from 
		  word to word. Bookmarks must first be created using 
		  <code>createInstance()</code>. They are then inserted with 
		  <code>insertTextContent()</code> at the current text range.</p>
		  <p>The main difference to the preceding example is the For loop in 
		  <code>markList()</code>. Instead of changing the color of the current 
		  word, it creates a new bookmark, oBookmark, whose name is the current 
		  word with an integer appended. It then inserts this bookmark at the 
		  word.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="basic/text/creating_an_index/" title="link to the source directory of the Apache OpenOffice %PRODUCT_RELEASE% Basic text/create_index example">Creating an Index</a></td>
		  <td class="cell80">Indices for text documents can be created manually in 
		  Apache OpenOffice %PRODUCT_RELEASE% Writer by clicking on the words that should appear in the 
		  index. If the document is large, or if you have to generate indices for 
		  several documents, this task should be automated.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="basic/sheet/" title="link to the source directory of the Apache OpenOffice %PRODUCT_RELEASE% Basic sheet example">Adapting to Euroland</a></td>
		  <td class="cell80">Most of the members of the European Union will abandon 
		  their old currency in favor of the new Euro in 2001. This requires 
		  modifications to all programs using the old currencies. Since the exchange
		  rates for the old currencies have been fixed at the end of 1999, one can 
		  already convert old data. The following program does this for all values 
		  in a table that are formatted with the currency string DM.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="basic/drawing/" title="link to the source directory of the Apache OpenOffice %PRODUCT_RELEASE% Basic drawing example">Import/Export of ASCII Files</a></td>
		  <td class="cell80">You can use the drawing facilities of StarOffice API 
		  to generate a picture from ASCII input. One application would be a 
		  hierarchical representation of a directory listing, based on textual 
		  data.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="basic/stock_quotes_updater/" title="link to the source directory of the Apache OpenOffice %PRODUCT_RELEASE% Basic stock_quotes_updater example">Stock Quotes Updater</a></td>
		  <td class="cell80">If you want to display stock charts for certain 
		  companies, you can open up your browser every day, go to a search engine, 
		  look up the quote and copy it by hand into a table. Or you can use a 
		  program that does all this automatically. The following example relies on 
		  the sheet module. It uses URLs to obtain the current stock quotes. The 
		  quotes are displayed in sheets, one for each company. We show a line 
		  diagram and the numerical values for this company on every sheet. The 
		  functionality is hidden in the three subroutines <code>GetValue()</code>, 
		  <code>UpdateValue()</code>, and <code>UpdateChart()</code>.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="basic/forms_and_controls/" title="link to the source directory of the Apache OpenOffice %PRODUCT_RELEASE% Basic forms_and_controls example">Forms and Controls</a></td>
		  <td class="cell80">The example document Burger Factory offers some forms 
		  and controls, which you can use to order your desired burger type, 
		  beverage, topping, and sauce. By hitting the button 
		  &quot;Order now!&quot;, your order will be placed.</td>
		  </tr>		  
		  <tbody>
		  </table>
		  </td>
		</tr>      
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
		  <td  colspan="3">
		  Additional information: <a href="http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Basic/OpenOffice.org_Basic" title="link to the &quot;OpenOffice.org %PRODUCT_RELEASE% Basic language binding&quot; chapter in the Developer's Guide">OpenOffice.org %PRODUCT_RELEASE% Basic language binding</a>
		  </td> 
		  </tr> 
		  </table>
          </td>
        </tr> 
		</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">
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
			<td colspan="2" class="head1"><a name="OLE_examples">Object Linking and Embedding (OLE) examples</td>
			<td align="right">
		      <a href="#examples" title="link to the 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> 
		  </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"><a href="OLE/activex/" title="link to the source directory of the activex plugin example using the OLE bridge">ActiveX Control</a></td>
		  <td class="cell80">The ActiveX control shows an example of access to UNO 
		  through COM technology. It requires a properly installed StarOffice 
		  version 6.0 or OpenOffice 1.0 or newer. This is a Lite ActiveX control 
		  so it can be used only in containers that allow the use of such controls. 
		  It can be activated with an &lt;OBJECT&gt; tag from a html-page to embed 
		  a document. Without any parameters a new writer document will be opened 
		  for editing. For more details please see the <a href="OLE/activex/README.txt" title="link to the README file of the activex example">README</a>.<br>
		  Note: This example works only under windows and if you don't use the MS 
		  .Net C++ compiler please check the makefile and take notice of the 
		  comments.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="OLE/vbscript/" title="link to the source directory of the VBScript example using the OLE bridge">WriterDemo</a></td>
		  <td class="cell80">This Visual Basic Script creates an empty text 
		  document and inserts text, a table, and a text frame.</td>
		  </tr>		  
		  <tbody>
		  </table>
		  </td>
		</tr>
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
		  <td  colspan="3">
		  Additional information: <a href="http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Bridge/Automation_Bridge" title="link to the &quot;Automation Language Binding&quot; chapter in the Developer's Guide">Automation Language Binding</a>
		  </td> 
		  </tr> 
		  </table>
          </td>
        </tr> 
      </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">
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
			<td colspan="2" class="head1"><a name="CLI_examples">Common Language Infrastructure (CLI)  examples</td>
			<td align="right">
		      <a href="#examples" title="link to the 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> 
		  </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"><a href="CLI/CSharp/Spreadsheet/" title="link to the source directory of the Spreadsheet example using the CLI-UNO bridge">Spreadsheet Example</a></td>
		  <td class="cell80">This example is written in C# and shows how Spreadsheet
		  documents are created and filled with content. This example actually 
		  consists of three separate executables, SpreadsheetSample.exe, 
		  GeneralTableSample.exe, ViewSample.exe.</td>
		  </tr>		  
		  <tr>
		  <td class="cell20"><a href="CLI/VB.NET/WriterDemo/" title="link to the source directory of the WriterDeom example using the CLI-UNO bridge">WriterDemo</a></td>
		  <td class="cell80">This example is written in VB.NET. It creates a text 
		  document and inserts text, a table, and a text frame.</td>
		  </tr>		  
		  <tbody>
		  </table>
		  </td>
		</tr>
        <tr> 
          <td> 
          <table class="table3">
		  <tr> 
		  <td  colspan="3">
		  Additional information: <a href="http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/ProUNO/CLI/CLI_Language_Binding" title="link to the &quot;CLI-UNO Language Binding&quot; chapter in the Developer's Guide">CLI-UNO Language Binding</a>
		  </td> 
		  </tr> 
		  </table>
          </td>
        </tr> 
      </table>
    </td>
    <td class="content1"><img class="nothing8" src="../docs/images/nada.gif"></td>
  </tr>
  <tr> 
    <td colspan="3"><img class="nothing30" 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 colspan="3"> 
      <div class="centertext">
	<p><img class="apachelogo" src="../docs/images/odk-footer-logo.gif" title="Apache Feather" alt="Apache Feather" />
            Copyright &copy; 2011 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.<p>
      </div>
    </td>
  </tr>
</table>
<map name="Map">
  <area shape="rect" coords="10,68,400,105" href="http://www.openoffice.org">
</map>
</body>
</html>
