II. Bonobo components

What is a Bonobo component?

The user will not see much of components. The aim of components is to promote a Document-Centric world. For example, if the user is writing some paper dealing with economics in a Word Processor and he needs to add an array with stuff from a Spreadsheet program, he should not be obliged to leave its Word Processor to launch the spreadsheet, copy the data and paste it in the text. Here, the reader is obliged to leave his task to tackle with another one: finding and launching the spreadsheet.

In a document-centric world, the writer just needs to click on the insert menu and choose 'spreadsheet'. This will automatically include the data from a spreadsheet program and launch the spreadsheet program. The user concentrates on the task of writing his document.

Nowadays, if you have used Word97 or any element of Microsoft Office, you may have noticed that this schema has been pushed even further: the Excel spreadsheet is "included" in the word program: excel is not even launched in another window: its menus and toolbars replace those of Word as long as you edit the spreadsheet component. Once you have finished, if you click outside of the component's border, you are back to your original component editing. If you wish to re-edit it, you just need to double click the component representation in the word document.

Here is an example in images:

FixMe: here, we need gnumeric/AbiWord images...

A program which can insert such data from another program in his own document is called a "container". The data program which can lend his data to be included into another program is called a "component". The component is said to be "embeddable".

If, when double clicking on an embedded component, you can edit directly the component data, in the same window as you were editing your document, the container and component are said to support in place activation. That is: the component is launched but uses the original application window for user interaction instead of using its own main window. This is the ultimate achievement in terms of "Document Centric World".

This model promotes the use of compound documents where some parts of the document are handled by other applications than the container. This means that we also use composed files: all the data of the document including graphics and the like is included in the document file. This allows the user not to concern about the various files used to build his document: the document is one and only one thing.

Bonobo is the thing behind the scenes which makes this possible. Bonobo is a set of CORBA interfaces some implemented by the container and others implemented by the containee. Bonobo is also a default implementation of these CORBA interfaces which is exported through a C api to save most programmers the tedious task of directly coding the CORBA interfaces.