Class CALSDocumentTypeHelper
- java.lang.Object
-
- ro.sync.ecss.extensions.commons.AbstractDocumentTypeHelper
-
- ro.sync.ecss.extensions.commons.table.operations.cals.CALSDocumentTypeHelper
-
- All Implemented Interfaces:
AuthorTableHelper
,CALSConstants
- Direct Known Subclasses:
DITATableDocumentTypeHelper
@API(type=INTERNAL, src=PUBLIC) public class CALSDocumentTypeHelper extends AbstractDocumentTypeHelper implements CALSConstants
Implementation of the document type helper for CALS table model(DocBook and DITA).
-
-
Field Summary
-
Fields inherited from interface ro.sync.ecss.extensions.commons.table.operations.AuthorTableHelper
TYPE_CELL, TYPE_ROW, TYPE_TABLE
-
Fields inherited from interface ro.sync.ecss.extensions.commons.table.operations.cals.CALSConstants
ATTRIBUTE_NAME_ALIGN, ATTRIBUTE_NAME_COLNAME, ATTRIBUTE_NAME_COLNUM, ATTRIBUTE_NAME_COLS, ATTRIBUTE_NAME_COLSEP, ATTRIBUTE_NAME_COLWIDTH, ATTRIBUTE_NAME_ID, ATTRIBUTE_NAME_MOREROWS, ATTRIBUTE_NAME_NAMEEND, ATTRIBUTE_NAME_NAMEST, ATTRIBUTE_NAME_ROWSEP, ATTRIBUTE_NAME_SPANNAME, ATTRIBUTE_NAME_TABLE_WIDTH, ATTRIBUTE_NAME_XML_ID, ELEMENT_NAME_COLSPEC, ELEMENT_NAME_ENTRY, ELEMENT_NAME_INFORMALTABLE, ELEMENT_NAME_ROW, ELEMENT_NAME_SPANSPEC, ELEMENT_NAME_TABLE, ELEMENT_NAME_TGROUP
-
-
Constructor Summary
Constructors Constructor Description CALSDocumentTypeHelper()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
checkTableColSpanIsDefined(AuthorAccess authorAccess, AuthorTableCellSpanProvider tableSpanSupport, AuthorElement cellElement)
Check if the column span is defined for a table cell.java.lang.String[]
getAllowedCellAttributesToCopy()
Get a list of allowed cell attributes to copy when creating a new row.java.lang.String[]
getIgnoredCellIDAttributes()
Gets the ID attribute names which should be skipped when inserting a new column or row and the attributes from source cell fragments must be copied.java.lang.String[]
getIgnoredColumnAttributes()
Gets the attributes which should be skipped when inserting a new column and the attributes from source cell fragments must be copied.java.lang.String[]
getIgnoredRowAttributes()
Gets the attributes which should be skipped when using the current row as template for insert operation.java.lang.String[]
getTableCellElementNames()
Returns the possible local names of the elements that represents a table cell.AuthorTableCellSpanProvider
getTableCellSpanProvider(AuthorElement tgroupElement)
Creates anAuthorTableCellSpanProvider
corresponding to the table element.AuthorNode
getTableElementForDeletion(AuthorNode element)
When we delete all the rows or all the columns of a table, we also want to delete the entire table element.java.lang.String[]
getTableElementLocalName()
Returns the possible local names of the elements that represents a table.java.lang.String[]
getTableRowElementNames()
Return the possible local names of the elements that represent a table row.protected boolean
isActuallyTableAndNotTgroup(AuthorNode node)
Check if the given node is a CALS table (not a tgroup, but actually a table element).void
limitRowSpan(AuthorDocumentFragment[] rowFragments)
Limits the value of the "morerows" attribute from the given rows fragments according to the number of rows.void
updateTableColSpan(AuthorAccess authorAccess, AuthorTableCellSpanProvider tableSupport, AuthorElement cellElem, int startCol, int endCol)
Update the span information of the specified cell element.void
updateTableColumnNumber(AuthorAccess authorAccess, AuthorElement tableElement, int colsNumber)
Update thecols
attribute value of the tabletgroup
element.void
updateTableRowNumber(AuthorAccess authorAccess, AuthorElement tableElement, int rowsNumber)
Not needed for CALS Tables.void
updateTableRowSpan(AuthorAccess authorAccess, AuthorElement cellElem, int rowSpan)
Update themorerows
attribute value for the given cell element.-
Methods inherited from class ro.sync.ecss.extensions.commons.AbstractDocumentTypeHelper
isColspec, isContentReference, isElement, isTable, isTableCell, isTableRow
-
-
-
-
Method Detail
-
getTableCellElementNames
public java.lang.String[] getTableCellElementNames()
Description copied from class:AbstractDocumentTypeHelper
Returns the possible local names of the elements that represents a table cell.- Specified by:
getTableCellElementNames
in classAbstractDocumentTypeHelper
- Returns:
- The local names of the elements that represents a table cell.
Not
null
. - See Also:
AbstractDocumentTypeHelper.getTableCellElementNames()
-
getTableRowElementNames
public java.lang.String[] getTableRowElementNames()
Description copied from class:AbstractDocumentTypeHelper
Return the possible local names of the elements that represent a table row.- Specified by:
getTableRowElementNames
in classAbstractDocumentTypeHelper
- Returns:
- The local names of the elements that represent a table row.
- See Also:
AbstractDocumentTypeHelper.getTableRowElementNames()
-
getTableElementLocalName
public java.lang.String[] getTableElementLocalName()
Description copied from class:AbstractDocumentTypeHelper
Returns the possible local names of the elements that represents a table.- Specified by:
getTableElementLocalName
in classAbstractDocumentTypeHelper
- Returns:
- The local names of the elements that represents a table.
- See Also:
AbstractDocumentTypeHelper.getTableElementLocalName()
-
checkTableColSpanIsDefined
public void checkTableColSpanIsDefined(AuthorAccess authorAccess, AuthorTableCellSpanProvider tableSpanSupport, AuthorElement cellElement) throws AuthorOperationException
Description copied from interface:AuthorTableHelper
Check if the column span is defined for a table cell.I.E. for DocBook the column span is defined by the 'colspec' element. If it is missing then the column span is not defined.
- Specified by:
checkTableColSpanIsDefined
in interfaceAuthorTableHelper
- Parameters:
authorAccess
- The author access. Provides access to specific informations and actions for editor, document, workspace, tables, change tracking, utility a.s.o.tableSpanSupport
- The table cell span provider.cellElement
- The cell element to be tested.- Throws:
AuthorOperationException
- When the column span is not defined for the table cell.- See Also:
AuthorTableHelper.checkTableColSpanIsDefined(ro.sync.ecss.extensions.api.AuthorAccess, ro.sync.ecss.extensions.api.AuthorTableCellSpanProvider, ro.sync.ecss.extensions.api.node.AuthorElement)
-
updateTableColSpan
public void updateTableColSpan(AuthorAccess authorAccess, AuthorTableCellSpanProvider tableSupport, AuthorElement cellElem, int startCol, int endCol) throws AuthorOperationException
Update the span information of the specified cell element. Thenamest
andnameend
attributes will be set according to thestartCol
andendCol
supplied values. If thespanname
attribute is set, then it will be removed. If thecolname
attribute is set, then it will be removed.- Specified by:
updateTableColSpan
in interfaceAuthorTableHelper
- Parameters:
authorAccess
- The author access. Provides access to specific informations and actions for editor, document, workspace, tables, change tracking, utility a.s.o.tableSupport
- The object responsible for providing information about the cell spanning.cellElem
- The cell element whose column span will be updated.startCol
- The new index of start column. It is 1 based and inclusive.endCol
- The new index of end column. It is 1 based and inclusive.- Throws:
AuthorOperationException
- If the supplied values for start span column and end span column do not correspond to existing columns specifications.- See Also:
AuthorTableHelper.updateTableColSpan(ro.sync.ecss.extensions.api.AuthorAccess, ro.sync.ecss.extensions.api.AuthorTableCellSpanProvider, ro.sync.ecss.extensions.api.node.AuthorElement, int, int)
-
getTableCellSpanProvider
public AuthorTableCellSpanProvider getTableCellSpanProvider(AuthorElement tgroupElement)
Creates anAuthorTableCellSpanProvider
corresponding to the table element.- Specified by:
getTableCellSpanProvider
in interfaceAuthorTableHelper
- Parameters:
tgroupElement
- The element rendered as a table. Its 'display' CSS property is set to 'table'.- Returns:
- The table cell span provider. Must not be
null
. - See Also:
AuthorTableHelper.getTableCellSpanProvider(ro.sync.ecss.extensions.api.node.AuthorElement)
-
updateTableRowSpan
public void updateTableRowSpan(AuthorAccess authorAccess, AuthorElement cellElem, int rowSpan)
Update themorerows
attribute value for the given cell element. If the supplied value for the row span is less than or equal to 1 then the attribute will be removed.- Specified by:
updateTableRowSpan
in interfaceAuthorTableHelper
- Parameters:
authorAccess
- The author access. Provides access to specific informations and actions for editor, document, workspace, tables, change tracking, utility a.s.o.cellElem
- The cell element whose row span will be updated.rowSpan
- The new row span value. It is 1 based.- See Also:
AuthorTableHelper.updateTableRowSpan(ro.sync.ecss.extensions.api.AuthorAccess, ro.sync.ecss.extensions.api.node.AuthorElement, int)
-
updateTableColumnNumber
public void updateTableColumnNumber(AuthorAccess authorAccess, AuthorElement tableElement, int colsNumber)
Update thecols
attribute value of the tabletgroup
element.- Specified by:
updateTableColumnNumber
in interfaceAuthorTableHelper
- Parameters:
authorAccess
- The author access. Provides access to specific informations and actions for editor, document, workspace, tables, change tracking, utility a.s.o.tableElement
- The element rendered as a table. Its 'display' CSS property is set to 'table'.colsNumber
- The updated number of columns.- See Also:
AuthorTableHelper.updateTableColumnNumber(ro.sync.ecss.extensions.api.AuthorAccess, ro.sync.ecss.extensions.api.node.AuthorElement, int)
-
updateTableRowNumber
public void updateTableRowNumber(AuthorAccess authorAccess, AuthorElement tableElement, int rowsNumber)
Not needed for CALS Tables.- Specified by:
updateTableRowNumber
in interfaceAuthorTableHelper
- Parameters:
authorAccess
- The author access. Provides access to specific informations and actions for editor, document, workspace, tables, change tracking, utility a.s.o.tableElement
- The element rendered as a table. Its 'display' CSS property is set to 'table'.rowsNumber
- The number of rows to increase or decrease the current number of table rows. If the number of rows must be decreased then the argument must be negative.- See Also:
AuthorTableHelper.updateTableRowNumber(ro.sync.ecss.extensions.api.AuthorAccess, ro.sync.ecss.extensions.api.node.AuthorElement, int)
-
getIgnoredRowAttributes
public java.lang.String[] getIgnoredRowAttributes()
Description copied from interface:AuthorTableHelper
Gets the attributes which should be skipped when using the current row as template for insert operation.- Specified by:
getIgnoredRowAttributes
in interfaceAuthorTableHelper
- Returns:
- The attributes which should be skipped.
- See Also:
AuthorTableHelper.getIgnoredRowAttributes()
-
getIgnoredCellIDAttributes
public java.lang.String[] getIgnoredCellIDAttributes()
Description copied from interface:AuthorTableHelper
Gets the ID attribute names which should be skipped when inserting a new column or row and the attributes from source cell fragments must be copied.- Specified by:
getIgnoredCellIDAttributes
in interfaceAuthorTableHelper
- Returns:
- The ID attributes which should be skipped.
- See Also:
AuthorTableHelper.getIgnoredCellIDAttributes()
-
getAllowedCellAttributesToCopy
public java.lang.String[] getAllowedCellAttributesToCopy()
Get a list of allowed cell attributes to copy when creating a new row.- Overrides:
getAllowedCellAttributesToCopy
in classAbstractDocumentTypeHelper
- Returns:
- a list of allowed cell attributes to copy when creating a new row.
-
getIgnoredColumnAttributes
public java.lang.String[] getIgnoredColumnAttributes()
Description copied from interface:AuthorTableHelper
Gets the attributes which should be skipped when inserting a new column and the attributes from source cell fragments must be copied.- Specified by:
getIgnoredColumnAttributes
in interfaceAuthorTableHelper
- Returns:
- The attributes which should be skipped.
- See Also:
AuthorTableHelper.getIgnoredColumnAttributes()
-
getTableElementForDeletion
public AuthorNode getTableElementForDeletion(AuthorNode element)
Description copied from interface:AuthorTableHelper
When we delete all the rows or all the columns of a table, we also want to delete the entire table element.
OBS: For CALS tables we don't want to delete only the "tgroup", but the parent table element itself.- Specified by:
getTableElementForDeletion
in interfaceAuthorTableHelper
- Overrides:
getTableElementForDeletion
in classAbstractDocumentTypeHelper
- Parameters:
element
- the node whose parent table we are looking for.- Returns:
- the table element to be deleted.
- See Also:
getTableElementForDeletion(ro.sync.ecss.extensions.api.node.AuthorNode)
-
isActuallyTableAndNotTgroup
protected boolean isActuallyTableAndNotTgroup(AuthorNode node)
Check if the given node is a CALS table (not a tgroup, but actually a table element).- Parameters:
node
- the node for which we perform the check.- Returns:
true
if the given node is a table element.
-
limitRowSpan
public void limitRowSpan(AuthorDocumentFragment[] rowFragments)
Limits the value of the "morerows" attribute from the given rows fragments according to the number of rows. Each fragment has inside it a single table row. For example if we have 3 rows and the first row contains a cell with 'morerows=5', we'll set 'morerows=2' on the cell.- Parameters:
rowFragments
- The fragments of rows to be limited.
-
-