Porting notes

From Apache OpenOffice Wiki
Jump to: navigation, search

Things to watch out for

  • The mapping of the vba constants is different. Take for example the xlGuess constant, in VBA it's fully qualified name is Excel.XlYesNoGuess.xlGuess, in the helperapi it's com.sun.star.helper.constant.XlYesNoGuess.xlGuess and in oovbaapi it's org.openoffice.excel.XlYesNoGuess.xlGuess
  • All objects in the helperapi extend HelperInterfaceAdaptor, nothing similar (yet) exists in oovbaapi so this can be ignored in the implementation
  • There are a quite few helper classes in the helperapi project e.g. RangeHelper.java they shouldn't be confused with the actual implementation objects we wish to port.
  • classes and idl files of the same name can exist in multiple namespaces and this can be confusing. Because the helperapi was written with both the word and excel api(s) in mind there can be classes that share a common implementation and interfaces e.g.
    • com/sun/star/helper/calc/XShape.idl
    • com/sun/star/helper/common/XShape.idl
    • com/sun/star/helper/writer/XShape.idl
  • Collections, these are handled differently see implementing a vba Collection in oovbaapi
  • Every helperapi idl method defines BasicErrorException which allows and api method to transfer an error code and associated string paramater to basic.

Hints for porting idl

Objects with Default Properties

This is something not handled by the helperapi but something you should be aware of when implementing a vba compatibility object. What is a default property, an example probably explains the concept better.

Range("a1") = "text"

is a short cut for

Range("a1").Value = "text"

Value is a default property in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements XDefaultProperty.idl

Objects with Default Method

Similar to above some vba objects have a default method e.g. the Collection object

set col = Sheets
msgbox col(1).Name

is a short cut for

set col = Sheets
msgbox col.Item(1).Name

Item is a default method in the example above. We can provide similar behavior in basic with a compatibility api object ensuring the object implements XDefaultMethod.idl

Porting Collection objects

Generally all collection objects have a Count and an Item method and additionally the behaviour mentioned above. Also Collection objects can be used in a For Each loop. To cater for that a helper implementation object ScVbaCollectionBaseImpl provides the necessary information to the basic runtime to allow it to provide the classic vba Collection class syntax support. It also requires to be initialised by an XIndexAccess implementation. Additionally the class inheriting from ScVbaCollectionBaseImpl must provide the translation between the object iterated ( via XIndexAccess ) and the corrosponding compatibilty object returned to openoffice basic via the the createCollectionObject method.

A example of a ported Collection object can be found in the Porting example section

[possibly incomplete ] List of Calc Objects to port from helperapi

Object helperapi implementation name Porting started by Status Notes
XAreas.idl xxxx seems complete
XAutoFilter.idl AutoFilterImpl hanbo in progress there is a partial (untested) implementation in the porting example section, would be nice for some one to finish
XFilter.idl FilterImpl.java hanbo in progress see above.
XFilters.idl FiltersImpl.java hanbo in progress see above.
XAxes.idl AxesImpl.java npower in progress
XAxis.idl AxisImpl.java npower in progress
XAxisTitle.idl AxisTitleImpl.java npower complete not-tested
XCharacters.idl xxxx complete
XCalc.idl xxxx not required for porting see Application Object This is not a 'real' object but in a collection of global method/attributes that probably should be part of the XApplication.idl interface
XChartObject.idl ChartObjectImpl.java npower complete not-tested
XChartObjects.idl ChartObjectsImpl.java npower complete not-tested
XChart.idl ChartImpl.java npower in progress
XCharts.idl ChartsImpl.java npower in progress
XChartTitle.idl ChartTitleImpl.java npower complete not-tested
XColorFormat.idl xxxx
XComment.idl xxxx complete
XDataLabel.idl DataLabelImpl.java npower in progress
XDataLabels.idl DataLabelsImpl.java npower in progress
XFont.idl xxxx complete
XFormatCondition.idl xxxx npower complete not tested
XFormatConditions.idl xxxx npower complete not tested
XFormat.idl xxxx npower complete not tested
XHPageBreak.idl xxxx complete
XHPageBreaks.idl xxxx complete
XInterior.idl xxxx complete
XName.idl NameImp.java sola, Amelia complete not-tested
XNames.idl NamesImp.java sola, Amelia complete not-tested
XOutline.idl xxxx complete
XPageBreak.idl xxxx complete
XPageSetup.idl PageSetupImpl Fong complete
XPane.idl PaneImpl Jiao.Jianhua calc complete
XPoint.idl xxxx
XPoints.idl xxxx
XProtection.idl xxxx penghang in progress
XQueryTable.idl xxxx
XQueryTables.idl xxxx
XSeriersCollection.idl xxxx complete
XSeriers.idl xxxx complete
XShape.idl xxxx jiao.jianhua in progress
XShapes.idl xxxx jiao.jianhua calc complete, no full text
XSheet.idl xxxx complete
XSheets.idl xxxx complete
XStyle.idl xxxx npower complete not tested
XStyles.idl xxxx npower inprogress
XTextFrame.idl xxxx
XTitle.idl xxxx complete
XVPageBreak.idl xxxx wanglibing complete
XVPageBreaks.idl xxxx wanglibing complete
XWindow.idl xxxx complete
XWindows.idl xxxx complete
XWorkbook.idl xxxx complete
XWorkbooks.idl xxxx complete
XWorksheetfunction.idl xxxx complete

[possibly incomplete ] List of Writer Objects to port from helperapi

Object helperapi implementation name Porting started by Status Notes
Application Fong in progress
Addins Fong in progress
Addin Fong in progress
AutoTextEntry Fong in progress
AutoTextEntries Fong in progress
Border Fong in progress
Borders Fong in progress
Bookmark Fong in progress
Bookmarks Fong in progress
Cell Fong in progress
Cells Fong in progress
Column Fong in progress
Columns Fong in progress
CommandBar Fong in progress
CommandBarButton Fong in progress
CommandBars Fong in progress
Dialog Fong in progress
Dialogs Fong in progress
Document Fong in progress
Documents Fong in progress
DocumentProperty npower in progress
DocumentProperties npower in progress
Field Fong in progress
Fields Fong in progress
FillFormat Fong in progress
Find Fong in progress
Font npower in progress
FormField Fong in progress
FormFields Fong in progress
Frame Fong in progress
Frames Fong in progress
HeaderFooter Fong in progress
HeadersFooters Fong in progress
LineFormat Fong in progress
ListFormat Fong in progress
ListGallery Fong in progress
ListGalleries Fong in progress
ListLevel Fong in progress
ListLevels Fong in progress
ListTemplate Fong in progress
ListTemplates Fong in progress
Global npower in progress
Options Fong in progress
Pane Fong in progress
Panes Fong in progress
Paragraph Fong in progress
Paragraphs Fong in progress
ParagraphFormat Fong in progress
PageSetup Fong in progress
Range Fong in progress
Replacement Fong in progress
Revision Fong in progress
Revisions Fong in progress
Row Fong in progress
Rows Fong in progress
Selection Fong in progress
Section Fong in progress
Sections Fong in progress
Shape Fong in progress
Shapes Fong in progress
ShapeRange Fong in progress
Style Fong in progress
Styles Fong in progress
System Fong in progress
Table npower in progress
Tables npower in progress
TableOfContent Fong in progress
TableOfContents Fong in progress
TabStop Fong in progress
TabStops Fong in progress
Template npower in progress
TextFrame Fong in progress
Variable Fong in progress
Variables Fong in progress
View Fong in progress
Window Fong in progress
WrapFormat Fong in progress

Missing attributes/methods ( common to helperapi objects ) to port

Application Object

Range Object

Personal tools