Ok, so let's try this again.
Currently, Author does recognize and validate my specializations. However, when I try to use the Add Row command, Author responds by by adding a whole new tbody element at the bottom of the table and adding a conventional CALS row within it.
From poking around in the .framework file, it looks like these functions are controlled by actionmode elements, so I appended a "not" statement to the actionmode element for inserting a new row after a row in order to exclude my specialized rows:
Code: Select all
<actionMode>
<field name="xpathCondition">
<String>ancestor-or-self::node()[self::*[contains(@class," topic/row ") or contains(@class," topic/strow ") or contains(@class, " topic/sthead ")]][1][self::*[contains(@class," topic/row ")]][not(self::*[contains(@class, "firmware-d/reg-reference")] or self::*[contains(@class, "struct-d/dword")] or self::*[contains(@class, "software-d/field")] or self::*[contains(@class, "struct-d/include")] or self::*[contains(@class, "firmtest-d/test")] or self::*[contains(@class, "m-software-d/register-reference")])]</String>
</field>
<field name="argValues">
<serializableOrderedMap>
<entry>
<String>insertLocation</String>
<String>ancestor-or-self::*[contains(@class," topic/row ")][1]</String>
</entry>
<entry>
<String>insertPosition</String>
<String>After</String>
</entry>
</serializableOrderedMap>
</field>
<field name="operationID">
<String>ro.sync.ecss.extensions.commons.table.operations.cals.InsertSingleRowOperation</String>
</field>
</actionMode>
And then I tried to write an actionmode element that would apply to one of my specializations:
Code: Select all
<actionMode>
<field name="xpathCondition">
<String>ancestor-or-self::node()[self::*[contains(@class," firmware-d/reg-reference ")]]</String>
</field>
<field name="argValues">
<serializableOrderedMap>
<entry>
<String>insertLocation</String>
<String>ancestor-or-self::node()[*[contains(@class," firmware-d/reg-reference ")]][1]</String>
</entry>
<entry>
<String>insertPosition</String>
<String>After</String>
</entry>
<entry>
<String>fragment</String>
<String>
<reg-reference>
<reg-address> </reg-address>
<reg-size> <reg-size>
<reg-name>Name</reg-name>
</reg-details>
</reg-reference>
</String>
</entry>
</serializableOrderedMap>
</field>
<field name="operationID">
<String>ro.sync.ecss.extensions.commons.table.operations.cals.InsertSingleRowOperation</String>
</field>
</actionMode>
However, Author's behavior remains unchanged.
Looking at the actionmode elements, it is pretty clear that the xpathcondition field is used to identify the target nodes, and the operationID field element is used to call the java function, however, the syntax available to me in between remains a bit of a mystery.
Is there a relationship between the fields in the actionmode element and parameters of the java class being called (
https://www.oxygenxml.com/InstData/Edit ... ation.html)?