/******************************************************************************* * Copyright (c) 2000, 2010, 2012 IBM Corporation, Gerhardt Informatics Kft. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Gerhardt Informatics Kft. - GEFGWT port *******************************************************************************/ package org.eclipse.swt.accessibility; import java.util.Vector; import org.eclipse.swt.SWT; import org.eclipse.swt.SWTException; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.widgets.Control; /** * Instances of this class provide a bridge between application code and * assistive technology clients. Many platforms provide default accessible * behavior for most widgets, and this class allows that default behavior to be * overridden. Applications can get the default Accessible object for a control * by sending it <code>getAccessible</code>, and then add an accessible listener * to override simple items like the name and help string, or they can add an * accessible control listener to override complex items. As a rule of thumb, an * application would only want to use the accessible control listener to * implement accessibility for a custom control. * * @see Control#getAccessible * @see AccessibleListener * @see AccessibleEvent * @see AccessibleControlListener * @see AccessibleControlEvent * @see <a * href="http://www.eclipse.org/swt/snippets/#accessibility">Accessibility * snippets</a> * @see <a href="http://www.eclipse.org/swt/">Sample code and further * information</a> * * @since 2.0 */ public class Accessible { Vector accessibleListeners = new Vector(); Vector accessibleControlListeners = new Vector(); Vector accessibleTextListeners = new Vector(); Vector accessibleActionListeners = new Vector(); Vector accessibleEditableTextListeners = new Vector(); Vector accessibleHyperlinkListeners = new Vector(); Vector accessibleTableListeners = new Vector(); Vector accessibleTableCellListeners = new Vector(); Vector accessibleTextExtendedListeners = new Vector(); Vector accessibleValueListeners = new Vector(); Vector accessibleAttributeListeners = new Vector(); Accessible parent; AccessibleObject accessibleObject; Control control; Vector relations; Vector children; static class Relation { int type; Accessible target; public Relation(int type, Accessible target) { this.type = type; this.target = target; } public boolean equals(Object object) { if (object == this) return true; if (!(object instanceof Relation)) return false; Relation relation = (Relation) object; return (relation.type == this.type) && (relation.target == this.target); } } /** * Constructs a new instance of this class given its parent. * * @param parent * the Accessible parent, which must not be null * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> * </ul> * * @see #dispose * @see Control#getAccessible * * @since 3.6 */ public Accessible(Accessible parent) { this.parent = checkNull(parent); this.control = parent.control; if (parent.children == null) parent.children = new Vector(); parent.children.addElement(this); } /** * @since 3.5 * @deprecated */ protected Accessible() { } static Accessible checkNull(Accessible parent) { if (parent == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); return parent; } Accessible(Control control) { super(); this.control = control; AccessibleFactory.registerAccessible(this); control.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { AccessibleFactory.unregisterAccessible(Accessible.this); release(); } }); } /** * Adds the listener to the collection of listeners who will be notified * when an accessible client asks for certain strings, such as name, * description, help, or keyboard shortcut. The listener is notified by * sending it one of the messages defined in the * <code>AccessibleListener</code> interface. * * @param listener * the listener that should be notified when the receiver is * asked for a name, description, help, or keyboard shortcut * string * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleListener * @see #removeAccessibleListener */ public void addAccessibleListener(AccessibleListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleListeners.addElement(listener); } /** * Adds the listener to the collection of listeners who will be notified * when an accessible client asks for custom control specific information. * The listener is notified by sending it one of the messages defined in the * <code>AccessibleControlListener</code> interface. * * @param listener * the listener that should be notified when the receiver is * asked for custom control specific information * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleControlListener * @see #removeAccessibleControlListener */ public void addAccessibleControlListener(AccessibleControlListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleControlListeners.addElement(listener); } /** * Adds the listener to the collection of listeners who will be notified * when an accessible client asks for custom text control specific * information. The listener is notified by sending it one of the messages * defined in the <code>AccessibleTextListener</code> and * <code>AccessibleTextExtendedListener</code> interfaces. * * @param listener * the listener that should be notified when the receiver is * asked for custom text control specific information * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleTextListener * @see AccessibleTextExtendedListener * @see #removeAccessibleTextListener * * @since 3.0 */ public void addAccessibleTextListener(AccessibleTextListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); if (listener instanceof AccessibleTextExtendedListener) { accessibleTextExtendedListeners.addElement(listener); } else { accessibleTextListeners.addElement(listener); } } /** * Adds the listener to the collection of listeners that will be notified * when an accessible client asks for any of the properties defined in the * <code>AccessibleActionListener</code> interface. * * @param listener * the listener that should be notified when the receiver is * asked for <code>AccessibleActionListener</code> interface * properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleActionListener * @see #removeAccessibleActionListener * * @since 3.6 */ public void addAccessibleActionListener(AccessibleActionListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleActionListeners.addElement(listener); } /** * Adds the listener to the collection of listeners that will be notified * when an accessible client asks for any of the properties defined in the * <code>AccessibleEditableTextListener</code> interface. * * @param listener * the listener that should be notified when the receiver is * asked for <code>AccessibleEditableTextListener</code> * interface properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleEditableTextListener * @see #removeAccessibleEditableTextListener * * @since 3.7 */ public void addAccessibleEditableTextListener( AccessibleEditableTextListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleEditableTextListeners.addElement(listener); } /** * Adds the listener to the collection of listeners that will be notified * when an accessible client asks for any of the properties defined in the * <code>AccessibleHyperlinkListener</code> interface. * * @param listener * the listener that should be notified when the receiver is * asked for <code>AccessibleHyperlinkListener</code> interface * properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleHyperlinkListener * @see #removeAccessibleHyperlinkListener * * @since 3.6 */ public void addAccessibleHyperlinkListener( AccessibleHyperlinkListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleHyperlinkListeners.addElement(listener); } /** * Adds the listener to the collection of listeners that will be notified * when an accessible client asks for any of the properties defined in the * <code>AccessibleTableListener</code> interface. * * @param listener * the listener that should be notified when the receiver is * asked for <code>AccessibleTableListener</code> interface * properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleTableListener * @see #removeAccessibleTableListener * * @since 3.6 */ public void addAccessibleTableListener(AccessibleTableListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleTableListeners.addElement(listener); } /** * Adds the listener to the collection of listeners that will be notified * when an accessible client asks for any of the properties defined in the * <code>AccessibleTableCellListener</code> interface. * * @param listener * the listener that should be notified when the receiver is * asked for <code>AccessibleTableCellListener</code> interface * properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleTableCellListener * @see #removeAccessibleTableCellListener * * @since 3.6 */ public void addAccessibleTableCellListener( AccessibleTableCellListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleTableCellListeners.addElement(listener); } /** * Adds the listener to the collection of listeners that will be notified * when an accessible client asks for any of the properties defined in the * <code>AccessibleValueListener</code> interface. * * @param listener * the listener that should be notified when the receiver is * asked for <code>AccessibleValueListener</code> interface * properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleValueListener * @see #removeAccessibleValueListener * * @since 3.6 */ public void addAccessibleValueListener(AccessibleValueListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleValueListeners.addElement(listener); } /** * Adds the listener to the collection of listeners that will be notified * when an accessible client asks for any of the properties defined in the * <code>AccessibleAttributeListener</code> interface. * * @param listener * the listener that should be notified when the receiver is * asked for <code>AccessibleAttributeListener</code> interface * properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleAttributeListener * @see #removeAccessibleAttributeListener * * @since 3.6 */ public void addAccessibleAttributeListener( AccessibleAttributeListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleAttributeListeners.addElement(listener); } /** * Adds a relation with the specified type and target to the receiver's set * of relations. * * @param type * an <code>ACC</code> constant beginning with RELATION_* * indicating the type of relation * @param target * the accessible that is the target for this relation * * @since 3.6 */ public void addRelation(int type, Accessible target) { } void addRelations() { } /** * Disposes of the operating system resources associated with the receiver, * and removes the receiver from its parent's list of children. * <p> * This method should be called when an accessible that was created with the * public constructor <code>Accessible(Accessible parent)</code> is no * longer needed. You do not need to call this when the receiver's control * is disposed, because all <code>Accessible</code> instances associated * with a control are released when the control is disposed. It is also not * necessary to call this for instances of <code>Accessible</code> that were * retrieved with <code>Control.getAccessible()</code>. * </p> * * @since 3.6 */ public void dispose() { if (parent == null) return; release(); parent.children.removeElement(this); parent = null; } /** * Returns the control for this Accessible object. * * @return the receiver's control * @since 3.0 */ public Control getControl() { return control; } /* checkWidget was copied from Widget, and rewritten to work in this package */ void checkWidget() { if (!isValidThread()) SWT.error(SWT.ERROR_THREAD_INVALID_ACCESS); if (control.isDisposed()) SWT.error(SWT.ERROR_WIDGET_DISPOSED); } AccessibleObject getAccessibleObject() { if (accessibleObject == null) { if (parent == null) { AccessibleFactory.createAccessible(this); } else { accessibleObject = AccessibleFactory.createChildAccessible( this, ACC.CHILDID_SELF); accessibleObject.parent = parent.getAccessibleObject(); } } return accessibleObject; } long /* int */getControlHandle() { return 0; } /** * Invokes platform specific functionality to allocate a new accessible * object. * <p> * <b>IMPORTANT:</b> This method is <em>not</em> part of the public API for * <code>Accessible</code>. It is marked public only so that it can be * shared within the packages provided by SWT. It is not available on all * platforms, and should never be called from application code. * </p> * * @param control * the control to get the accessible object for * @return the platform specific accessible object * * @noreference This method is not intended to be referenced by clients. */ public static Accessible internal_new_Accessible(Control control) { return new Accessible(control); } /* * isValidThread was copied from Widget, and rewritten to work in this * package */ boolean isValidThread() { return true; } void release() { } /** * Removes the listener from the collection of listeners who will be * notified when an accessible client asks for custom control specific * information. * * @param listener * the listener that should no longer be notified when the * receiver is asked for custom control specific information * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleControlListener * @see #addAccessibleControlListener */ public void removeAccessibleControlListener( AccessibleControlListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleControlListeners.removeElement(listener); } /** * Removes the listener from the collection of listeners who will be * notified when an accessible client asks for certain strings, such as * name, description, help, or keyboard shortcut. * * @param listener * the listener that should no longer be notified when the * receiver is asked for a name, description, help, or keyboard * shortcut string * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleListener * @see #addAccessibleListener */ public void removeAccessibleListener(AccessibleListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleListeners.removeElement(listener); } /** * Removes the listener from the collection of listeners who will be * notified when an accessible client asks for custom text control specific * information. * * @param listener * the listener that should no longer be notified when the * receiver is asked for custom text control specific information * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleTextListener * @see AccessibleTextExtendedListener * @see #addAccessibleTextListener * * @since 3.0 */ public void removeAccessibleTextListener(AccessibleTextListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); if (listener instanceof AccessibleTextExtendedListener) { accessibleTextExtendedListeners.removeElement(listener); } else { accessibleTextListeners.removeElement(listener); } } /** * Removes the listener from the collection of listeners that will be * notified when an accessible client asks for any of the properties defined * in the <code>AccessibleActionListener</code> interface. * * @param listener * the listener that should no longer be notified when the * receiver is asked for <code>AccessibleActionListener</code> * interface properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleActionListener * @see #addAccessibleActionListener * * @since 3.6 */ public void removeAccessibleActionListener(AccessibleActionListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleActionListeners.removeElement(listener); } /** * Removes the listener from the collection of listeners that will be * notified when an accessible client asks for any of the properties defined * in the <code>AccessibleEditableTextListener</code> interface. * * @param listener * the listener that should no longer be notified when the * receiver is asked for * <code>AccessibleEditableTextListener</code> interface * properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleEditableTextListener * @see #addAccessibleEditableTextListener * * @since 3.7 */ public void removeAccessibleEditableTextListener( AccessibleEditableTextListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleEditableTextListeners.removeElement(listener); } /** * Removes the listener from the collection of listeners that will be * notified when an accessible client asks for any of the properties defined * in the <code>AccessibleHyperlinkListener</code> interface. * * @param listener * the listener that should no longer be notified when the * receiver is asked for <code>AccessibleHyperlinkListener</code> * interface properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleHyperlinkListener * @see #addAccessibleHyperlinkListener * * @since 3.6 */ public void removeAccessibleHyperlinkListener( AccessibleHyperlinkListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleHyperlinkListeners.removeElement(listener); } /** * Removes the listener from the collection of listeners that will be * notified when an accessible client asks for any of the properties defined * in the <code>AccessibleTableListener</code> interface. * * @param listener * the listener that should no longer be notified when the * receiver is asked for <code>AccessibleTableListener</code> * interface properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleTableListener * @see #addAccessibleTableListener * * @since 3.6 */ public void removeAccessibleTableListener(AccessibleTableListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleTableListeners.removeElement(listener); } /** * Removes the listener from the collection of listeners that will be * notified when an accessible client asks for any of the properties defined * in the <code>AccessibleTableCellListener</code> interface. * * @param listener * the listener that should no longer be notified when the * receiver is asked for <code>AccessibleTableCellListener</code> * interface properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleTableCellListener * @see #addAccessibleTableCellListener * * @since 3.6 */ public void removeAccessibleTableCellListener( AccessibleTableCellListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleTableCellListeners.removeElement(listener); } /** * Removes the listener from the collection of listeners that will be * notified when an accessible client asks for any of the properties defined * in the <code>AccessibleValueListener</code> interface. * * @param listener * the listener that should no longer be notified when the * receiver is asked for <code>AccessibleValueListener</code> * interface properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleValueListener * @see #addAccessibleValueListener * * @since 3.6 */ public void removeAccessibleValueListener(AccessibleValueListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleValueListeners.removeElement(listener); } /** * Removes the listener from the collection of listeners that will be * notified when an accessible client asks for any of the properties defined * in the <code>AccessibleAttributeListener</code> interface. * * @param listener * the listener that should no longer be notified when the * receiver is asked for <code>AccessibleAttributeListener</code> * interface properties * * @exception IllegalArgumentException * <ul> * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see AccessibleAttributeListener * @see #addAccessibleAttributeListener * * @since 3.6 */ public void removeAccessibleAttributeListener( AccessibleAttributeListener listener) { checkWidget(); if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); accessibleAttributeListeners.removeElement(listener); } /** * Removes the relation with the specified type and target from the * receiver's set of relations. * * @param type * an <code>ACC</code> constant beginning with RELATION_* * indicating the type of relation * @param target * the accessible that is the target for this relation * * @since 3.6 */ public void removeRelation(int type, Accessible target) { } /** * Sends a message with event-specific data to accessible clients indicating * that something has changed within a custom control. * * @param event * an <code>ACC</code> constant beginning with EVENT_* indicating * the message to send * @param eventData * an object containing event-specific data, or null if there is * no event-specific data (eventData is specified in the * documentation for individual ACC.EVENT_* constants) * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see ACC#EVENT_ACTION_CHANGED * @see ACC#EVENT_ATTRIBUTE_CHANGED * @see ACC#EVENT_DESCRIPTION_CHANGED * @see ACC#EVENT_DOCUMENT_LOAD_COMPLETE * @see ACC#EVENT_DOCUMENT_LOAD_STOPPED * @see ACC#EVENT_DOCUMENT_RELOAD * @see ACC#EVENT_HYPERLINK_ACTIVATED * @see ACC#EVENT_HYPERLINK_ANCHOR_COUNT_CHANGED * @see ACC#EVENT_HYPERLINK_END_INDEX_CHANGED * @see ACC#EVENT_HYPERLINK_SELECTED_LINK_CHANGED * @see ACC#EVENT_HYPERLINK_START_INDEX_CHANGED * @see ACC#EVENT_HYPERTEXT_LINK_COUNT_CHANGED * @see ACC#EVENT_HYPERTEXT_LINK_SELECTED * @see ACC#EVENT_LOCATION_CHANGED * @see ACC#EVENT_NAME_CHANGED * @see ACC#EVENT_PAGE_CHANGED * @see ACC#EVENT_SECTION_CHANGED * @see ACC#EVENT_SELECTION_CHANGED * @see ACC#EVENT_STATE_CHANGED * @see ACC#EVENT_TABLE_CAPTION_CHANGED * @see ACC#EVENT_TABLE_CHANGED * @see ACC#EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED * @see ACC#EVENT_TABLE_COLUMN_HEADER_CHANGED * @see ACC#EVENT_TABLE_ROW_DESCRIPTION_CHANGED * @see ACC#EVENT_TABLE_ROW_HEADER_CHANGED * @see ACC#EVENT_TABLE_SUMMARY_CHANGED * @see ACC#EVENT_TEXT_ATTRIBUTE_CHANGED * @see ACC#EVENT_TEXT_CARET_MOVED * @see ACC#EVENT_TEXT_CHANGED * @see ACC#EVENT_TEXT_COLUMN_CHANGED * @see ACC#EVENT_TEXT_SELECTION_CHANGED * @see ACC#EVENT_VALUE_CHANGED * * @since 3.6 */ public void sendEvent(int event, Object eventData) { } /** * Sends a message to accessible clients that the child selection within a * custom container control has changed. * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @since 3.0 */ public void selectionChanged() { } /** * Sends a message to accessible clients indicating that the focus has * changed within a custom control. * * @param childID * an identifier specifying a child of the control * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> */ public void setFocus(int childID) { } /** * Sends a message to accessible clients that the text caret has moved * within a custom control. * * @param index * the new caret index within the control * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @since 3.0 */ public void textCaretMoved(int index) { } /** * Sends a message to accessible clients that the text within a custom * control has changed. * * @param type * the type of change, one of <code>ACC.TEXT_INSERT</code> or * <code>ACC.TEXT_DELETE</code> * @param startIndex * the text index within the control where the insertion or * deletion begins * @param length * the non-negative length in characters of the insertion or * deletion * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @see ACC#TEXT_INSERT * @see ACC#TEXT_DELETE * * @since 3.0 */ public void textChanged(int type, int startIndex, int length) { } /** * Sends a message to accessible clients that the text selection has changed * within a custom control. * * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver's control has * been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the * thread that created the receiver's control</li> * </ul> * * @since 3.0 */ public void textSelectionChanged() { } }