?? accessible.java
字號(hào):
COM.MoveMemory(pvarState + 8, new int[] { state }, 4); return COM.S_OK; } int get_accValue(int varChild_vt, int varChild_reserved1, int varChild_lVal, int varChild_reserved2, int pszValue) { if (iaccessible == null) return COM.CO_E_OBJNOTCONNECTED; if ((varChild_vt & 0xFFFF) != COM.VT_I4) return COM.E_INVALIDARG; /* Get the default value string from the OS. */ String osValue = null; int code = iaccessible.get_accValue(varChild_vt, varChild_reserved1, varChild_lVal, varChild_reserved2, pszValue); if (code == COM.E_INVALIDARG) code = COM.S_FALSE; // proxy doesn't know about app childID if (accessibleControlListeners.size() == 0) return code; if (code == COM.S_OK) { int[] pValue = new int[1]; COM.MoveMemory(pValue, pszValue, 4); int size = COM.SysStringByteLen(pValue[0]); if (size > 0) { char[] buffer = new char[(size + 1) /2]; COM.MoveMemory(buffer, pValue[0], size); osValue = new String(buffer); } } AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = osToChildID(varChild_lVal); event.result = osValue; for (int i = 0; i < accessibleControlListeners.size(); i++) { AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); listener.getValue(event); } if (event.result == null) return code; char[] data = (event.result + "\0").toCharArray(); int ptr = COM.SysAllocString(data); COM.MoveMemory(pszValue, new int[] { ptr }, 4); return COM.S_OK; } int put_accName(int varChild_vt, int varChild_reserved1, int varChild_lVal, int varChild_reserved2, int szName) { // MSAA: this method is no longer supported if (iaccessible == null) return COM.CO_E_OBJNOTCONNECTED; // We don't implement this. Forward to the proxy. int code = iaccessible.put_accName(varChild_vt, varChild_reserved1, varChild_lVal, varChild_reserved2, szName); if (code == COM.E_INVALIDARG) code = COM.S_FALSE; // proxy doesn't know about app childID return code; } int put_accValue(int varChild_vt, int varChild_reserved1, int varChild_lVal, int varChild_reserved2, int szValue) { // MSAA: this method is typically only used for edit controls if (iaccessible == null) return COM.CO_E_OBJNOTCONNECTED; // We don't implement this. Forward to the proxy. int code = iaccessible.put_accValue(varChild_vt, varChild_reserved1, varChild_lVal, varChild_reserved2, szValue); if (code == COM.E_INVALIDARG) code = COM.S_FALSE; // proxy doesn't know about app childID return code; } /* IEnumVARIANT methods: Next, Skip, Reset */ /* Retrieve the next celt items in the enumeration sequence. * If there are fewer than the requested number of elements left * in the sequence, retrieve the remaining elements. * The number of elements actually retrieved is returned in pceltFetched * (unless the caller passed in NULL for that parameter). */ int Next(int celt, int rgvar, int pceltFetched) { /* If there are no listeners, query the proxy for * its IEnumVariant, and get the Next items from it. */ if (accessibleControlListeners.size() == 0) { int[] ppvObject = new int[1]; int code = iaccessible.QueryInterface(COM.IIDIEnumVARIANT, ppvObject); if (code != COM.S_OK) return code; IEnumVARIANT ienumvariant = new IEnumVARIANT(ppvObject[0]); int[] celtFetched = new int[1]; code = ienumvariant.Next(celt, rgvar, celtFetched); COM.MoveMemory(pceltFetched, celtFetched, 4); return code; } if (rgvar == 0) return COM.E_INVALIDARG; if (pceltFetched == 0 && celt != 1) return COM.E_INVALIDARG; if (enumIndex == 0) { AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = ACC.CHILDID_SELF; for (int i = 0; i < accessibleControlListeners.size(); i++) { AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); listener.getChildren(event); } variants = event.children; } Object[] nextItems = null; if (variants != null && celt >= 1) { int endIndex = enumIndex + celt - 1; if (endIndex > (variants.length - 1)) endIndex = variants.length - 1; if (enumIndex <= endIndex) { nextItems = new Object[endIndex - enumIndex + 1]; for (int i = 0; i < nextItems.length; i++) { Object child = variants[enumIndex]; if (child instanceof Integer) { nextItems[i] = new Integer(childIDToOs(((Integer)child).intValue())); } else { nextItems[i] = child; } enumIndex++; } } } if (nextItems != null) { for (int i = 0; i < nextItems.length; i++) { Object nextItem = nextItems[i]; if (nextItem instanceof Integer) { int item = ((Integer) nextItem).intValue(); COM.MoveMemory(rgvar + i * 16, new short[] { COM.VT_I4 }, 2); COM.MoveMemory(rgvar + i * 16 + 8, new int[] { item }, 4); } else { int address = ((Accessible) nextItem).objIAccessible.getAddress(); COM.MoveMemory(rgvar + i * 16, new short[] { COM.VT_DISPATCH }, 2); COM.MoveMemory(rgvar + i * 16 + 8, new int[] { address }, 4); } } if (pceltFetched != 0) COM.MoveMemory(pceltFetched, new int[] {nextItems.length}, 4); if (nextItems.length == celt) return COM.S_OK; } else { if (pceltFetched != 0) COM.MoveMemory(pceltFetched, new int[] {0}, 4); } return COM.S_FALSE; } /* Skip over the specified number of elements in the enumeration sequence. */ int Skip(int celt) { /* If there are no listeners, query the proxy * for its IEnumVariant, and tell it to Skip. */ if (accessibleControlListeners.size() == 0) { int[] ppvObject = new int[1]; int code = iaccessible.QueryInterface(COM.IIDIEnumVARIANT, ppvObject); if (code != COM.S_OK) return code; IEnumVARIANT ienumvariant = new IEnumVARIANT(ppvObject[0]); code = ienumvariant.Skip(celt); return code; } if (celt < 1 ) return COM.E_INVALIDARG; enumIndex += celt; if (enumIndex > (variants.length - 1)) { enumIndex = variants.length - 1; return COM.S_FALSE; } return COM.S_OK; } /* Reset the enumeration sequence to the beginning. */ int Reset() { /* If there are no listeners, query the proxy * for its IEnumVariant, and tell it to Reset. */ if (accessibleControlListeners.size() == 0) { int[] ppvObject = new int[1]; int code = iaccessible.QueryInterface(COM.IIDIEnumVARIANT, ppvObject); if (code != COM.S_OK) return code; IEnumVARIANT ienumvariant = new IEnumVARIANT(ppvObject[0]); code = ienumvariant.Reset(); return code; } enumIndex = 0; return COM.S_OK; } int childIDToOs(int childID) { if (childID == ACC.CHILDID_SELF) return COM.CHILDID_SELF; /* * Feature of Windows: * In Windows XP, tree item ids are 1-based indices. Previous versions * of Windows use the tree item handle for the accessible child ID. * For backward compatibility, we still take a handle childID for tree * items on XP. All other childIDs are 1-based indices. */ if (!(control instanceof Tree)) return childID + 1; if (OS.COMCTL32_MAJOR < 6) return childID; return OS.SendMessage (control.handle, OS.TVM_MAPHTREEITEMTOACCID, childID, 0); } int osToChildID(int osChildID) { if (osChildID == COM.CHILDID_SELF) return ACC.CHILDID_SELF; /* * Feature of Windows: * In Windows XP, tree item ids are 1-based indices. Previous versions * of Windows use the tree item handle for the accessible child ID. * For backward compatibility, we still take a handle childID for tree * items on XP. All other childIDs are 1-based indices. */ if (!(control instanceof Tree)) return osChildID - 1; if (OS.COMCTL32_MAJOR < 6) return osChildID; return OS.SendMessage (control.handle, OS.TVM_MAPACCIDTOHTREEITEM, osChildID, 0); } int stateToOs(int state) { int osState = 0; if ((state & ACC.STATE_SELECTED) != 0) osState |= COM.STATE_SYSTEM_SELECTED; if ((state & ACC.STATE_SELECTABLE) != 0) osState |= COM.STATE_SYSTEM_SELECTABLE; if ((state & ACC.STATE_MULTISELECTABLE) != 0) osState |= COM.STATE_SYSTEM_MULTISELECTABLE; if ((state & ACC.STATE_FOCUSED) != 0) osState |= COM.STATE_SYSTEM_FOCUSED; if ((state & ACC.STATE_FOCUSABLE) != 0) osState |= COM.STATE_SYSTEM_FOCUSABLE; if ((state & ACC.STATE_PRESSED) != 0) osState |= COM.STATE_SYSTEM_PRESSED; if ((state & ACC.STATE_CHECKED) != 0) osState |= COM.STATE_SYSTEM_CHECKED; if ((state & ACC.STATE_EXPANDED) != 0) osState |= COM.STATE_SYSTEM_EXPANDED; if ((state & ACC.STATE_COLLAPSED) != 0) osState |= COM.STATE_SYSTEM_COLLAPSED; if ((state & ACC.STATE_HOTTRACKED) != 0) osState |= COM.STATE_SYSTEM_HOTTRACKED; if ((state & ACC.STATE_BUSY) != 0) osState |= COM.STATE_SYSTEM_BUSY; if ((state & ACC.STATE_READONLY) != 0) osState |= COM.STATE_SYSTEM_READONLY; if ((state & ACC.STATE_INVISIBLE) != 0) osState |= COM.STATE_SYSTEM_INVISIBLE; if ((state & ACC.STATE_OFFSCREEN) != 0) osState |= COM.STATE_SYSTEM_OFFSCREEN; if ((state & ACC.STATE_SIZEABLE) != 0) osState |= COM.STATE_SYSTEM_SIZEABLE; if ((state & ACC.STATE_LINKED) != 0) osState |= COM.STATE_SYSTEM_LINKED; return osState; } int osToState(int osState) { int state = ACC.STATE_NORMAL; if ((osState & COM.STATE_SYSTEM_SELECTED) != 0) state |= ACC.STATE_SELECTED; if ((osState & COM.STATE_SYSTEM_SELECTABLE) != 0) state |= ACC.STATE_SELECTABLE; if ((osState & COM.STATE_SYSTEM_MULTISELECTABLE) != 0) state |= ACC.STATE_MULTISELECTABLE; if ((osState & COM.STATE_SYSTEM_FOCUSED) != 0) state |= ACC.STATE_FOCUSED; if ((osState & COM.STATE_SYSTEM_FOCUSABLE) != 0) state |= ACC.STATE_FOCUSABLE; if ((osState & COM.STATE_SYSTEM_PRESSED) != 0) state |= ACC.STATE_PRESSED; if ((osState & COM.STATE_SYSTEM_CHECKED) != 0) state |= ACC.STATE_CHECKED; if ((osState & COM.STATE_SYSTEM_EXPANDED) != 0) state |= ACC.STATE_EXPANDED; if ((osState & COM.STATE_SYSTEM_COLLAPSED) != 0) state |= ACC.STATE_COLLAPSED; if ((osState & COM.STATE_SYSTEM_HOTTRACKED) != 0) state |= ACC.STATE_HOTTRACKED; if ((osState & COM.STATE_SYSTEM_BUSY) != 0) state |= ACC.STATE_BUSY; if ((osState & COM.STATE_SYSTEM_READONLY) != 0) state |= ACC.STATE_READONLY; if ((osState & COM.STATE_SYSTEM_INVISIBLE) != 0) state |= ACC.STATE_INVISIBLE; if ((osState & COM.STATE_SYSTEM_OFFSCREEN) != 0) state |= ACC.STATE_OFFSCREEN; if ((osState & COM.STATE_SYSTEM_SIZEABLE) != 0) state |= ACC.STATE_SIZEABLE; if ((osState & COM.STATE_SYSTEM_LINKED) != 0) state |= ACC.STATE_LINKED; return state; } int roleToOs(int role) { switch (role) { case ACC.ROLE_CLIENT_AREA: return COM.ROLE_SYSTEM_CLIENT; case ACC.ROLE_WINDOW: return COM.ROLE_SYSTEM_WINDOW; case ACC.ROLE_MENUBAR: return COM.ROLE_SYSTEM_MENUBAR; case ACC.ROLE_MENU: return COM.ROLE_SYSTEM_MENUPOPUP; case ACC.ROLE_MENUITEM: return COM.ROLE_SYSTEM_MENUITEM; case ACC.ROLE_SEPARATOR: return COM.ROLE_SYSTEM_SEPARATOR; case ACC.ROLE_TOOLTIP: return COM.ROLE_SYSTEM_TOOLTIP; case ACC.ROLE_SCROLLBAR: return COM.ROLE_SYSTEM_SCROLLBAR; case ACC.ROLE_DIALOG: return COM.ROLE_SYSTEM_DIALOG; case ACC.ROLE_LABEL: return COM.ROLE_SYSTEM_STATICTEXT; case ACC.ROLE_PUSHBUTTON: return COM.ROLE_SYSTEM_PUSHBUTTON; case ACC.ROLE_CHECKBUTTON: return COM.ROLE_SYSTEM_CHECKBUTTON; case ACC.ROLE_RADIOBUTTON: return COM.ROLE_SYSTEM_RADIOBUTTON; case ACC.ROLE_COMBOBOX: return COM.ROLE_SYSTEM_COMBOBOX; case ACC.ROLE_TEXT: return COM.ROLE_SYSTEM_TEXT; case ACC.ROLE_TOOLBAR: return COM.ROLE_SYSTEM_TOOLBAR; case ACC.ROLE_LIST: return COM.ROLE_SYSTEM_LIST; case ACC.ROLE_LISTITEM: return COM.ROLE_SYSTEM_LISTITEM; case ACC.ROLE_TABLE: return COM.ROLE_SYSTEM_TABLE; case ACC.ROLE_TABLECELL: return COM.ROLE_SYSTEM_CELL; case ACC.ROLE_TABLECOLUMNHEADER: return COM.ROLE_SYSTEM_COLUMNHEADER; case ACC.ROLE_TABLEROWHEADER: return COM.ROLE_SYSTEM_ROWHEADER; case ACC.ROLE_TREE: return COM.ROLE_SYSTEM_OUTLINE; case ACC.ROLE_TREEITEM: return COM.ROLE_SYSTEM_OUTLINEITEM; case ACC.ROLE_TABFOLDER: return COM.ROLE_SYSTEM_PAGETABLIST; case ACC.ROLE_TABITEM: return COM.ROLE_SYSTEM_PAGETAB; case ACC.ROLE_PROGRESSBAR: return COM.ROLE_SYSTEM_PROGRESSBAR; case ACC.ROLE_SLIDER: return COM.ROLE_SYSTEM_SLIDER; case ACC.ROLE_LINK: return COM.ROLE_SYSTEM_LINK; } return COM.ROLE_SYSTEM_CLIENT; } int osToRole(int osRole) { int role = COM.ROLE_SYSTEM_CLIENT; switch (osRole) { case COM.ROLE_SYSTEM_CLIENT: return ACC.ROLE_CLIENT_AREA; case COM.ROLE_SYSTEM_WINDOW: return ACC.ROLE_WINDOW; case COM.ROLE_SYSTEM_MENUBAR: return ACC.ROLE_MENUBAR; case COM.ROLE_SYSTEM_MENUPOPUP: return ACC.ROLE_MENU; case COM.ROLE_SYSTEM_MENUITEM: return ACC.ROLE_MENUITEM; case COM.ROLE_SYSTEM_SEPARATOR: return ACC.ROLE_SEPARATOR; case COM.ROLE_SYSTEM_TOOLTIP: return ACC.ROLE_TOOLTIP; case COM.ROLE_SYSTEM_SCROLLBAR: return ACC.ROLE_SCROLLBAR; case COM.ROLE_SYSTEM_DIALOG: return ACC.ROLE_DIALOG; case COM.ROLE_SYSTEM_STATICTEXT: return ACC.ROLE_LABEL; case COM.ROLE_SYSTEM_PUSHBUTTON: return ACC.ROLE_PUSHBUTTON; case COM.ROLE_SYSTEM_CHECKBUTTON: return ACC.ROLE_CHECKBUTTON; case COM.ROLE_SYSTEM_RADIOBUTTON: return ACC.ROLE_RADIOBUTTON; case COM.ROLE_SYSTEM_COMBOBOX: return ACC.ROLE_COMBOBOX; case COM.ROLE_SYSTEM_TEXT: return ACC.ROLE_TEXT; case COM.ROLE_SYSTEM_TOOLBAR: return ACC.ROLE_TOOLBAR; case COM.ROLE_SYSTEM_LIST: return ACC.ROLE_LIST; case COM.ROLE_SYSTEM_LISTITEM: return ACC.ROLE_LISTITEM; case COM.ROLE_SYSTEM_TABLE: return ACC.ROLE_TABLE; case COM.ROLE_SYSTEM_CELL: return ACC.ROLE_TABLECELL; case COM.ROLE_SYSTEM_COLUMNHEADER: return ACC.ROLE_TABLECOLUMNHEADER; case COM.ROLE_SYSTEM_ROWHEADER: return ACC.ROLE_TABLEROWHEADER; case COM.ROLE_SYSTEM_OUTLINE: return ACC.ROLE_TREE; case COM.ROLE_SYSTEM_OUTLINEITEM: return ACC.ROLE_TREEITEM; case COM.ROLE_SYSTEM_PAGETABLIST: return ACC.ROLE_TABFOLDER; case COM.ROLE_SYSTEM_PAGETAB: return ACC.ROLE_TABITEM; case COM.ROLE_SYSTEM_PROGRESSBAR: return ACC.ROLE_PROGRESSBAR; case COM.ROLE_SYSTEM_SLIDER: return ACC.ROLE_SLIDER; case COM.ROLE_SYSTEM_LINK: return ACC.ROLE_LINK; } return role; } /* 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); } /* isValidThread was copied from Widget, and rewritten to work in this package */ boolean isValidThread () { return control.getDisplay ().getThread () == Thread.currentThread (); }}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -