int removeSelection(int selectionIndex) { AccessibleTextEvent event = new AccessibleTextEvent(this); event.index = selectionIndex; for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = accessibleTextExtendedListeners.get(i); listener.removeSelection(event); } if (DEBUG) print(this + ".IAccessibleText::removeSelection(" + selectionIndex + ") returning" + hresult(event.result == null || !event.result.equals(ACC.OK) ? COM.E_INVALIDARG : COM.S_OK)); if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG; return COM.S_OK; }
int scrollSubstringToPoint(int startIndex, int endIndex, int coordinateType, int x, int y) { if (DEBUG) print(this + ".IAccessibleText::scrollSubstringToPoint"); AccessibleTextEvent event = new AccessibleTextEvent(this); event.start = startIndex; event.end = endIndex; event.type = ACC.SCROLL_TYPE_POINT; event.x = x; event.y = y; for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = accessibleTextExtendedListeners.get(i); listener.scrollText(event); } if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG; // TODO: @retval S_FALSE if the object is already at the specified location. return COM.S_OK; }
int setCaretOffset(int offset) { AccessibleTextEvent event = new AccessibleTextEvent(this); event.offset = offset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : offset; for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = accessibleTextExtendedListeners.get(i); listener.setCaretOffset(event); } if (DEBUG) print(this + ".IAccessibleText::setCaretOffset(" + offset + ") returning" + hresult(event.result == null || !event.result.equals(ACC.OK) ? COM.E_INVALIDARG : COM.S_OK)); if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG; // TODO: @retval E_FAIL if the caret cannot be set ? return COM.S_OK; }
int scrollSubstringTo(int startIndex, int endIndex, int scrollType) { if (DEBUG) print(this + ".IAccessibleText::scrollSubstringTo"); AccessibleTextEvent event = new AccessibleTextEvent(this); event.start = startIndex; event.end = endIndex; switch (scrollType) { case COM.IA2_SCROLL_TYPE_TOP_LEFT: event.type = ACC.SCROLL_TYPE_TOP_LEFT; break; case COM.IA2_SCROLL_TYPE_BOTTOM_RIGHT: event.type = ACC.SCROLL_TYPE_BOTTOM_RIGHT; break; case COM.IA2_SCROLL_TYPE_TOP_EDGE: event.type = ACC.SCROLL_TYPE_TOP_EDGE; break; case COM.IA2_SCROLL_TYPE_BOTTOM_EDGE: event.type = ACC.SCROLL_TYPE_BOTTOM_EDGE; break; case COM.IA2_SCROLL_TYPE_LEFT_EDGE: event.type = ACC.SCROLL_TYPE_LEFT_EDGE; break; case COM.IA2_SCROLL_TYPE_RIGHT_EDGE: event.type = ACC.SCROLL_TYPE_RIGHT_EDGE; break; case COM.IA2_SCROLL_TYPE_ANYWHERE: event.type = ACC.SCROLL_TYPE_ANYWHERE; break; } for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = accessibleTextExtendedListeners.get(i); listener.scrollText(event); } if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG; return COM.S_OK; }
int setSelection(int selectionIndex, int startOffset, int endOffset) { AccessibleTextEvent event = new AccessibleTextEvent(this); event.index = selectionIndex; event.start = startOffset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : startOffset; event.end = endOffset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : endOffset; for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = accessibleTextExtendedListeners.get(i); listener.setSelection(event); } if (DEBUG) print(this + ".IAccessibleText::setSelection(index=" + selectionIndex + ", start=" + event.start + ", end=" + event.end + ") returning " + (event.result.equals(ACC.OK) ? "OK" : "INVALIDARG")); if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG; return COM.S_OK; }
int addSelection(int startOffset, int endOffset) { if (DEBUG) print(this + ".IAccessibleText::addSelection(" + startOffset + ", " + endOffset + ")"); AccessibleTextEvent event = new AccessibleTextEvent(this); event.start = startOffset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : startOffset; event.end = endOffset == COM.IA2_TEXT_OFFSET_LENGTH ? getCharacterCount() : endOffset; for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = accessibleTextExtendedListeners.get(i); listener.addSelection(event); } if (event.result == null || !event.result.equals(ACC.OK)) return COM.E_INVALIDARG; return COM.S_OK; }
int get_nHyperlinks(int /*long*/ pHyperlinkCount) { if (DEBUG) print(this + ".IAccessibleHypertext::get_nHyperlinks"); AccessibleTextEvent event = new AccessibleTextEvent(this); for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = accessibleTextExtendedListeners.get(i); listener.getHyperlinkCount(event); } COM.MoveMemory(pHyperlinkCount, new int [] { event.count }, 4); return COM.S_OK; }
int get_hyperlinkIndex(int charIndex, int /*long*/ pHyperlinkIndex) { if (DEBUG) print(this + ".IAccessibleHypertext::get_hyperlinkIndex"); AccessibleTextEvent event = new AccessibleTextEvent(this); event.offset = charIndex; event.index = -1; for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = accessibleTextExtendedListeners.get(i); listener.getHyperlinkIndex(event); } COM.MoveMemory(pHyperlinkIndex, new int [] { event.index }, 4); if (event.index == -1) return COM.S_FALSE; return COM.S_OK; }
int get_offsetAtPoint(int x, int y, int coordType, int /*long*/ pOffset) { AccessibleTextEvent event = new AccessibleTextEvent(this); event.x = x; event.y = y; event.offset = -1; for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = accessibleTextExtendedListeners.get(i); listener.getOffsetAtPoint(event); } if (DEBUG) print(this + ".IAccessibleText::get_offsetAtPoint(" + x + ", " + y + ") returning " + event.offset + hresult(event.offset == -1 ? COM.S_FALSE : COM.S_OK)); /* * Note that the current IA2 spec says to return 0 when there's nothing to return, * but since 0 is a valid return value, the spec is going to be updated to return -1. */ COM.MoveMemory(pOffset, new int [] { event.offset }, 4); if (event.offset == -1) return COM.S_FALSE; return COM.S_OK; }
int getCaretOffset() { AccessibleTextEvent event = new AccessibleTextEvent(this); event.offset = -1; for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextListener listener = accessibleTextExtendedListeners.get(i); listener.getCaretOffset (event); } if (event.offset == -1) { for (int i = 0; i < accessibleTextListenersSize(); i++) { event.childID = ACC.CHILDID_SELF; AccessibleTextListener listener = accessibleTextListeners.get(i); listener.getCaretOffset (event); } } return event.offset; }
void setVisibleCharacterRangeAttribute(id value, int childId) { NSRange newRange = new NSValue(value.id).rangeValue(); if (accessibleTextExtendedListenersSize() > 0) { AccessibleTextEvent event = new AccessibleTextEvent(this); event.type = ACC.SCROLL_TYPE_TOP_LEFT; event.start = (int)newRange.location; event.end = (int)(newRange.location + newRange.length); for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i); listener.scrollText(event); } } }
int get_nSelections(int /*long*/ pNSelections) { AccessibleTextEvent event = new AccessibleTextEvent(this); event.count = -1; for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = accessibleTextExtendedListeners.get(i); listener.getSelectionCount(event); } if (event.count == -1) { event.childID = ACC.CHILDID_SELF; event.offset = -1; event.length = 0; for (int i = 0; i < accessibleTextListenersSize(); i++) { AccessibleTextListener listener = accessibleTextListeners.get(i); listener.getSelectionRange (event); } event.count = event.offset != -1 && event.length > 0 ? 1 : 0; } if (DEBUG) print(this + ".IAccessibleText::get_nSelections returning " + event.count); COM.MoveMemory(pNSelections, new int [] { event.count }, 4); return COM.S_OK; }
int getCharacterCount() { AccessibleTextEvent event = new AccessibleTextEvent(this); event.count = -1; for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = accessibleTextExtendedListeners.get(i); listener.getCharacterCount(event); } if (event.count == -1) { AccessibleControlEvent e = new AccessibleControlEvent(this); e.childID = ACC.CHILDID_SELF; for (int i = 0; i < accessibleControlListenersSize(); i++) { AccessibleControlListener listener = accessibleControlListeners.get(i); listener.getRole(e); listener.getValue(e); } // TODO: Consider passing the value through for other roles as well (i.e. combo, etc). Keep in sync with get_text. event.count = e.detail == ACC.ROLE_TEXT && e.result != null ? e.result.length() : 0; } return event.count; }
void setSelectedTextRangeAttribute(id value, int childId) { NSRange newRange = new NSValue(value.id).rangeValue(); if (accessibleTextExtendedListenersSize() > 0) { AccessibleTextEvent event = new AccessibleTextEvent(this); event.index = 0; event.start = (int)newRange.location; event.end = (int)(newRange.location + newRange.length); for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i); listener.removeSelection(event); listener.addSelection(event); } } }
id getNumberOfCharactersAttribute (int childID) { id returnValue = null; AccessibleTextEvent event = new AccessibleTextEvent(this); event.count = -1; for (int i = 0; i < accessibleTextExtendedListenersSize(); i++) { AccessibleTextExtendedListener listener = (AccessibleTextExtendedListener) accessibleTextExtendedListeners.elementAt(i); listener.getCharacterCount(event); } if (event.count != -1) { AccessibleControlEvent e = new AccessibleControlEvent(this); e.childID = ACC.CHILDID_SELF; for (int i = 0; i < accessibleControlListenersSize(); i++) { AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); listener.getRole(e); listener.getValue(e); } // TODO: Consider passing the value through for other roles as well (i.e. combo, etc). Keep in sync with get_text. event.count = e.detail == ACC.ROLE_TEXT && e.result != null ? e.result.length() : 0; returnValue = NSNumber.numberWithInt(event.count); } return returnValue; }
static int /*long*/ atkText_set_caret_offset (int /*long*/ atkObject, int /*long*/ offset) { if (DEBUG) print ("-->atkText_set_caret_offset"); AccessibleObject object = getAccessibleObject (atkObject); if (object != null) { Accessible accessible = object.accessible; List<AccessibleTextExtendedListener> listeners = accessible.accessibleTextExtendedListeners; int length = size(listeners); if (length > 0) { AccessibleTextEvent event = new AccessibleTextEvent(accessible); event.offset = (int)/*64*/offset; for (int i = 0; i < length; i++) { AccessibleTextExtendedListener listener = listeners.get(i); listener.setCaretOffset(event); } return ACC.OK.equals(event.result) ? 1 : 0; } } AtkTextIface iface = getTextIface (atkObject); if (iface != null && iface.set_caret_offset != 0) { return ATK.call (iface.set_caret_offset, atkObject, offset); } return 0; }
static int /*long*/ atkText_set_caret_offset (int /*long*/ atkObject, int /*long*/ offset) { if (DEBUG) print ("-->atkText_set_caret_offset"); AccessibleObject object = getAccessibleObject (atkObject); if (object != null) { Accessible accessible = object.accessible; List<AccessibleTextExtendedListener> listeners = accessible.accessibleTextExtendedListeners; int length = size(listeners); if (length > 0) { AccessibleTextEvent event = new AccessibleTextEvent(accessible); event.offset = (int)/*64*/offset; for (int i = 0; i < length; i++) { AccessibleTextExtendedListener listener = listeners.get(i); listener.setCaretOffset(event); } return ACC.OK.equals(event.result) ? 1 : 0; } } AtkTextIface iface = getTextIface (atkObject); if (iface != null && iface.set_caret_offset != 0) { return ATK.call (iface.set_caret_offset, atkObject, offset); } return 0; }
static long /*int*/ atkText_set_caret_offset (long /*int*/ atkObject, long /*int*/ offset) { if (DEBUG) print ("-->atkText_set_caret_offset"); AccessibleObject object = getAccessibleObject (atkObject); if (object != null) { Accessible accessible = object.accessible; List<AccessibleTextExtendedListener> listeners = accessible.accessibleTextExtendedListeners; int length = size(listeners); if (length > 0) { AccessibleTextEvent event = new AccessibleTextEvent(accessible); event.offset = (int)/*64*/offset; for (int i = 0; i < length; i++) { AccessibleTextExtendedListener listener = listeners.get(i); listener.setCaretOffset(event); } return ACC.OK.equals(event.result) ? 1 : 0; } } AtkTextIface iface = getTextIface (atkObject); if (iface != null && iface.set_caret_offset != 0) { return ATK.call (iface.set_caret_offset, atkObject, offset); } return 0; }
static int /*long*/ atkText_add_selection (int /*long*/ atkObject, int /*long*/ start_offset, int /*long*/ end_offset) { if (DEBUG) print ("-->atkText_add_selection"); AccessibleObject object = getAccessibleObject (atkObject); if (object != null) { Accessible accessible = object.accessible; List<AccessibleTextExtendedListener> listeners = accessible.accessibleTextExtendedListeners; int length = size(listeners); if (length > 0) { AccessibleTextEvent event = new AccessibleTextEvent(accessible); event.start = (int)/*64*/start_offset; event.end = (int)/*64*/end_offset; for (int i = 0; i < length; i++) { AccessibleTextExtendedListener listener = listeners.get(i); listener.addSelection(event); } return ACC.OK.equals(event.result) ? 1 : 0; } } int /*long*/ parentResult = 0; AtkTextIface iface = getTextIface (atkObject); if (iface != null && iface.add_selection != 0) { parentResult = ATK.call (iface.add_selection, atkObject, start_offset, end_offset); } return parentResult; }
static long /*int*/ atkText_add_selection (long /*int*/ atkObject, long /*int*/ start_offset, long /*int*/ end_offset) { if (DEBUG) print ("-->atkText_add_selection"); AccessibleObject object = getAccessibleObject (atkObject); if (object != null) { Accessible accessible = object.accessible; List<AccessibleTextExtendedListener> listeners = accessible.accessibleTextExtendedListeners; int length = size(listeners); if (length > 0) { AccessibleTextEvent event = new AccessibleTextEvent(accessible); event.start = (int)/*64*/start_offset; event.end = (int)/*64*/end_offset; for (int i = 0; i < length; i++) { AccessibleTextExtendedListener listener = listeners.get(i); listener.addSelection(event); } return ACC.OK.equals(event.result) ? 1 : 0; } } long /*int*/ parentResult = 0; AtkTextIface iface = getTextIface (atkObject); if (iface != null && iface.add_selection != 0) { parentResult = ATK.call (iface.add_selection, atkObject, start_offset, end_offset); } return parentResult; }