Contents 

 1 Reader's Guide
1.1 What This Manual Covers
1.2 How This Book is Organized
1.3 OpenOffice.org Version History
1.4 Related documentation
1.5 Conventions
1.6 Acknowledgments
 2 First Steps
2.1 Programming with UNO
2.2 Fields of Application for UNO
2.3 Getting Started
2.3.1 Required Files
2.3.2 Installation Sets
2.3.3 Configuration
Enable Java in OpenOffice.org
Use Java UNO class files
Add the API Reference to your IDE
2.3.4 First Contact
Getting Started
Service Managers
Failed Connections
2.4 How to get Objects in OpenOffice.org
2.5 Working with Objects
2.5.1 Objects, Interfaces, and Services
Objects
Interfaces
Services
2.5.2 Using Services
Using Interfaces
Using Properties
2.5.3 Example: Working with a Spreadsheet Document
2.5.4 Common Types
Basic Types
Strings
Enum Types and Groups of Constants
2.5.5 Struct
2.5.6 Any
2.5.7 Sequence
2.5.8 Element Access
Name Access
Index Access
Enumeration Access
2.6 How do I know Which Type I Have?
2.7 Example: Hello Text, Hello Table, Hello Shape
2.7.1 Common Mechanisms for Text, Tables and Drawings
2.7.2 Creating Text, Tables and Drawing Shapes
Text, Tables and Drawings in Writer
Text, Tables and Drawings in Calc
Drawings and Text in Draw
 3 Professional UNO
3.1 Introduction
3.2 API Concepts
3.2.1 Data Types
Simple Types
The Any Type
Interfaces
Services
Structs
Predefined Values
Sequences
Modules
Exceptions
Singletons
3.2.2 Understanding the API Reference
Specification, Implementation and Instances
Object Composition
3.3 UNO Concepts
3.3.1 UNO Interprocess Connections
Starting OpenOffice.org in Listening Mode
Importing a UNO Object
Characteristics of the Interprocess Bridge
Opening a Connection
Creating the Bridge
Closing a Connection
Example: A Connection Aware Client
3.3.2 Service Manager and Component Context
Service Manager
Component Context
3.3.3 Using UNO Interfaces
3.3.4 Properties
3.3.5 Collections and Containers
3.3.6 Event Model
3.3.7 Exception Handling
User-Defined Exceptions
Runtime Exceptions
Good Exception Handling  
3.3.8 Lifetime of UNO Objects
acquire() and release()
The XComponent Interface
Children of the XEventListener Interface
Weak Objects and References
Differences Between the Lifetime of C++ and Java Objects
3.3.9 Object Identity
3.4 UNO Language Bindings
3.4.1 Java Language Binding
Getting a Service Manager
Transparent Use of Office UNO Components
Handling Interfaces
Type Mappings
3.4.2 C++ Language Binding
Library Overview
System Abstraction Layer
File Access
Threadsafe Reference Counting
Threads and Thread Synchronization
Socket and Pipe
Strings
Establishing Interprocess Connections
Transparent Use of Office UNO Components
Type Mappings
Using Weak References
Exception Handling in C++
3.4.3 OpenOffice.org Basic
Handling UNO Objects
Mapping of UNO and Basic Types
Case Sensitivity
Exception Handling
Listeners
3.4.4 Automation Bridge
Introduction
Requirements
A Quick Tour
The Service Manager Component
Using UNO from Automation
Using Automation Objects From UNO
Type Mappings
Automation Objects with UNO Interfaces
DCOM
The Bridge Services
Unsupported COM Features
3.4.5 CLI Language Binding
About the Language Binding
Terms
Requirements
The Language Binding DLLs  
Type Mapping
Lifetime Management and Obtaining Interfaces
Writing Client Programs
 4 Writing UNO Components
4.1 Required Files
4.2 Using UNOIDL to Specify New Components
4.2.1 Writing the Specification
Preprocessing
Grouping Definitions in Modules
Simple Types
Defining an Interface
Defining a Service
Defining a Sequence
Defining a Struct
Defining an Exception
Predefining Values
Using Comments
Singleton
Reserved Types
Published Entities
4.2.2 Generating Source Code from UNOIDL Definitions
4.3 Component Architecture
4.4 Core Interfaces to Implement
4.4.1 XInterface
Requirements for queryInterface()
Reference Counting
4.4.2 XTypeProvider
Provided Types
ImplementationID
4.4.3 XServiceInfo
Implementation Name
Supported Service Names
4.4.4 XWeak
4.4.5 XComponent  
Disposing of an XComponent
4.4.6 XInitialization  
4.4.7 XMain  
4.4.8 XAggregation  
4.4.9 XUnoTunnel  
4.5 Simple Component in Java
4.5.1 Class Definition with Helper Classes
XInterface, XTypeProvider and XWeak  
XServiceInfo  
4.5.2 Implementing your own Interfaces
4.5.3 Providing a Single Factory Using Helper Method
4.5.4 Write Registration Info Using Helper Method
4.5.5 Implementing without Helpers
XInterface  
XTypeProvider  
XComponent  
4.5.6 Storing the Service Manager for Further Use
4.5.7 Create Instance with Arguments
4.5.8 Possible Structures for Java Components
One Implementation per Component File
Multiple Implementations per Component File
4.5.9 Running and Debugging Java Components
Debugging
The Java Environment in OpenOffice.org
Troubleshooting
4.6 C++ Component
4.6.1 Class Definition with Helper Template Classes
XInterface, XTypeProvider and XWeak  
XServiceInfo  
4.6.2 Implementing your own Interfaces
4.6.3 Providing a Single Factory Using a Helper Method
4.6.4 Write Registration Info Using a Helper Method
4.6.5 Provide Implementation Environment
4.6.6 Implementing without Helpers
XInterface Implementation
XTypeProvider Implementation
Providing a Single Factory
Write Registration Info
4.6.7 Storing the Service Manager for Further Use
4.6.8 Create Instance with Arguments
4.6.9 Multiple Components in One Dynamic Link Library
4.6.10 Building and Testing C++ Components
Build Process
Test Registration and Use
4.7 Integrating Components into OpenOffice.org
4.7.1 Protocol Handler
Overview
Implementation
Configuration
Installation
4.7.2 Jobs
Overview
Execution Environment
Implementation
Initialization
Returning Results
Configuration
Installation
Using the vnd.sun.star.jobs: URL Schema  
List of supported Events
4.7.3 Add-Ons  
Overview
Guidelines
Configuration
Installation
4.7.4 Disable Commands
Configuration
Disabling Commands at Runtime
4.7.5 Intercepting Context Menus
Register and Remove an Interceptor
Writing an Interceptor
4.8 File Naming Conventions
4.9 Deployment Options for Components
4.9.1 Background: UNO Registries
UNO Type Library
Component Registration  
4.9.2 Command Line Registry Tools
Component Registration Tool
UNO Type Library Tools
4.9.3 Manual Component Installation
Manually Merging a Registry and Adding it to uno.ini or soffice.ini
4.9.4 Bootstrapping a Service Manager
4.9.5 Special Service Manager Configurations
Dynamically Modifying the Service Manager
Creating a ServiceManager from a Given Registry File
4.10 The UNO Executable  
Standalone Use Case
Server Use Case
Using the uno Executable
4.11 Accessing Dialogs
4.11.1 Assigning Component Methods to Control Events
4.11.2 Using Dialogs in Components
Instantiate and display a dialog
Accept events created by dialog controls
 5 Extensions
5.1 Extension Manager
5.1.1 Deployment Items
5.1.2 Installing Extensions for All or a Single User
5.1.3 Extension Manager in OpenOffice.org
5.1.4 unopkg
5.1.5 Location of installed Extensions
5.2 File Format
5.3 Extension Identifiers
5.4 Extension Versions
5.5 description.xml
5.5.1 Description of XML Elements
5.5.2 Example
5.6 Simple License
5.6.1 Determining the Locale of the License
5.7 Dependencies
5.8 System Integration
5.9 Online Update of Extensions
5.9.1 Running Online - Update
5.9.2 Concept
5.9.3 Example Scenario for Providing Updates
Using an Atom Feed
5.9.4 Migration of Update Information
5.9.5 Description of  the Update Information
5.9.6 Description of Atom Feed
5.9.7 Examples
description.xml Containing Direct Reference to the Update Information
Using the Atom Feed
5.10 Options Dialog
5.11 Creating the GUI of the Options Page
5.12 Saving and Reading Data for the Options Page
5.13 Defining the Usage of Options Pages
5.13.1 The Options Dialog of the Extension Manager
5.13.2 Adding a Leaf to an Existing Node
5.13.3 Adding Several Leaves
5.13.4 Grouping of Leaves
5.13.5 Adding Nodes  
5.13.6 Adding Several Nodes
5.13.7 Absolute Position of Leaves
5.13.8 Grouping of Nodes
5.13.9 Assigning Nodes to Modules
5.13.10 Defining a Module
5.13.11 Absolute Position of Nodes
 6 Advanced UNO
6.1 Choosing an Implementation Language
6.1.1 Supported Programming Environments
Java
C++
OpenOffice.org Basic
OLE Automation Bridge
Python
6.1.2 Use Cases
Java
C++
OpenOffice.org Basic
OLE Automation
Python
6.1.3 Recommendation
6.2 Language Bindings
6.2.1 Implementing UNO Language Bindings
Overview of Language Bindings and Bridges
Implementation Options
6.2.2 UNO C++ bridges
Binary UNO Interfaces
C++ Proxy
Binary UNO Proxy
Additional Hints
6.2.3 UNO Reflection API
XTypeProvider Interface
Converter Service
CoreReflection Service
6.2.4 XInvocation Bridge
Scripting Existing UNO Objects
Implementing UNO objects
Example: Python Bridge PyUNO
6.2.5 Implementation Loader
Shared Library Loader
Bridges
6.2.6 Help with New Language Bindings
6.3 Differences Between UNO and Corba
6.4 UNO Design Patterns and Coding Styles
6.4.1 Double-Checked Locking
 7 Office Development
7.1 OpenOffice.org Application Environment
7.1.1 Overview
Desktop Environment
Framework API
7.1.2 Using the Desktop
7.1.3 Using the Component Framework
Getting Frames, Controllers and Models from Each Other
Frames
Controllers
Models
Window Interfaces
7.1.4 Creating Frames Manually
7.1.5 Handling Documents
Loading Documents
Closing Documents
Storing Documents
Printing Documents
7.1.6 Using the Dispatch Framework
Command URL
Processing Chain
Dispatch Process
Dispatch Results
Dispatch Interception
7.1.7 Java Window Integration
The Window Handle
Using the Window Handle
More Remote Problems
7.2 Common Application Features
7.2.1 Clipboard
Using the Clipboard
OpenOffice.org Clipboard Data Formats
7.2.2 Internationalization
Introduction
Overview and Using the API
Implementing a New Locale
7.2.3 Linguistics
Services Overview
Using Spellchecker
Using Hyphenator
Using Thesaurus
Events
Implementing a Spell Checker
Implementing a Hyphenator
Implementing a Thesaurus
7.2.4 Integrating Import and Export Filters
Approaches
Document API Filter Development
XML Based Filter Development
7.2.5 Number Formats
Managing Number Formats
Applying Number Formats
7.2.6 Document Events
7.2.7 Path Organization
Path Settings
Path Variables
7.2.8 OpenOffice.org  Single Sign-On API
Overview
Implementing the OpenOffice.org SSO API
 8 Text Documents
8.1 Overview
8.1.1 Example: Fields in a Template
8.1.2 Example: Visible Cursor Position
8.2 Handling Text Document Files
8.2.1 Creating and Loading Text Documents
8.2.2 Saving Text Documents
Storing
Exporting
8.2.3 Printing Text Documents
Printer and Print Job Settings
Printing Multiple Pages on one Page
8.3 Working with Text Documents
8.3.1 Word Processing
Editing Text
Iterating over Text
Inserting a Paragraph where no Cursor can go
Sorting Text
Inserting Text Files
Auto Text
8.3.2 Formatting
8.3.3 Navigating
Cursors
Locating Text Contents
Search and Replace
8.3.4 Tables
Table Architecture
Named Table Cells in Rows, Columns and the Table Cursor
Indexed Cells and Cell Ranges
Table Naming, Sorting, Charting and Autoformatting
Text Table Properties
Inserting Tables
Accessing Existing Tables
8.3.5 Text Fields
8.3.6 Bookmarks
8.3.7 Indexes and Index Marks
Indexes
Index marks
8.3.8 Reference Marks
8.3.9 Footnotes and Endnotes
8.3.10 Shape Objects in Text
Base Frames vs. Drawing Shapes
Text Frames
Embedded Objects
Graphic Objects
Drawing Shapes
8.3.11 Redline
8.3.12 Ruby
8.4 Overall Document Features
8.4.1 Styles
Character Styles
Paragraph Styles
Frame Styles
Page Styles
Numbering Styles
8.4.2 Settings
General Document Information
Document Properties
Creating Default Settings
Creating Document Settings
8.4.3 Line Numbering and Outline Numbering
Paragraph and Outline Numbering
Line Numbering
Number Formats
8.4.4 Text Sections
8.4.5 Page Layout
8.4.6 Columns
8.4.7 Link targets
8.5 Text Document Controller
8.5.1 TextView
8.5.2 TextViewCursor
 9 Spreadsheet Documents
9.1 Overview
9.1.1 Example: Adding a New Spreadsheet
9.1.2 Example: Editing Spreadsheet Cells
9.2 Handling Spreadsheet Document Files
9.2.1 Creating and Loading Spreadsheet Documents
9.2.2 Saving Spreadsheet Documents
Storing
Exporting
Filter Options
9.2.3 Printing Spreadsheet Documents
Printer and Print Job Settings
Page Breaks and Scaling for Printout
Print Areas
9.3 Working with Spreadsheet Documents
9.3.1 Document Structure
Spreadsheet Document
Spreadsheet Services - Overview
Spreadsheet
Cell Ranges
Cells
Cell Ranges and Cells Container
Columns and Rows
9.3.2 Formatting
Cell Formatting
Character and Paragraph Format
Indentation
Equally Formatted Cell Ranges
Table Auto Formats
Conditional Formats
9.3.3 Navigating
Cell Cursor
Referencing Ranges by Name
Named Ranges
Label Ranges
Querying for Cells with Specific Properties
Search and Replace
9.3.4 Sorting
Table Sort Descriptor
9.3.5 Database Operations
Filtering
Subtotals
Database Import
Database Ranges
9.3.6 Linking External Data
Sheet Links
Cell Area Links
DDE Links
9.3.7 DataPilot
DataPilot Tables
DataPilot Sources
9.3.8 Protecting Spreadsheets
9.3.9 Sheet Outline
9.3.10 Detective
9.3.11 Other Table Operations
Data Validation
Data Consolidation
Charts
Scenarios
9.4 Overall Document Features
9.4.1 Styles
Cell Styles
Page Styles
9.4.2 Function Handling
Calculating Function Results
Information about Functions
Recently Used Functions
9.4.3 Settings
9.5 Spreadsheet Document Controller
9.5.1 Spreadsheet View
9.5.2 View Panes
9.5.3 View Settings
9.5.4 Range Selection
9.6 Spreadsheet Add-Ins
9.6.1 Function Descriptions
9.6.2 Service Names
9.6.3 Compatibility Names
9.6.4 Custom Functions
9.6.5 Variable Results
 10 Drawing Documents and Presentation Documents
10.1 Overview
10.1.1 Example: Creating a Simple Organizational Chart
10.2 Handling Drawing Document Files
10.2.1 Creating and Loading Drawing Documents
10.2.2 Saving Drawing Documents
Storing
Exporting
Filter Options
10.2.3 Printing Drawing Documents
Printer and Print Job Settings
Special Print Settings
10.3 Working with Drawing Documents
10.3.1 Drawing Document
Document Structure
Page Handling
Page Partitioning
10.3.2 Shapes
Bezier Shapes
Shape Operations
10.3.3 Inserting Files
10.3.4 Navigating
10.4 Handling Presentation Document Files
10.4.1 Creating and Loading Presentation Documents
10.4.2 Printing Presentation Documents
10.5 Working with Presentation Documents
10.5.1 Presentation Document
10.5.2 Presentation Settings
Custom Slide Show
Presentation Effects
Slide Transition
Animations and Interactions
10.6 Overall Document Features
10.6.1 Styles
Graphics Styles
Presentation Styles
10.6.2 Settings
10.6.3 Page Formatting
10.7 Drawing and Presentation Document Controller
10.7.1 Setting the Current Page, Using the Selection
10.7.2 Zooming
10.7.3 Other Drawing-Specific View Settings
 11 Charts
11.1 Overview
11.2 Handling Chart Documents
11.2.1 Creating Charts
Creating and Adding a Chart to a Spreadsheet
Creating a Chart OLE Object in Draw and Impress
Setting the Chart Type
11.2.2 Accessing Existing Chart Documents
11.3 Working with Charts
11.3.1 Document Structure
11.3.2 Data Access
11.3.3 Chart Document Parts
Common Parts of all Chart Types
Features of Special Chart Types
11.4 Chart Document Controller
11.5 Chart Add-Ins
11.5.1 Prerequisites
11.5.2 How Add-Ins work
11.5.3 How to Apply an Add-In to a Chart Document
 12 OpenOffice.org Basic and Dialogs
12.1 First Steps with OpenOffice.org Basic
Step By Step Tutorial
A Simple Dialog
12.2 OpenOffice.org Basic IDE
12.2.1 Managing Basic and Dialog Libraries
OpenOffice.org Basic Macros Dialog
OpenOffice.org Basic Macro Organizer Dialog
12.2.2 Basic IDE Window
Basic Source Editor and Debugger
Dialog Editor
12.2.3 Assigning Macros to GUI Events
12.2.4 Dialog Localization
Technical Background
12.3 Features of OpenOffice.org Basic
12.3.1 Functional Range Overview
Screen I/O Functions
File I/O
Date and Time Functions
Numeric Functions
String Functions
Specific UNO Functions
12.3.2 Accessing the UNO API
StarDesktop
ThisComponent
12.3.3 Special Behavior of OpenOffice.org Basic
Threads
Rescheduling
12.4 Advanced Library Organization
12.4.1 General Structure
12.4.2 Accessing Libraries from Basic
Library Container Properties in Basic
Loading Libraries
Library Container API
12.4.3 Variable Scopes
12.5 Programming Dialogs and Dialog Controls
12.5.1 Dialog Handling
Showing a Dialog
Getting the Dialog Model
Dialog as Control Container
Dialog Properties
Common Properties
Multi-Page Dialogs
12.5.2 Dialog Controls
Command Button
Image Control
Check Box
Option Button
Label Field
Text Field
List Box
Combo Box
Horizontal/Vertical Scroll Bar
Group Box
Progress Bar
Horizontal/Vertical Line
Date Field
Time Field
Numeric Field
Currency Field
Formatted Field
Pattern Field
File Control
12.6 Creating Dialogs at Runtime
12.7 Library File Structure
12.7.1 Application Library Container
12.7.2 Document Library Container
12.8 Library Deployment
Package Structure
Path Settings
Additional Options
 13 Database Access
13.1 Overview
13.1.1 Capabilities
Platform Independence
Functioning of the OpenOffice.org API Database Integration
Integration with OpenOffice.org API
13.1.2 Architecture
13.1.3 Example: Querying the Bibliography Database
13.2 Data Sources in OpenOffice.org API
13.2.1 DatabaseContext
13.2.2 DataSources
The DataSource Service
Queries
Forms and Reports
Document Links
Tables and Columns
13.2.3 Connections
Understanding Connections
Connecting Using the DriverManager and a Database URL
Connecting Through a Specific Driver
Driver Specifics
Connection Pooling
Piggyback Connections
13.3 Manipulating Data
13.3.1 The RowSet Service
Usage
Events and Other Notifications
Clones of the RowSet Service
13.3.2 Statements
Creating Statements
Inserting and Updating Data
Getting Data from a Table
13.3.3 Result Sets
Retrieving Values from Result Sets
Moving the Result Set Cursor
Using the getXXX Methods
Scrollable Result Sets
Modifiable Result Sets
Update
Insert
Delete
Seeing Changes in Result Sets
13.3.4 ResultSetMetaData
13.3.5 Using Prepared Statements
When to Use a PreparedStatement Object
Creating a PreparedStatement Object
Supplying Values for PreparedStatement Parameters
13.3.6 PreparedStatement From DataSource Queries
13.4 Database Design
13.4.1 Retrieving Information about a Database
Retrieving General Information
Determining Feature Support
Database Limits
SQL Objects and their Attributes
13.4.2 Using DDL to Change the Database Design
13.4.3 Using SDBCX to Access the Database Design
The Extension Layer SDBCX
Catalog Service
Table Service
Column Service
Index Service
Key Service
View Service
Group Service
User Service
The Descriptor Pattern
Adding an Index
Creating a User
Adding a Group
13.5 Using DBMS Features
13.5.1 Transaction Handling
13.5.2 Stored Procedures
13.6 Writing Database Drivers
13.6.1 SDBC Driver
13.6.2 Driver Service
13.6.3 Connection Service
13.6.4 XDatabaseMetaData Interface
13.6.5 Statements
PreparedStatement
Result Set
13.6.6 Support Scalar Functions
Open Group CLI Numeric Functions
Open Group CLI String Functions
Open Group CLI Time and Date Functions
Open Group CLI System Functions  
Open Group CLI Conversion Functions
Handling Unsupported Functionality
 14 Forms
14.1 Introduction
14.2 Models and Views
14.2.1 The Model-View Paradigm
14.2.2 Models and Views for Form Controls
14.2.3 Model-View Interaction
14.2.4 Form Layer Views
View Modes
Locating Controls
Focussing Controls
14.3 Form Elements in the Document Model
14.3.1 A Hierarchy of Models
FormComponent Service
FormComponents Service
Logical Forms
Forms Container
Form Control Models
14.3.2 Control Models and Shapes
Programmatic Creation of Controls
14.4 Form Components
14.4.1 Basics
Control Models
Forms
14.4.2 HTML Forms
14.5 Data Awareness
14.5.1 Forms
Forms as Row Sets
Loadable Forms
Sub Forms
Filtering and Sorting
Parameters
14.5.2 Data Aware Controls
Control Models as Bound Components
Committing Controls
14.6 External value suppliers
14.6.1 Value Bindings
Form Controls accepting Value Bindings
14.6.2 External List Sources
14.7 Validation
14.7.1 Validation in OpenOffice.org
14.7.2 Validations and Bindings
14.8 Scripting and Events
14.9 Common Tasks
14.9.1 Initializing Bound Controls
14.9.2 Automatic Key Generation
14.9.3 Data Validation
14.9.4 Programmatic Assignment of Scripts to Events
 15 Universal Content Broker
15.1 Overview
15.1.1 Capabilities
15.1.2 Architecture
15.2 Services and Interfaces
15.3 Content Providers
15.4 Using the UCB API
15.4.1 Instantiating the UCB
15.4.2 Accessing a UCB Content
15.4.3 Executing Content Commands
15.4.4 Obtaining Content Properties
15.4.5 Setting Content Properties
15.4.6 Folders
Accessing the Children of a Folder
15.4.7 Documents
Reading a Document Content
Storing a Document Content
15.4.8 Managing Contents
Creating
Deleting
Copying, Moving and Linking
15.5 UCB Configuration
15.5.1 UCP Registration Information
15.5.2 Unconfigured UCBs
15.5.3 Preconfigured UCBs
15.5.4 Content Provider Proxies
 16 Configuration Management
16.1 Overview
16.1.1 Capabilities
16.1.2 Architecture
16.2 Object Model
16.3 Configuration Data Sources
16.3.1 Connecting to a Data Source
16.3.2 Using a Data Source
16.4 Accessing Configuration Data
16.4.1 Reading Configuration Data
16.4.2 Updating Configuration Data
16.5 Customizing Configuration Data
16.5.1 Creating a Custom Configuration Schema
16.5.2 Preparing Custom Configuration Data
16.5.3 Installing Custom Configuration Data
16.6 Adding a Backend Data Store
 17 JavaBean for office components
17.1 Introduction
17.2 Using the OOoBean
17.3 The OOoBean by Example
17.4 API Overview
17.5 Configuring the Office Bean
17.5.1 Default Configuration
17.5.2 Customized Configuration
17.6 Internal Architecture
17.6.1 The Internal Office Bean API
17.6.2 OfficeConnection Interface
17.6.3 OfficeWindow Interface
17.6.4 ContainerFactory Interface
17.6.5 LocalOfficeConnection and LocalOfficeWindow
 18 Accessibility
18.1 Overview
18.2 Bridges
18.3 Accessibility Tree
18.4 Content Information
18.5 Listeners and Broadcasters
18.6 Implementing Accessible Objects
18.6.1 Implementation Rules
18.6.2 Services
18.7 Using the Accessibility API
18.7.1 A Simple Screen Reader  
Features
Class Overview
Putting the Accessibility Interfaces to Work
 19 Scripting Framework
19.1 Introduction
19.1.1 Structure of this Chapter
19.1.2 Who Should Read this Chapter
19.2 Using the Scripting Framework
19.2.1 Running macros
19.2.2 Editing, Creating and Managing Macros
The Organizer dialogs for BeanShell and JavaScript
BeanShell Editor
JavaScript Editor
Basic and Dialogs
Macro Recording
19.3 Writing Macros
19.3.1 The HelloWorld macro
19.3.2 Using the OpenOffice.org API from macros
19.3.3 Handling arguments passed to macros
19.3.4 Creating dialogs from macros
19.3.5 Compiling and Deploying Java macros
19.4 How the Scripting Framework works
19.5 Writing a LanguageScriptProvider UNO Component Using the Java Helper Classes
19.5.1 The ScriptProvider abstract base class
19.5.2 Implementing the XScript interface
19.5.3 Implementing the ScriptEditor interface
19.5.4 Building and registering your ScriptProvider
19.6 Writing a LanguageScriptProvider UNO Component from scratch
19.6.1 Scripting Framework URI Specification
19.6.2 Storage of Scripts
19.6.3 Implementation
19.6.4 Integration with Extension Manager
Overview of how ScriptingFramework integrates with the Extension Manager API  
 20 Graphical User Interfaces
20.1 Overview
20.1.1 Implementation Details
20.1.2 Basic Concepts
20.2 Exception Handling
20.3 Dialogs and Controls
20.4 Dialog Creation
20.4.1 Instantiation of a Dialog
20.4.2 Setting Dialog Properties
Multi-Page Dialogs
20.4.3 Adding Controls to a Dialog
20.4.4 Displaying Dialogs
20.5 Dialog Handling
20.5.1 Events
Mouse Listeners
Keyboard Listener
Focus Listener
Paint Listener
Control element-specific events
20.5.2 Dialog Controls
Common Properties
Font-specific Properties
Other common Properties
Property propagation between model and control
Common Workflow to add Controls
The Example Listings
Label Field
Command Button
Image Control
Check Box
Radio Button
Scroll Bar
List Box
Combo Box
Progress Bar
Horizontal /Vertical Line Control
Group Box
Text Field
Text Field Extensions
Formatted Field
Numeric Field
Currency Field
Date Field
Timefield
Pattern Field
Roadmap Control
File Control
File Picker
Message Box
20.5.3 The Toolkit Service
Dockable Windows
20.5.4 Creating Menus
Accessibility
Rendering
20.6 Summarizing Example to create a UNO Dialog
Appendix A: OpenOffice.org API-Design-Guidelines
A.1 General Design Rules
A.1.1 Universality
A.1.2 Orthogonality
A.1.3 Inheritance
A.1.4 Uniformity
A.1.5 Correct English
A.1.6 Identifier Naming Convention
A.2 Definition of API Elements
A.2.1 Attributes
A.2.2 Methods
A.2.3 Interfaces
A.2.4 Properties
A.2.5 Events
A.2.6 Services
A.2.7 Exceptions
A.2.8 Enums
A.2.9 Typedefs
A.2.10 Structs
A.2.11 Parameter
A.3 Special Cases
A.4 Abbreviations
A.5 Source Files and Types
Appendix B: IDL Documentation Guidelines
B.1 Introduction
B.1.1 Process
B.1.2 File Assembly
B.1.3 Readable & Editable Structure
B.1.4 Contents
B.2 File structure
B.2.1 General
B.2.2 File-Header
B.2.3 File-Footer
B.3 Element Documentation
B.3.1 General Element Documentation
B.3.2 Example for a Major Element Documentation
B.3.3 Example for a Minor Element Documentation
B.4 Markups and Tags
B.4.1 Special Markups
B.4.2 Special Documentation Tags
B.4.3 Useful XHTML Tags
Appendix C: Universal Content Providers
C.1 The Hierarchy Content Provider
C.1.1 Preface
C.1.2 HCP Contents
C.1.3 Creation of New HCP Content
C.1.4 URL Scheme for HCP Contents
C.1.5 Commands and Properties
C.2 The File Content Provider
C.2.1 Preface
C.2.2 File Contents
C.2.3 Creation of New File Contents
C.2.4 URL Schemes for File Contents
C.2.5 Commands and Properties
C.3 The FTP Content Provider
C.3.1 Preface
C.3.2 FTP Contents
C.3.3 Creation of New FTP Content
C.3.4 URL Scheme for FTP Contents
C.3.5 Commands and Properties
C.4 The WebDAV Content Provider
C.4.1 Preface
C.4.2 DCP Contents
C.4.3 Creation of New DCP Contents
C.4.4 Authentication
C.4.5 Property Handling
C.4.6 URL Scheme for DCP Contents
C.4.7 Commands and Properties
C.5 The Package Content Provider
C.5.1 Preface
C.5.2 PCP Contents
C.5.3 Creation of New PCP Contents
C.5.4 URL Scheme for PCP Contents
C.5.5 Commands and Properties
C.6 The Help Content Provider
C.6.1 Preface
C.6.2 Help Content Provider Contents
C.6.3 URL Scheme for Help Contents
C.6.4 Properties and Commands
Appendix D: UNOIDL Syntax Specification
Glossary