This page is likely outdated (last edited on 14 Jul 2009). Visit the new documentation for updated content.
Accessibility: Bridge Functional Specification
Table of contents |
Functional Specification
This document is intended to be a functional description of how System.Windows.Forms widgets are supposed to interact from a user perspective when viewed by Accerciser, or other AT-SPI Assistive Technologies.
Functionality
- Button
- Acts As: Push Button
- Similar To: GtkButton
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkImage, AtkText
- Default State: Enabled, Focusable, Sensitive, Showing, Visible
- Actions
- Click: State => +Focused
- Button Press: State => +Focused, +Armed
- Button Release: State => -Armed
- Click: State => +Focused
- CheckBox
- Acts As: Check Box
- Similar To: GtkCheckButton
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkImage, AtkText
- Default State: Enabled, Focusable, Sensitive, Showing, Visible
- Actions
- Click: State => +Focused, +Checked
- Button Press: State => +Focused
- Button Release: State => +Checked
- Click: State => +Focused, +Checked
- CheckedListBox
- Acts As: List
- Similar To: GtkTreeView (List style)
- Provides: AtkAccessible, AtkComponent, AtkSelection
- Default State: Enabled, Focusable, Manages Descendants, Sensitive, Showing, Visible
- Children
- CheckBox
- Acts As: Check Box
- Provides: AtkAccessible, AtkAction, AtkComponent
- Default State: Enabled, Focusable, Selectable, Sensitive, Showing, Transient, Visible
- Actions: Toggle, Activate
- CheckBox
- (Inherits: GtkTreeView [List style])
- ColorDialog
- Acts As: Color Chooser
- Similar To: GtkColorSelDialog
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Sensitive, Showing, Vertical, Visible
- Actions: None
- ColumnHeader
- Acts As: Table Column Header
- Similar To: GtkTreeViewColumn
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkImage, AtkText
- Default State: Enabled, Focusable, Selectable, Sensitive, Showing, Visible
- Actions
- Click: State => +Focused, +Armed, visible-data-changed, -Armed
- ComboBox
- Simple
- Acts As: Tree Table
- Similar To: GtkTreeView (List style)
- Provides: AtkAccessible, AtkComponent, AtkSelection
- Actions:
- Click
- Default State: Enabled, Focusable, ManagesDescendants, Sensitive, Showing, Visible
- Children: option_0, option_1 (all roles: table cell)
- DropDown
- Acts As: Combo Box
- Similar To: GtkComboBoxEntry
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkSelection
- Default State: Enabled, Sensitive, Showing, Visible
- Actions
- Anything that changes the selection (key press, mouse press, release…): selection-changed, active-descendant-changed(n, 0, [table_cell_obj) (where n is the pos + 1)
- DropDownList
- Acts As: Combo Box
- Similar To: GtkComboBox
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkSelection
- Default State: Enabled, Sensitive, Showing, Visible
- Actions
- Button Press: State => +Focused
- Button Release: selection-changed, State => +Focused
- Key Down: selection-changed
- Simple
- ContainerControl
- Acts As: Panel
- Similar To: GtkLayout
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Focusable, Sensitive, Showing, Visible
- Actions: None
- ContextMenu (deprecated; new: ContextMenuStrip)
- Acts As: Menu Bar
- Similar To: GtkMenuBar?
- Provides: (Inherits: MenuStrip)
- Default State: (Inherits: MenuStrip)
- Actions: (Inherits: MenuStrip)
- ContextMenuStrip
- (Inherits: ContextMenu)
- DataGrid (deprecated; new: DataGridView)
- (Inherits: DataGridView)
- DataGridBoolColumn
- Acts As: Table Cell
- Similar To: GtkCellRendererToggle
- Provides: AtkAccessible, AtkAction, AtkComponent
- Default State: Enabled, Focusable, Manages Descendants, Sensitive, Showing, Visible
- Default Actions: Toggle, Activate
- Actions
- Toggled: state-changed:checked, state-changed:selected
- DataGridTextBoxColumn
- Acts As: Table Cell
- Similar To: GtkCellRendererText
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkText
- Default State: Active, Enabled, Focusable, Selectable, Selected, Sensitive, Showing, Single Line, Transient, Visible
- Actions
- Edit text: text-changed:delete, property-change:accessible-name, text-changed:insert, property-change:accessible-name
- DataGridView
- Acts As: Tree Table
- Similar To: GtkTreeView
- Default State: Enabled, Focusable, Sensitive, Showing, Visible
- Actions
- (Inherits: ListView)
- DateTimePicker
- Acts As: Calendar
- Similar To: GtkCalendar
- Default State: Enabled, Focusable, Sensitive, Showing, Visible
- Actions: None
- Note: GtkCalendar is not currently accessible.
- DomainUpDown
- Acts As: Spin Button
- Similar To: GtkTreeView (List style)
- Provides: AtkAccessible, AtkComponent, AtkText, AtkEditableText, AtkSelection
- Default State: Editable, Enabled, Focusable, Sensitive, Showing, Single Line, Visible, Manages Descendants
- Actions:
- Item Click: selection-changed
- ErrorProvider
- Acts As: Panel
- Similar To: N/A
- Provides: AtkAccessible, AtkComponent
- Note: This provider most likely shouldn’t be exported, as it does nothing visibly.
- FileDialog
- Acts As: Dialog
- Similar To: GtkFileChooser
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Resizable, Sensitive, Showing, Visible
- Actions: None
- FlowLayoutPanel
- Acts As: Panel
- Similar To: GtkTable
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- FontDialog
- Acts As: Font Chooser
- Similar To: GtkFontSelectionDialog
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Resizable, Sensitive, Showing, Visible
- Actions: None
- Form
- Acts As: Frame
- Similar To: GtkWindow
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Resizable, Sensitive, Showing, Visible
- Actions: None
- GroupBox
- Acts As: Panel
- Similar To: GtkFrame
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- HelpProvider
- NOTE: It’s not fully implemented in Mono. See note 1.
- HScrollBar
- Acts As: Scroll Bar
- Similar To: GtkHScrollBar
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkValue
- Default State: Enabled, Sensitive, Showing, Visible, Horizontal
- Actions
- Move scrollbar: property-change:accessible-value
- Label
- Acts As: Label
- Similar To: GtkLabel
- Provides: AtkAccessible, AtkComponent, AtkText
- Default State: Enabled, Multi Line, Sensitive, Showing, Visible
- Actions: None
- LinkLabel
- Acts As: Label
- Similar To: GtkLabel
- Provides: AtkAccessible, AtkComponent, AtkText, AtkHypertext, AtkAction
- Default State: Enabled, Multi Line, Sensitive, Showing, Visible
- ListBox
- Acts As: List
- Similar To: GtkTreeView (List style)
- Provides: AtkAccessible, AtkComponent, AtkSelection
- Default State: Enabled, Focusable, Manages Descendants, Sensitive, Showing, Visible
- Children
- Text
- Acts As: List Item
- Provides: AtkAccessible, AtkAction AtkComponent, AtkText
- Actions: Activate
- Text
- ListView
- Acts As: Tree Table
- Similar To: GtkTreeView (List style)
- Provides: AtkAccessible, AtkComponent, AtkSelection, AtkTable
- Default State: Enabled, Focusable, Manages Descendants, Sensitive, Showing, Visible
- Children: column_0 (role: table column header), cell_0_in_column_0 (role: table cell), cell_1_in_column_0, …, column_1, cell_0_in_column_1, …
- Actions:
- Click on column header to cause row reordering: object:row-reordered, object:visible-data-changed
- MainMenu (deprecated; new: MenuStrip)
- Acts As: Menu Bar
- Similar To: GtkMenuBar
- Provides: AtkAccessible, AtkComponent, AtkSelection
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- MaskedTextBox
- (Inherits: TextBox)
- MenuItem (deprecated; new: ToolStripMenuItem)
- Acts As: Menu Item
- Similar To: GtkMenuItem
- Provides: AtkAccessible, AtkComponent, AtkAction, AtkText, AtkSelection
- Default State: Enabled, Selectable, Sensitive, Showing, Visible
- Actions:
- Click/Enter(Activate) if child: +Focused, +Selected
- Click/Enter(Activate) if parent: +Selected
- KeyUp/Down to receive focus if child, or KeyLeft/Right to receive focus if parent: +Selected, +Focused
- KeyUp/Down to leave focus: +Focused, -Selected
- KeyX to select a child: selection-changed
- MenuStrip
- Acts As: Menu Bar
- Similar To: GtkMenuBar
- Provides: (Inherits: MainMenu)
- Actions: (Inherits: MainMenu)
- MonthCalendar
- Acts As: Calendar
- Similar To: GtkCalendar
- Default State: Enabled, Focusable, Sensitive, Showing, Visible
- Actions: None
- Note: GtkCalendar is not currently accessible.
- NotifyIcon
- Note: Notification icons are not currently accessible, although work is on-going.
- NumericUpDown
- Acts As: Spin Button
- Similar To: GtkSpinButton
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkText, AtkValue
- Default State: Editable, Enabled, Focusable, Sensitive, Showing, Single Line, Visible
- Actions
- Press Up/Down Button: text-changed:delete, property-change:accessible-value, text-changed:insert
- Panel
- Acts As: Panel
- Simila To: GtkContainer
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- OpenFileDialog
- (Inherits: FileDialog)
- PageSetupDialog
- Acts As: Dialog
- Similar To: GtkPageSetup
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Modal, Sensitive, Showing, Visible
- Actions: None
- PictureBox
- Acts As: Icon
- Similar To: GtkImage
- Provides: AtkAccessible, AtkComponent, AtkImage
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- PrintPreviewControl
- TODO: Research required, as Gtk+ doesn’t currently provide accessible implementations of the Print Preview widget.
- PrintPreviewDialog
- TODO: Research required, as Gtk+ doesn’t currently provide accessible implementations of the Print Preview widget.
- ProgressBar
- Acts As: Progress Bar
- Similar To: GtkProgressBar
- Provides: AtkAccessible, AtkComponent, AtkValue, AtkText
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- PropertyGrid
- (Inherits: TreeView)
- RadioButton
- Acts As: Radio Button
- Similar To: GtkRadioButton
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkText, AtkImage
- Default State: Armed, Checked, Enabled, Focusable, Sensitive, Showing, Visible
- Actions
- Option clicked: State => +Focused, +Checked (other RadioButton if previously checked: -Checked)
- RichTextBox
- Acts As: Text
- Similar To: GtkTextView
- Provides: AtkAccessible, AtkComponent, AtkStreamableContent, AtkText, AtkEditableText
- Default State: Editable, Enabled, Focusable, Multi-Line, Sensitive, Showing, Visible
- Actions
- (Inherits: TextBox)
- SaveFileDialog
- (Inherits: FileDialog)
- ScrollableControl
- (Inherits: ScrollBar)
- ScrollBar
- Acts As: Scroll Bar
- Similar To: GtkScrollBar
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkValue
- Default State: Enabled, Focusable, Sensitive, Showing, Visible
- Actions
- Move scrollbar: property-change:accessible-value
- Spinner
- Acts As: Spin Button
- Similar To: GtkSpinButton
- Provides: AtkAccessible, AtkComponent, AtkValue, AtkAction, AtkText, AtkEditableText
- Default State: Editable, Enabled, Focusable, Sensitive, Showing, Single Line, Visible
- Actions:
- Click (on arrow): property-change:accessible-value
- (Inherits: TextBox)
- SplitContainer
- Acts As: Split Pane
- Similar To: GtkHPaned (or GtkVPaned, depending on Orientation property)
- Provides: AtkAccessible, AtkComponent, AtkValue
- Default State: Enabled, Focusable, Sensitive, Showing, Vertical?, Visible
- Actions
- Move pane: property-changed:accessible-value
- Splitter
- Acts As: Split Pane
- Similar To: GtkHPaned (or GtkVPaned, depending on DockStyle property)
- Provides: AtkAccessible, AtkComponent, AtkValue
- Default State: Enabled, Focusable, Sensitive, Showing, Horizontal or Vertical (depending on orientation), Visible
- Actions
- Move pane: property-changed:accessible-value
- StatusBar
- Acts As: Statusbar
- Similar To: GtkStatusbar
- Provides: AtkAccessible, AtkComponent, AtkText
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- StatusBarPanel
- Acts As: Label
- Similar To: GtkBin (?)
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- StatusStrip
- Acts As: Statusbar
- Similar To: GtkStatusbar
- Provides: AtkAccessible, AtkComponent, AtkText
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- TabControl
- Acts As: Page Tab List
- Similar To: GtkNotebook
- Provides: AtkAccessible, AtkComponent, AtkSelection
- Default State: Enabled, Focusable, Sensitive, Showing, Visible
- Actions
- Change tab: selection-changed, visibile-data-changed
- TableLayoutPanel
- Acts As: Panel
- Similar To: GtkTable
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- TabPage
- Acts As: Page Tab
- Similar To: GtkNotebookPage
- Provides: AtkAccessible, AtkComponent, AtkText
- Default State: Enabled, Multi Line, Selectable, Sensitive, Showing, Visible, Selected (if currently selected tab)
- Actions: None
- TextBox
- Acts As: Text
- Similar To: GtkTextView
- Provides: AtkAccessible, AtkComponent, AtkStreamableContent, AtkText, AtkEditableText
- Default State: Editable, Enabled, Focusable, Multi-Line or Single-Line (depending on Document or Edit control type), Sensitive, Showing, Visible
- Actions
- Click: State => +Focused, text-caret-moved
- Move cursor: text-caret-moved
- Insert a character: text-changed:insert, text-caret-moved
- Select a character: text-caret-moved, text-selection-changed
- Delete a character: text-changed:delete, text-caret-moved
- Drag and drop a character: text-changed:insert, text-changed:delete, text-caret-moved
- ThreadExceptionDialog
- Acts As: Dialog
- Similar To: None
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Modal, Sensitive, Showing, Visible
- Actions: None
- ToolBar
- Acts As: Tool Bar
- Similar To: GtkToolbar
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- ToolBarButton
- Acts As: Panel with Push Button child
- Similar To: GtkToolbarButton
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkImage, AtkText
- Default State: Enabled, Focusable, Sensitive, Showing, Visible
- Actions
- Button Press: State => +Focused, +Armed
- Button Release: State => -Armed
- ToolStrip
- Acts As: Tool Bar
- Similar To: GtkToolbar
- Provides: AtkAccessible, AtkComponent
- Default State: Enabled, Sensitive, Showing, Visible
- Actions: None
- ToolStripMenuItem
- Acts As: Menu
- Similar To: GtkImageMenuItem
- (Inherits: MenuItem)
- ToolStripComboBox
- Acts As: Combo Box
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkSelection
- Default State: (Inherits: ComboBox)
- Actions
- (Inherits: ComboBox)
- ToolStripDropDownButton
- Acts As: Menu
- Provides: AtkAccessible, AtkComponent, AtkAction, AtkText, AtkSelection
- Default State: Enabled, Selectable, Sensitive, Showing, Visible
- Actions
- (Inherits: MenuItem)
- Notes:
- Does not have Focusable or Focused state if it is a direct descendant of a ToolStrip.
- ToolStripLabel
- Acts As: Label
- Provides: AtkAccessible, AtkComponent, AtkText
- Default State: Enabled, Multi Line, Sensitive, Showing, Visible
- Actions: None
- ToolStripProgressBar
- Acts As: ProgressBar
- Provides: AtkAccessible, AtkComponent, AtkValue
- Default State: Enabled, Sensitive, Showing, Visible
- Action
- (Inherits: ProgressBar)
- ToolStripSeparator
- Acts As: Separator
- Similar To: SeparatorMenuItem
- Provides: AtkAccessible, AtkComponent
- Default State: Enable, Sensitive, Showing, Visible
- Actions: None
- ToolStripSplitButton
- A panel with two buttons: a regular Button with a Toggle Button beside it. The children of the Toggle Button should be MenuItems and it should act similarly to ToolStripDropDownButton.
- ToolStripTextBox
- Acts As: TextBox
- (Inherits: TextBox)
- ToolTip
- Acts As: Tool Tip
- Similar To: GtkTooltip
- (Inherits: Window)
- TrackBar
- Acts As: Slider
- Similar To: GtkHScale (or GtkVScale, depending on Orientation property)
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkText, AtkValue
- Actions
- Move slider: text-changed:delete, text-changed:insert, property-change:accessible-value
- TreeView
- (Inherits: ListView)
- Note: it should have a difference wrt ListView: cells that are below a parent cell should be children in the hierarchy, however, even the GtkTreeview in accerciser doesn’t show this layout.
- Actions (apart from ListView’s ones):
- Click on [+] to open a subtree: object:bounds-changed, object:visible-data-changed, object:active-descendant-changed, object:row-inserted
- VScrollBar
- Acts As: Scroll Bar
- Similar To: GtkVScrollBar
- Provides: AtkAccessible, AtkAction, AtkComponent, AtkValue
- Default State: Enabled, Sensitive, Showing, Visible, Vertical
- Actions
- Move scrollbar: property-change:accessible-value
- TODO: WebBrowser (comments on the discussion page)
Ideas
- Another thing that would be useful for QA is to know what the “default” states are for each control and each style of control if applicable. Maybe there are a few states that are common to all default controls? e.g., Visible, Enabled? Not sure on this one. -bgmerrell
Notes
- HelpProvider. Current implementation in mono supports HelpProvider, however the “?” button isn’t shown in the titlebar, there’s an explanation in Bug 412849 and the working example to fake “?” button if you want to test the implementation in mono.