michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "nsISupports.idl" michael@0: #include "nsIArray.idl" michael@0: michael@0: interface nsIAccessible; michael@0: michael@0: /** michael@0: * This interface gives access to an accessible's set of relations. michael@0: */ michael@0: [scriptable, uuid(55b308c4-2ae4-46bc-b4cd-4d4370e0a660)] michael@0: interface nsIAccessibleRelation : nsISupports michael@0: { michael@0: /** michael@0: * This object is labelled by a target object. michael@0: */ michael@0: const unsigned long RELATION_LABELLED_BY = 0x00; michael@0: michael@0: /** michael@0: * This object is label for a target object. michael@0: */ michael@0: const unsigned long RELATION_LABEL_FOR = 0x01; michael@0: michael@0: /** michael@0: * This object is described by the target object. michael@0: */ michael@0: const unsigned long RELATION_DESCRIBED_BY = 0x02; michael@0: michael@0: /** michael@0: * This object is describes the target object. michael@0: */ michael@0: const unsigned long RELATION_DESCRIPTION_FOR = 0x3; michael@0: michael@0: /** michael@0: * This object is a child of a target object. michael@0: */ michael@0: const unsigned long RELATION_NODE_CHILD_OF = 0x4; michael@0: michael@0: /** michael@0: * This object is a parent of a target object. A dual relation to michael@0: * RELATION_NODE_CHILD_OF michael@0: */ michael@0: const unsigned long RELATION_NODE_PARENT_OF = 0x5; michael@0: michael@0: /** michael@0: * Some attribute of this object is affected by a target object. michael@0: */ michael@0: const unsigned long RELATION_CONTROLLED_BY = 0x06; michael@0: michael@0: /** michael@0: * This object is interactive and controls some attribute of a target object. michael@0: */ michael@0: const unsigned long RELATION_CONTROLLER_FOR = 0x07; michael@0: michael@0: /** michael@0: * Content flows from this object to a target object, i.e. has content that michael@0: * flows logically to another object in a sequential way, e.g. text flow. michael@0: */ michael@0: const unsigned long RELATION_FLOWS_TO = 0x08; michael@0: michael@0: /** michael@0: * Content flows to this object from a target object, i.e. has content that michael@0: * flows logically from another object in a sequential way, e.g. text flow. michael@0: */ michael@0: const unsigned long RELATION_FLOWS_FROM = 0x09; michael@0: michael@0: /** michael@0: * This object is a member of a group of one or more objects. When there is michael@0: * more than one object in the group each member may have one and the same michael@0: * target, e.g. a grouping object. It is also possible that each member has michael@0: * multiple additional targets, e.g. one for every other member in the group. michael@0: */ michael@0: const unsigned long RELATION_MEMBER_OF = 0x0a; michael@0: michael@0: /** michael@0: * This object is a sub window of a target object. michael@0: */ michael@0: const unsigned long RELATION_SUBWINDOW_OF = 0x0b; michael@0: michael@0: /** michael@0: * This object embeds a target object. This relation can be used on the michael@0: * OBJID_CLIENT accessible for a top level window to show where the content michael@0: * areas are. michael@0: */ michael@0: const unsigned long RELATION_EMBEDS = 0x0c; michael@0: michael@0: /** michael@0: * This object is embedded by a target object. michael@0: */ michael@0: const unsigned long RELATION_EMBEDDED_BY = 0x0d; michael@0: michael@0: /** michael@0: * This object is a transient component related to the target object. When michael@0: * this object is activated the target object doesn't lose focus. michael@0: */ michael@0: const unsigned long RELATION_POPUP_FOR = 0x0e; michael@0: michael@0: /** michael@0: * This object is a parent window of the target object. michael@0: */ michael@0: const unsigned long RELATION_PARENT_WINDOW_OF = 0x0f; michael@0: michael@0: /** michael@0: * Part of a form/dialog with a related default button. It is used for michael@0: * MSAA/XPCOM, it isn't for IA2 or ATK. michael@0: */ michael@0: const unsigned long RELATION_DEFAULT_BUTTON = 0x10; michael@0: michael@0: /** michael@0: * The target object is the containing document object. michael@0: */ michael@0: const unsigned long RELATION_CONTAINING_DOCUMENT = 0x11; michael@0: michael@0: /** michael@0: * The target object is the topmost containing document object in the tab pane. michael@0: */ michael@0: const unsigned long RELATION_CONTAINING_TAB_PANE = 0x12; michael@0: michael@0: /** michael@0: * The target object is the containing application object. michael@0: */ michael@0: const unsigned long RELATION_CONTAINING_APPLICATION = 0x14; michael@0: michael@0: /** michael@0: * Returns the type of the relation. michael@0: */ michael@0: readonly attribute unsigned long relationType; michael@0: michael@0: /** michael@0: * Returns the number of targets for this relation. michael@0: */ michael@0: readonly attribute unsigned long targetsCount; michael@0: michael@0: /** michael@0: * Returns one accessible relation target. michael@0: * @param index - 0 based index of relation target. michael@0: */ michael@0: nsIAccessible getTarget(in unsigned long index); michael@0: michael@0: /** michael@0: * Returns multiple accessible relation targets. michael@0: */ michael@0: nsIArray getTargets(); michael@0: };