⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accessible.java

📁 源码为Eclipse开源开发平台桌面开发工具SWT的源代码,
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
		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 ();	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -