incubator-odf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kejia Ye <>
Subject [Call-for-Review] (ODFTOOLKIT-334) Add new API to support table autoformat
Date Wed, 29 Aug 2012 09:10:09 GMT
Hi All,

I have added new APIs to support table autoformat, refers to

Please review and give comments, thanks!

Ke Jia

---------- Forwarded message ----------
From: Kejia Ye (JIRA) <>
Date: Mon, Aug 20, 2012 at 3:39 PM
Subject: [jira] [Commented] (ODFTOOLKIT-334) Add new API to support table


Kejia Ye commented on ODFTOOLKIT-334:

Two new API are added to support load and apply table template.  Please
review and give your comments.

1. Add API in Document to load load a table template from external table.
         * Construct a  <code>TableTemplate<code> feature by extracting
style template from an pre-defined table in a foreign document.
         * The styles loaded by the template will be copied into the
document as well and can be referenced by table directly.
         * The imported table need to be at least a 5*5 table (e.g. A1E5).
 Each type of style in the template will be set according to the style
reference in a specific table cell, as following:
         * <br>first column - A2
         * <br>last column - E2
         * <br>first row - A2
         * <br>last row - E2
         * <br>even rows - B3
         * <br>odd rows - B2
         * <br>even columns - C2
         * <br>odd columns - B2
         * <br>body - B2
         * <br>first-row-start-column -A1
         * <br>first-row-end-column -E1
         * <br>last-row-start-column -A5
         * <br>last-row-end-column -E5
         * @param templateFileInputStream
         *            - the InputStream of the ODF document.
         * @param tableName
         *            - the table name which will be used to load styles as
         * @throws Exception
         *             - if content DOM could not be initialized
        public TableTemplate LoadTableTemplateFromForeignTable(
                        InputStream templateFileInputStream, String

2. Add  API in to apply styles specified in a table template.

         * Apply the formatting specified in the template to corresponding
table cells.
         * A table can only be formatted as one type of styles:
even-odd-rows or
         * even-odd-columns. The rule is to check the style of odd rows and
         * rows in the template, only if they have one different
properties, table:
         * style-name or table:paragraph-style-name, the table template
will be
         * treated as a even-odd-columns styled table.
         * If one style in the template is null, the style of corresponding
         * will be removed. An empty template can be used to remove all the
         * in a table.
         * @param template
         * @throws IllegalArgumentException
         *             if the given template is null
         * @throws Exception
         *             if content DOM could not be initialized
        public void applyStyle(TableTemplate template)

3.  Add class of
 * TableTemplate represents the table template feature in ODF documents.
 * <p>
 * Besides the seven types of style (first row, first column, last row, last
 * column, even/odd rows,even/odd columns and body) defined by
 * <code>table:table-template</code> in ODF 1.2, TableTemplate provide
 * mechnism, which allows user to specify style value to additional cells.
 * example, in ODF 1.2 the four coner cells can only inherit styles from the
 * colum or row they are existing, but through
 * they can reference any style defined in the document.
 * <p>
 * TableTemplate provide method to get/set a set of references to table cell
 * styles that specify the formatting to be used on a table.

> Add new API to support table autoformat
> ---------------------------------------
>                 Key: ODFTOOLKIT-334
>                 URL:
>             Project: ODF Toolkit
>          Issue Type: New Feature
>          Components: simple api
>    Affects Versions: 0.7
>            Reporter: Kejia Ye
>             Fix For: 0.8
>         Attachments: patch_tabletemplate.patch, TableTemplate.odt,
> See previous discussion in the mailing list
> I'd like to propose a new Simple API which could provide a similar
function in OpenOffice as ' Table > AutoFormat'. This will allow users to
define their own table template once and apply them anywhere they need.
Since the <table:table template> doesn't have higher-level support yet, API
has to define and extract such template from existing table and serialize
them into separated elements at current stage.
> Proposed Solution:
> 1. User need to define their own table, as a table template, in a
document by ODF editor.
> 2. Add two Simple APIs:
>   * Need new API to import table style from appointed table.
>   * Need new API to apply table style definition to table.
> Since it's difficult to recognize all kinds of style combination, we
could use the definition of <table:table template> to define and copy table
styles.  It means API can recognize and copy 6 types of cell styles from
source table to target table.
>       1. first column
>       2. last column
>       3. first row
>       4. last row
>       5. even rows, odd rows
>      6. even columns, odd rows
> Considering performance and complexity, we'd better restrict the size of
imported table, basically a 5*5 table (A1:E5) would be enough. We can get
each type of style from an appointed cell.
>       1. first column ( A2)
>       2. last column (E2)
>       3. first row (B2)
>       4. last row (B5)
>       5. even rows (B3),  odd rows (B2)
>       6. even columns: (C2), odd rows (B2)
> For each type of style, API can copy two definitions <table: style-name>
and <table: paragraph-style-name>, which displayed as number format, font,
alignment, borders and background.
> In ODF specs, there's some restriction on table template definition. If
more than one style reference is applied to a cell, it has to follow the
order. It means if a table has even/odd row style, it cannot apply even/odd
column style at the same time. Besides that, the four corner cell can only
inherit the style from the column or the row they exists, and cannot been
appointed to other values. Actually, user may need more complicated
template than that, like some complicated template pre-defined in OO. Maybe
we could consider more extensibility when defining table template in API
according to real requirements.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA
For more information on JIRA, see:

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message