InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ISpreadFieldOrder Class Referenceabstract

#include <ISpreadFieldOrder.h>

Inheritance diagram for ISpreadFieldOrder:
IPMUnknown

Public Types

enum  { kDefaultIID = IID_ISPREADFIELDORDER }
 
typedef K2Vector< UIDTabOrder
 

Public Member Functions

virtual TabOrder GetTabOrder (UID inPage)=0
 
virtual void SetTabOrder (UID inPage, const TabOrder &inPageItemList)=0
 
virtual void FieldWasAddedToHierarchy (const UID &inPageItem)=0
 
virtual void FieldWasAddedToHierarchy (UID inPageUID, const UID &inPageItem)=0
 
virtual void FieldWillBeRemovedFromHierarchy (const UID &inPageItem)=0
 
- Public Member Functions inherited from IPMUnknown
virtual IPMUnknownQueryInterface (PMIID interfaceID) const =0
 
virtual void AddRef () const =0
 
virtual void Release () const =0
 

Detailed Description

This class tracks the tab order for form fields... These orderings are written to generated PDF files.

A tricky issue:

What about the order for items that appear on multiple pages? (such as items on master pages and items that span pages)

Ideally, such items would have an ordering for each page that they appear on. Therefore we track not only the pageitem but the spread and page for each potential instance of the item on a page.

For tab order, we track every spread with form fields, and every page within those spreads that contain form fields.

But I think for a first attempt at all this, I'm not going to worry about master pages and multipage spanning form fields.

This means that for now,

The master page items will always be ordered before the normal page items (but master page items can be ordered among the other master page items). Multipage spanning page items should have an order on each page.

I should be able to support any ordering of master page items, multipage spanning page items and normal page items later on without changing the file format.

Though this level of control might not be needed...

See Also
IDocumentFieldOrder

Member Function Documentation

virtual void ISpreadFieldOrder::FieldWasAddedToHierarchy (const UIDinPageItem)
pure virtual

Called when a field is added to a hierarchy in a document (really when it is added to a spread hierarchy, but it is smart enough to ignore the cases where its not in a spread).

Takes care of entering inPageItem (if it's a form field) into the Tab Order

Parameters
inPageItemPage item being added to hierarchy
virtual void ISpreadFieldOrder::FieldWasAddedToHierarchy (UID inPageUID,
const UIDinPageItem 
)
pure virtual

Called when a field is added to a hierarchy in a document (really when it is added to a spread hierarchy, but it is smart enough to ignore the cases where its not in a spread). Used when page uid is already known, so that page doesn't have to be looked up.

Takes care of entering inPageItem (if it's a form field) into the Tab Order

Parameters
inPageUIDPage of inPageItem being added to hierarchy
inPageItemPage item being added to hierarchy
virtual void ISpreadFieldOrder::FieldWillBeRemovedFromHierarchy (const UIDinPageItem)
pure virtual

Called when a field is to removed from a hierarchy in a document (really when it is removed from a spread hierarchy, but it is smart enough to ignore the cases where its not in a spread).

Takes care of removing inPageItem (if it's a form field) from the page's Tab Order

Parameters
inPageItemPage item being removed to hierarchy
virtual TabOrder ISpreadFieldOrder::GetTabOrder (UID inPage)
pure virtual

Get Form Field Tab Order for a page on this Spread

Parameters
inPagea page on this spread (ISpreadFieldOrder is an addin to the spread
virtual void ISpreadFieldOrder::SetTabOrder (UID inPage,
const TabOrderinPageItemList 
)
pure virtual

Set Form Field Tab Order for a page on this Spread

Parameters
inPagea page on this spread (ISpreadFieldOrder is an addin to the spread
inPageItemListan ordered list of form field UIDs