1709 void
1710 JavaAccessBridge::firePropertyCaretChange(JNIEnv *env, jobject callingObj,
1711 jobject event, jobject source,
1712 jint oldValue, jint newValue) {
1713
1714 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyCaretChanged(%p, %p, %p, %p, %d, %d)",
1715 env, callingObj, event,
1716 source, oldValue, newValue);
1717
1718 // sanity check
1719 if (ATs == (AccessBridgeATInstance *) 0) {
1720 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
1721 return; // panic!
1722 }
1723
1724 // common setup
1725 char buffer[sizeof(PackageType) + sizeof(PropertyCaretChangePackage)];
1726 PackageType *type = (PackageType *) buffer;
1727 PropertyCaretChangePackage *pkg = (PropertyCaretChangePackage *) (buffer + sizeof(PackageType));
1728 *type = cPropertyCaretChangePackage;
1729 pkg->vmID = (long) dialogWindow;
1730
1731 // make new Global Refs and send events only to those ATs that want 'em
1732 AccessBridgeATInstance *ati = ATs;
1733 while (ati != (AccessBridgeATInstance *) 0) {
1734 if (ati->accessibilityEventMask & cPropertyCaretChangeEvent) {
1735
1736 PrintDebugString(" sending to AT");
1737
1738 // make new GlobalRefs for this AT
1739 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
1740 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
1741 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
1742 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
1743 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
1744 #else // JOBJECT64 is jlong (64 bit)
1745 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
1746 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
1747 #endif
1748
1749 pkg->oldPosition = oldValue;
1764 JavaAccessBridge::firePropertyDescriptionChange(JNIEnv *env, jobject callingObj,
1765 jobject event, jobject source,
1766 jstring oldValue, jstring newValue){
1767
1768 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyDescriptionChanged(%p, %p, %p, %p, %p, %p)",
1769 env, callingObj, event,
1770 source, oldValue, newValue);
1771
1772 // sanity check
1773 if (ATs == (AccessBridgeATInstance *) 0) {
1774 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
1775 return; // panic!
1776 }
1777
1778 // common setup
1779 const wchar_t *stringBytes;
1780 char buffer[sizeof(PackageType) + sizeof(PropertyDescriptionChangePackage)];
1781 PackageType *type = (PackageType *) buffer;
1782 PropertyDescriptionChangePackage *pkg = (PropertyDescriptionChangePackage *) (buffer + sizeof(PackageType));
1783 *type = cPropertyDescriptionChangePackage;
1784 pkg->vmID = (long) dialogWindow;
1785
1786 // make new Global Refs and send events only to those ATs that want 'em
1787 AccessBridgeATInstance *ati = ATs;
1788 while (ati != (AccessBridgeATInstance *) 0) {
1789 if (ati->accessibilityEventMask & cPropertyCaretChangeEvent) {
1790
1791 PrintDebugString(" sending to AT");
1792
1793 // make new GlobalRefs for this AT
1794 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
1795 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
1796 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
1797 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
1798 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
1799 #else // JOBJECT64 is jlong (64 bit)
1800 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
1801 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
1802 #endif
1803
1804 if (oldValue != (jstring) 0) {
1850 JavaAccessBridge::firePropertyNameChange(JNIEnv *env, jobject callingObj,
1851 jobject event, jobject source,
1852 jstring oldValue, jstring newValue){
1853
1854 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyNameChanged(%p, %p, %p, %p, %p, %p)",
1855 env, callingObj, event,
1856 source, oldValue, newValue);
1857
1858 // sanity check
1859 if (ATs == (AccessBridgeATInstance *) 0) {
1860 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
1861 return; // panic!
1862 }
1863
1864 // common setup
1865 const wchar_t *stringBytes;
1866 char buffer[sizeof(PackageType) + sizeof(PropertyNameChangePackage)];
1867 PackageType *type = (PackageType *) buffer;
1868 PropertyNameChangePackage *pkg = (PropertyNameChangePackage *) (buffer + sizeof(PackageType));
1869 *type = cPropertyNameChangePackage;
1870 pkg->vmID = (long) dialogWindow;
1871
1872 // make new Global Refs and send events only to those ATs that want 'em
1873 AccessBridgeATInstance *ati = ATs;
1874 while (ati != (AccessBridgeATInstance *) 0) {
1875 if (ati->accessibilityEventMask & cPropertyNameChangeEvent) {
1876
1877 PrintDebugString(" sending to AT");
1878
1879 // make new GlobalRefs for this AT
1880 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
1881 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
1882 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
1883 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
1884 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
1885 #else // JOBJECT64 is jlong (64 bit)
1886 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
1887 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
1888 #endif
1889
1890 if (oldValue != (jstring) 0) {
1934 *
1935 */
1936 void
1937 JavaAccessBridge::firePropertySelectionChange(JNIEnv *env, jobject callingObj,
1938 jobject event, jobject source) {
1939
1940 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertySelectionChanged(%p, %p, %p, %p)",
1941 env, callingObj, event, source);
1942
1943 // sanity check
1944 if (ATs == (AccessBridgeATInstance *) 0) {
1945 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
1946 return; // panic!
1947 }
1948
1949 // common setup
1950 char buffer[sizeof(PackageType) + sizeof(PropertySelectionChangePackage)];
1951 PackageType *type = (PackageType *) buffer;
1952 PropertySelectionChangePackage *pkg = (PropertySelectionChangePackage *) (buffer + sizeof(PackageType));
1953 *type = cPropertySelectionChangePackage;
1954 pkg->vmID = (long) dialogWindow;
1955
1956 // make new Global Refs and send events only to those ATs that want 'em
1957 AccessBridgeATInstance *ati = ATs;
1958 while (ati != (AccessBridgeATInstance *) 0) {
1959 if (ati->accessibilityEventMask & cPropertySelectionChangeEvent) {
1960
1961 PrintDebugString(" sending to AT");
1962
1963 // make new GlobalRefs for this AT
1964 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
1965 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
1966 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
1967 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
1968 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
1969 #else // JOBJECT64 is jlong (64 bit)
1970 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
1971 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
1972 #endif
1973
1974 ati->sendAccessibilityEventPackage(buffer, sizeof(buffer), cPropertySelectionChangeEvent);
1987 JavaAccessBridge::firePropertyStateChange(JNIEnv *env, jobject callingObj,
1988 jobject event, jobject source,
1989 jstring oldValue, jstring newValue){
1990
1991 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyStateChanged(%p, %p, %p, %p, %p, %p)",
1992 env, callingObj, event,
1993 source, oldValue, newValue);
1994
1995 // sanity check
1996 if (ATs == (AccessBridgeATInstance *) 0) {
1997 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
1998 return; // panic!
1999 }
2000
2001 // common setup
2002 const wchar_t *stringBytes;
2003 char buffer[sizeof(PackageType) + sizeof(PropertyStateChangePackage)];
2004 PackageType *type = (PackageType *) buffer;
2005 PropertyStateChangePackage *pkg = (PropertyStateChangePackage *) (buffer + sizeof(PackageType));
2006 *type = cPropertyStateChangePackage;
2007 pkg->vmID = (long) dialogWindow;
2008
2009 // make new Global Refs and send events only to those ATs that want 'em
2010 AccessBridgeATInstance *ati = ATs;
2011 while (ati != (AccessBridgeATInstance *) 0) {
2012 if (ati->accessibilityEventMask & cPropertyStateChangeEvent) {
2013
2014 PrintDebugString(" sending to AT");
2015
2016 // make new GlobalRefs for this AT
2017 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2018 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2019 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2020 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2021 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2022 #else // JOBJECT64 is jlong (64 bit)
2023 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2024 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
2025 #endif
2026
2027 if (oldValue != (jstring) 0) {
2071 *
2072 */
2073 void
2074 JavaAccessBridge::firePropertyTextChange(JNIEnv *env, jobject callingObj,
2075 jobject event, jobject source) {
2076
2077 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyTextChanged(%p, %p, %p, %p)",
2078 env, callingObj, event, source);
2079
2080 // sanity check
2081 if (ATs == (AccessBridgeATInstance *) 0) {
2082 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2083 return; // panic!
2084 }
2085
2086 // common setup
2087 char buffer[sizeof(PackageType) + sizeof(PropertyTextChangePackage)];
2088 PackageType *type = (PackageType *) buffer;
2089 PropertyTextChangePackage *pkg = (PropertyTextChangePackage *) (buffer + sizeof(PackageType));
2090 *type = cPropertyTextChangePackage;
2091 pkg->vmID = (long) dialogWindow;
2092
2093 // make new Global Refs and send events only to those ATs that want 'em
2094 AccessBridgeATInstance *ati = ATs;
2095 while (ati != (AccessBridgeATInstance *) 0) {
2096 if (ati->accessibilityEventMask & cPropertyTextChangeEvent) {
2097
2098 PrintDebugString(" sending to AT");
2099
2100 // make new GlobalRefs for this AT
2101 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2102 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2103 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2104 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2105 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2106 #else // JOBJECT64 is jlong (64 bit)
2107 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2108 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
2109 #endif
2110
2111 ati->sendAccessibilityEventPackage(buffer, sizeof(buffer), cPropertyTextChangeEvent);
2124 JavaAccessBridge::firePropertyValueChange(JNIEnv *env, jobject callingObj,
2125 jobject event, jobject source,
2126 jstring oldValue, jstring newValue){
2127
2128 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyValueChanged(%p, %p, %p, %p, %p, %p)",
2129 env, callingObj, event,
2130 source, oldValue, newValue);
2131
2132 // sanity check
2133 if (ATs == (AccessBridgeATInstance *) 0) {
2134 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2135 return; // panic!
2136 }
2137
2138 // common setup
2139 const wchar_t *stringBytes;
2140 char buffer[sizeof(PackageType) + sizeof(PropertyValueChangePackage)];
2141 PackageType *type = (PackageType *) buffer;
2142 PropertyValueChangePackage *pkg = (PropertyValueChangePackage *) (buffer + sizeof(PackageType));
2143 *type = cPropertyValueChangePackage;
2144 pkg->vmID = (long) dialogWindow;
2145
2146 // make new Global Refs and send events only to those ATs that want 'em
2147 AccessBridgeATInstance *ati = ATs;
2148 while (ati != (AccessBridgeATInstance *) 0) {
2149 if (ati->accessibilityEventMask & cPropertyValueChangeEvent) {
2150
2151 PrintDebugString(" sending to AT");
2152
2153 // make new GlobalRefs for this AT
2154 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2155 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2156 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2157 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2158 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2159 #else // JOBJECT64 is jlong (64 bit)
2160 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2161 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
2162 #endif
2163
2164 if (oldValue != (jstring) 0) {
2207 *
2208 */
2209 void
2210 JavaAccessBridge::firePropertyVisibleDataChange(JNIEnv *env, jobject callingObj,
2211 jobject event, jobject source) {
2212
2213 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyVisibleDataChanged(%p, %p, %p, %p)",
2214 env, callingObj, event, source);
2215
2216 // sanity check
2217 if (ATs == (AccessBridgeATInstance *) 0) {
2218 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2219 return; // panic!
2220 }
2221
2222 // common setup
2223 char buffer[sizeof(PackageType) + sizeof(PropertyVisibleDataChangePackage)];
2224 PackageType *type = (PackageType *) buffer;
2225 PropertyVisibleDataChangePackage *pkg = (PropertyVisibleDataChangePackage *) (buffer + sizeof(PackageType));
2226 *type = cPropertyVisibleDataChangePackage;
2227 pkg->vmID = (long) dialogWindow;
2228
2229 // make new Global Refs and send events only to those ATs that want 'em
2230 AccessBridgeATInstance *ati = ATs;
2231 while (ati != (AccessBridgeATInstance *) 0) {
2232 if (ati->accessibilityEventMask & cPropertyVisibleDataChangeEvent) {
2233
2234 PrintDebugString(" sending to AT");
2235
2236 // make new GlobalRefs for this AT
2237 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2238 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2239 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2240 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2241 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2242 #else // JOBJECT64 is jlong (64 bit)
2243 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2244 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
2245 #endif
2246
2247 ati->sendAccessibilityEventPackage(buffer, sizeof(buffer), cPropertyVisibleDataChangeEvent);
2259 void
2260 JavaAccessBridge::firePropertyChildChange(JNIEnv *env, jobject callingObj,
2261 jobject event, jobject source,
2262 jobject oldValue, jobject newValue){
2263
2264 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyChildPropertyChanged(%p, %p, %p, %p, %p, %p)",
2265 env, callingObj, event,
2266 source, oldValue, newValue);
2267
2268 // sanity check
2269 if (ATs == (AccessBridgeATInstance *) 0) {
2270 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2271 return; // panic!
2272 }
2273
2274 // common setup
2275 char buffer[sizeof(PackageType) + sizeof(PropertyChildChangePackage)];
2276 PackageType *type = (PackageType *) buffer;
2277 PropertyChildChangePackage *pkg = (PropertyChildChangePackage *) (buffer + sizeof(PackageType));
2278 *type = cPropertyChildChangePackage;
2279 pkg->vmID = (long) dialogWindow;
2280
2281 // make new Global Refs and send events only to those ATs that want 'em
2282 AccessBridgeATInstance *ati = ATs;
2283 while (ati != (AccessBridgeATInstance *) 0) {
2284 if (ati->accessibilityEventMask & cPropertyChildChangeEvent) {
2285
2286 PrintDebugString(" sending to AT");
2287
2288 // make new GlobalRefs for this AT
2289 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2290 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2291 pkg->oldChildAccessibleContext = (JOBJECT64)env->NewGlobalRef(oldValue);
2292 pkg->newChildAccessibleContext = (JOBJECT64)env->NewGlobalRef(newValue);
2293 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2294 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2295 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2296 PrintDebugString(" GlobalRef'd OldChildAC: %p", pkg->oldChildAccessibleContext);
2297 PrintDebugString(" GlobalRef'd NewChildAC: %p", pkg->newChildAccessibleContext);
2298 #else // JOBJECT64 is jlong (64 bit)
2299 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2317 void
2318 JavaAccessBridge::firePropertyActiveDescendentChange(JNIEnv *env, jobject callingObj,
2319 jobject event, jobject source,
2320 jobject oldValue, jobject newValue){
2321
2322 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyActiveDescendentPropertyChanged(%p, %p, %p, %p, %p, %p)",
2323 env, callingObj, event,
2324 source, oldValue, newValue);
2325
2326 // sanity check
2327 if (ATs == (AccessBridgeATInstance *) 0) {
2328 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2329 return; // panic!
2330 }
2331
2332 // common setup
2333 char buffer[sizeof(PackageType) + sizeof(PropertyActiveDescendentChangePackage)];
2334 PackageType *type = (PackageType *) buffer;
2335 PropertyActiveDescendentChangePackage *pkg = (PropertyActiveDescendentChangePackage *) (buffer + sizeof(PackageType));
2336 *type = cPropertyActiveDescendentChangePackage;
2337 pkg->vmID = (long) dialogWindow;
2338
2339 // make new Global Refs and send events only to those ATs that want 'em
2340 AccessBridgeATInstance *ati = ATs;
2341 while (ati != (AccessBridgeATInstance *) 0) {
2342 if (ati->accessibilityEventMask & cPropertyActiveDescendentChangeEvent) {
2343
2344 PrintDebugString(" sending to AT");
2345
2346 // make new GlobalRefs for this AT
2347 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2348 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2349 pkg->oldActiveDescendentAccessibleContext = (JOBJECT64)env->NewGlobalRef(oldValue);
2350 pkg->newActiveDescendentAccessibleContext = (JOBJECT64)env->NewGlobalRef(newValue);
2351 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2352 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2353 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2354 PrintDebugString(" GlobalRef'd OldActiveDescendentAC: %p", pkg->oldActiveDescendentAccessibleContext);
2355 PrintDebugString(" GlobalRef'd NewActiveDescendentAC: %p", pkg->newActiveDescendentAccessibleContext);
2356 #else // JOBJECT64 is jlong (64 bit)
2357 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2375 JavaAccessBridge::firePropertyTableModelChange(JNIEnv *env, jobject callingObj,
2376 jobject event, jobject source,
2377 jstring oldValue, jstring newValue){
2378
2379 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyTableModelChange(%p, %p, %p, %p, %p, %p)",
2380 env, callingObj, event,
2381 source, oldValue, newValue);
2382
2383 // sanity check
2384 if (ATs == (AccessBridgeATInstance *) 0) {
2385 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2386 return; // panic!
2387 }
2388
2389 // common setup
2390 const wchar_t *stringBytes;
2391 char buffer[sizeof(PackageType) + sizeof(PropertyTableModelChangePackage)];
2392 PackageType *type = (PackageType *) buffer;
2393 PropertyTableModelChangePackage *pkg = (PropertyTableModelChangePackage *) (buffer + sizeof(PackageType));
2394 *type = cPropertyTableModelChangePackage;
2395 pkg->vmID = (long) dialogWindow;
2396
2397 // make new Global Refs and send events only to those ATs that want 'em
2398 AccessBridgeATInstance *ati = ATs;
2399 while (ati != (AccessBridgeATInstance *) 0) {
2400 if (ati->accessibilityEventMask & cPropertyTableModelChangeEvent) {
2401
2402 PrintDebugString(" sending to AT");
2403
2404 // make new GlobalRefs for this AT
2405 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2406 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2407 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2408 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2409 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2410 #else // JOBJECT64 is jlong (64 bit)
2411 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2412 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
2413 #endif
2414
2415 if (oldValue != (jstring) 0) {
2466 #endif
2467
2468 #define FIRE_EVENT(function, packageStruct, packageConstant, eventConstant) \
2469 void JavaAccessBridge::function(JNIEnv *env, jobject callingObj, \
2470 jobject eventObj, jobject source) { \
2471 \
2472 PrintDebugString("\r\nFiring event id = %d(%p, %p, %p, %p); vmID = %X", \
2473 eventConstant, env, callingObj, eventObj, source, dialogWindow); \
2474 \
2475 /* sanity check */ \
2476 if (ATs == (AccessBridgeATInstance *) 0) { \
2477 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)"); \
2478 return; /* panic! */ \
2479 } \
2480 \
2481 /* common setup */ \
2482 char buffer[sizeof(PackageType) + sizeof(packageStruct)]; \
2483 PackageType *type = (PackageType *) buffer; \
2484 packageStruct *pkg = (packageStruct *) (buffer + sizeof(PackageType)); \
2485 *type = packageConstant; \
2486 pkg->vmID = (long) dialogWindow; \
2487 \
2488 /* make new Global Refs, send events only to those ATs that want 'em */ \
2489 AccessBridgeATInstance *ati = ATs; \
2490 while (ati != (AccessBridgeATInstance *) 0) { \
2491 PrintDebugString("\r\njavaEventMask = %X eventConstant=%d pkg->vmID=%X", \
2492 ati->javaEventMask, eventConstant, pkg->vmID ); \
2493 if (ati->javaEventMask & eventConstant) { \
2494 \
2495 PrintDebugString(" sending to AT"); \
2496 /* make new GlobalRefs for this AT */ \
2497 pkg->Event = (JOBJECT64)env->NewGlobalRef(eventObj); \
2498 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source); \
2499 PRINT_GLOBALREFS() \
2500 \
2501 ati->sendJavaEventPackage(buffer, sizeof(buffer), eventConstant); \
2502 } \
2503 ati = ati->nextATInstance; \
2504 } \
2505 PrintDebugString(" done with firing AWT event"); \
2506 }
2507
2508 void JavaAccessBridge::javaShutdown(JNIEnv *env, jobject callingObj) {
2509
2510 PrintDebugString("\r\nFiring event id = %d(%p, %p); vmID = %X",
2511 cJavaShutdownEvent, env, callingObj, dialogWindow);
2512
2513 /* sanity check */
2514 if (ATs == (AccessBridgeATInstance *) 0) {
2515 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2516 return; /* panic! */
2517 }
2518
2519 /* common setup */
2520 char buffer[sizeof(PackageType) + sizeof(JavaShutdownPackage)];
2521 PackageType *type = (PackageType *) buffer;
2522 JavaShutdownPackage *pkg = (JavaShutdownPackage *) (buffer + sizeof(PackageType));
2523 *type = cJavaShutdownPackage;
2524 pkg->vmID = (long) dialogWindow;
2525
2526 /* make new Global Refs, send events only to those ATs that want 'em */
2527 AccessBridgeATInstance *ati = ATs;
2528 while (ati != (AccessBridgeATInstance *) 0) {
2529 if (ati->javaEventMask & cJavaShutdownEvent) {
2530 PrintDebugString(" sending to AT");
2531 ati->sendJavaEventPackage(buffer, sizeof(buffer), cJavaShutdownEvent);
2532 }
2533 ati = ati->nextATInstance;
2534 }
2535 PrintDebugString(" done with firing AWT event");
2536 }
2537
2538 FIRE_EVENT(fireFocusGained, FocusGainedPackage, cFocusGainedPackage, cFocusGainedEvent)
2539 FIRE_EVENT(fireFocusLost, FocusLostPackage, cFocusLostPackage, cFocusLostEvent)
2540 FIRE_EVENT(fireCaretUpdate, CaretUpdatePackage, cCaretUpdatePackage, cCaretUpdateEvent)
2541 FIRE_EVENT(fireMouseClicked, MouseClickedPackage, cMouseClickedPackage, cMouseClickedEvent)
2542 FIRE_EVENT(fireMouseEntered, MouseEnteredPackage, cMouseEnteredPackage, cMouseEnteredEvent)
2543 FIRE_EVENT(fireMouseExited, MouseExitedPackage, cMouseExitedPackage, cMouseExitedEvent)
2544 FIRE_EVENT(fireMousePressed, MousePressedPackage, cMousePressedPackage, cMousePressedEvent)
2702 * Class: com_sun_java_accessibility_internal_AccessBridge
2703 * Method: jawtGetComponentFromNativeWindowHandle
2704 * Signature: (I)Ljava/awt/Component;
2705 */
2706 JNIEXPORT jobject JNICALL
2707 Java_com_sun_java_accessibility_internal_AccessBridge_jawtGetComponentFromNativeWindowHandle
2708 (JNIEnv *env, jobject callingObj, jint windowHandle) {
2709
2710 JAWT awt;
2711 jboolean result;
2712 jobject component = (jobject)0;
2713
2714 // Get the AWT
2715 awt.version = JAWT_VERSION_1_4;
2716 result = JAWT_GetAWT(env, &awt);
2717 if (result == JNI_FALSE) {
2718 return (jobject)0;
2719 }
2720
2721 // Get the component
2722 return awt.GetComponent(env, (void *)windowHandle);
2723 }
2724
2725
2726 /*
2727 * Map a Java component to a HWND
2728 *
2729 * Class: com_sun_java_accessibility_internal_AccessBridge
2730 * Method: jawtGetNativeWindowHandleFromComponent
2731 * Signature: (Ljava/awt/Component;)I
2732 */
2733 JNIEXPORT jint JNICALL
2734 Java_com_sun_java_accessibility_internal_AccessBridge_jawtGetNativeWindowHandleFromComponent
2735 (JNIEnv *env, jobject callingObj, jobject component) {
2736
2737 JAWT awt;
2738 JAWT_DrawingSurface* ds;
2739 JAWT_DrawingSurfaceInfo* dsi;
2740 JAWT_Win32DrawingSurfaceInfo* dsi_win;
2741 jboolean result;
2742 // jint lock;
2745 // Get the AWT
2746 awt.version = JAWT_VERSION_1_4;
2747 result = JAWT_GetAWT(env, &awt);
2748 if (result == JNI_FALSE) {
2749 return -1;
2750 }
2751
2752 // Get the drawing surface
2753 ds = awt.GetDrawingSurface(env, component);
2754 if (ds == NULL) {
2755 return -1;
2756 }
2757
2758 // Get the drawing surface info
2759 dsi = ds->GetDrawingSurfaceInfo(ds);
2760
2761 // Get the platform-specific drawing info
2762 dsi_win = (JAWT_Win32DrawingSurfaceInfo *)dsi->platformInfo;
2763
2764 // Get the window handle
2765 windowHandle = (jint)dsi_win->hwnd;
2766
2767 // Free the drawing surface info
2768 ds->FreeDrawingSurfaceInfo(dsi);
2769
2770 // Free the drawing surface
2771 awt.FreeDrawingSurface(ds);
2772
2773 return windowHandle;
2774 }
2775
2776 }
|
1709 void
1710 JavaAccessBridge::firePropertyCaretChange(JNIEnv *env, jobject callingObj,
1711 jobject event, jobject source,
1712 jint oldValue, jint newValue) {
1713
1714 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyCaretChanged(%p, %p, %p, %p, %d, %d)",
1715 env, callingObj, event,
1716 source, oldValue, newValue);
1717
1718 // sanity check
1719 if (ATs == (AccessBridgeATInstance *) 0) {
1720 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
1721 return; // panic!
1722 }
1723
1724 // common setup
1725 char buffer[sizeof(PackageType) + sizeof(PropertyCaretChangePackage)];
1726 PackageType *type = (PackageType *) buffer;
1727 PropertyCaretChangePackage *pkg = (PropertyCaretChangePackage *) (buffer + sizeof(PackageType));
1728 *type = cPropertyCaretChangePackage;
1729 pkg->vmID = (long)(uintptr_t) dialogWindow;
1730
1731 // make new Global Refs and send events only to those ATs that want 'em
1732 AccessBridgeATInstance *ati = ATs;
1733 while (ati != (AccessBridgeATInstance *) 0) {
1734 if (ati->accessibilityEventMask & cPropertyCaretChangeEvent) {
1735
1736 PrintDebugString(" sending to AT");
1737
1738 // make new GlobalRefs for this AT
1739 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
1740 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
1741 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
1742 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
1743 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
1744 #else // JOBJECT64 is jlong (64 bit)
1745 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
1746 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
1747 #endif
1748
1749 pkg->oldPosition = oldValue;
1764 JavaAccessBridge::firePropertyDescriptionChange(JNIEnv *env, jobject callingObj,
1765 jobject event, jobject source,
1766 jstring oldValue, jstring newValue){
1767
1768 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyDescriptionChanged(%p, %p, %p, %p, %p, %p)",
1769 env, callingObj, event,
1770 source, oldValue, newValue);
1771
1772 // sanity check
1773 if (ATs == (AccessBridgeATInstance *) 0) {
1774 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
1775 return; // panic!
1776 }
1777
1778 // common setup
1779 const wchar_t *stringBytes;
1780 char buffer[sizeof(PackageType) + sizeof(PropertyDescriptionChangePackage)];
1781 PackageType *type = (PackageType *) buffer;
1782 PropertyDescriptionChangePackage *pkg = (PropertyDescriptionChangePackage *) (buffer + sizeof(PackageType));
1783 *type = cPropertyDescriptionChangePackage;
1784 pkg->vmID = (long)(uintptr_t) dialogWindow;
1785
1786 // make new Global Refs and send events only to those ATs that want 'em
1787 AccessBridgeATInstance *ati = ATs;
1788 while (ati != (AccessBridgeATInstance *) 0) {
1789 if (ati->accessibilityEventMask & cPropertyCaretChangeEvent) {
1790
1791 PrintDebugString(" sending to AT");
1792
1793 // make new GlobalRefs for this AT
1794 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
1795 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
1796 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
1797 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
1798 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
1799 #else // JOBJECT64 is jlong (64 bit)
1800 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
1801 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
1802 #endif
1803
1804 if (oldValue != (jstring) 0) {
1850 JavaAccessBridge::firePropertyNameChange(JNIEnv *env, jobject callingObj,
1851 jobject event, jobject source,
1852 jstring oldValue, jstring newValue){
1853
1854 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyNameChanged(%p, %p, %p, %p, %p, %p)",
1855 env, callingObj, event,
1856 source, oldValue, newValue);
1857
1858 // sanity check
1859 if (ATs == (AccessBridgeATInstance *) 0) {
1860 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
1861 return; // panic!
1862 }
1863
1864 // common setup
1865 const wchar_t *stringBytes;
1866 char buffer[sizeof(PackageType) + sizeof(PropertyNameChangePackage)];
1867 PackageType *type = (PackageType *) buffer;
1868 PropertyNameChangePackage *pkg = (PropertyNameChangePackage *) (buffer + sizeof(PackageType));
1869 *type = cPropertyNameChangePackage;
1870 pkg->vmID = (long)(uintptr_t) dialogWindow;
1871
1872 // make new Global Refs and send events only to those ATs that want 'em
1873 AccessBridgeATInstance *ati = ATs;
1874 while (ati != (AccessBridgeATInstance *) 0) {
1875 if (ati->accessibilityEventMask & cPropertyNameChangeEvent) {
1876
1877 PrintDebugString(" sending to AT");
1878
1879 // make new GlobalRefs for this AT
1880 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
1881 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
1882 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
1883 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
1884 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
1885 #else // JOBJECT64 is jlong (64 bit)
1886 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
1887 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
1888 #endif
1889
1890 if (oldValue != (jstring) 0) {
1934 *
1935 */
1936 void
1937 JavaAccessBridge::firePropertySelectionChange(JNIEnv *env, jobject callingObj,
1938 jobject event, jobject source) {
1939
1940 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertySelectionChanged(%p, %p, %p, %p)",
1941 env, callingObj, event, source);
1942
1943 // sanity check
1944 if (ATs == (AccessBridgeATInstance *) 0) {
1945 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
1946 return; // panic!
1947 }
1948
1949 // common setup
1950 char buffer[sizeof(PackageType) + sizeof(PropertySelectionChangePackage)];
1951 PackageType *type = (PackageType *) buffer;
1952 PropertySelectionChangePackage *pkg = (PropertySelectionChangePackage *) (buffer + sizeof(PackageType));
1953 *type = cPropertySelectionChangePackage;
1954 pkg->vmID = (long)(uintptr_t) dialogWindow;
1955
1956 // make new Global Refs and send events only to those ATs that want 'em
1957 AccessBridgeATInstance *ati = ATs;
1958 while (ati != (AccessBridgeATInstance *) 0) {
1959 if (ati->accessibilityEventMask & cPropertySelectionChangeEvent) {
1960
1961 PrintDebugString(" sending to AT");
1962
1963 // make new GlobalRefs for this AT
1964 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
1965 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
1966 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
1967 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
1968 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
1969 #else // JOBJECT64 is jlong (64 bit)
1970 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
1971 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
1972 #endif
1973
1974 ati->sendAccessibilityEventPackage(buffer, sizeof(buffer), cPropertySelectionChangeEvent);
1987 JavaAccessBridge::firePropertyStateChange(JNIEnv *env, jobject callingObj,
1988 jobject event, jobject source,
1989 jstring oldValue, jstring newValue){
1990
1991 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyStateChanged(%p, %p, %p, %p, %p, %p)",
1992 env, callingObj, event,
1993 source, oldValue, newValue);
1994
1995 // sanity check
1996 if (ATs == (AccessBridgeATInstance *) 0) {
1997 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
1998 return; // panic!
1999 }
2000
2001 // common setup
2002 const wchar_t *stringBytes;
2003 char buffer[sizeof(PackageType) + sizeof(PropertyStateChangePackage)];
2004 PackageType *type = (PackageType *) buffer;
2005 PropertyStateChangePackage *pkg = (PropertyStateChangePackage *) (buffer + sizeof(PackageType));
2006 *type = cPropertyStateChangePackage;
2007 pkg->vmID = (long)(uintptr_t) dialogWindow;
2008
2009 // make new Global Refs and send events only to those ATs that want 'em
2010 AccessBridgeATInstance *ati = ATs;
2011 while (ati != (AccessBridgeATInstance *) 0) {
2012 if (ati->accessibilityEventMask & cPropertyStateChangeEvent) {
2013
2014 PrintDebugString(" sending to AT");
2015
2016 // make new GlobalRefs for this AT
2017 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2018 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2019 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2020 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2021 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2022 #else // JOBJECT64 is jlong (64 bit)
2023 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2024 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
2025 #endif
2026
2027 if (oldValue != (jstring) 0) {
2071 *
2072 */
2073 void
2074 JavaAccessBridge::firePropertyTextChange(JNIEnv *env, jobject callingObj,
2075 jobject event, jobject source) {
2076
2077 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyTextChanged(%p, %p, %p, %p)",
2078 env, callingObj, event, source);
2079
2080 // sanity check
2081 if (ATs == (AccessBridgeATInstance *) 0) {
2082 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2083 return; // panic!
2084 }
2085
2086 // common setup
2087 char buffer[sizeof(PackageType) + sizeof(PropertyTextChangePackage)];
2088 PackageType *type = (PackageType *) buffer;
2089 PropertyTextChangePackage *pkg = (PropertyTextChangePackage *) (buffer + sizeof(PackageType));
2090 *type = cPropertyTextChangePackage;
2091 pkg->vmID = (long)(uintptr_t) dialogWindow;
2092
2093 // make new Global Refs and send events only to those ATs that want 'em
2094 AccessBridgeATInstance *ati = ATs;
2095 while (ati != (AccessBridgeATInstance *) 0) {
2096 if (ati->accessibilityEventMask & cPropertyTextChangeEvent) {
2097
2098 PrintDebugString(" sending to AT");
2099
2100 // make new GlobalRefs for this AT
2101 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2102 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2103 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2104 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2105 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2106 #else // JOBJECT64 is jlong (64 bit)
2107 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2108 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
2109 #endif
2110
2111 ati->sendAccessibilityEventPackage(buffer, sizeof(buffer), cPropertyTextChangeEvent);
2124 JavaAccessBridge::firePropertyValueChange(JNIEnv *env, jobject callingObj,
2125 jobject event, jobject source,
2126 jstring oldValue, jstring newValue){
2127
2128 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyValueChanged(%p, %p, %p, %p, %p, %p)",
2129 env, callingObj, event,
2130 source, oldValue, newValue);
2131
2132 // sanity check
2133 if (ATs == (AccessBridgeATInstance *) 0) {
2134 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2135 return; // panic!
2136 }
2137
2138 // common setup
2139 const wchar_t *stringBytes;
2140 char buffer[sizeof(PackageType) + sizeof(PropertyValueChangePackage)];
2141 PackageType *type = (PackageType *) buffer;
2142 PropertyValueChangePackage *pkg = (PropertyValueChangePackage *) (buffer + sizeof(PackageType));
2143 *type = cPropertyValueChangePackage;
2144 pkg->vmID = (long)(uintptr_t) dialogWindow;
2145
2146 // make new Global Refs and send events only to those ATs that want 'em
2147 AccessBridgeATInstance *ati = ATs;
2148 while (ati != (AccessBridgeATInstance *) 0) {
2149 if (ati->accessibilityEventMask & cPropertyValueChangeEvent) {
2150
2151 PrintDebugString(" sending to AT");
2152
2153 // make new GlobalRefs for this AT
2154 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2155 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2156 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2157 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2158 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2159 #else // JOBJECT64 is jlong (64 bit)
2160 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2161 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
2162 #endif
2163
2164 if (oldValue != (jstring) 0) {
2207 *
2208 */
2209 void
2210 JavaAccessBridge::firePropertyVisibleDataChange(JNIEnv *env, jobject callingObj,
2211 jobject event, jobject source) {
2212
2213 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyVisibleDataChanged(%p, %p, %p, %p)",
2214 env, callingObj, event, source);
2215
2216 // sanity check
2217 if (ATs == (AccessBridgeATInstance *) 0) {
2218 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2219 return; // panic!
2220 }
2221
2222 // common setup
2223 char buffer[sizeof(PackageType) + sizeof(PropertyVisibleDataChangePackage)];
2224 PackageType *type = (PackageType *) buffer;
2225 PropertyVisibleDataChangePackage *pkg = (PropertyVisibleDataChangePackage *) (buffer + sizeof(PackageType));
2226 *type = cPropertyVisibleDataChangePackage;
2227 pkg->vmID = (long)(uintptr_t) dialogWindow;
2228
2229 // make new Global Refs and send events only to those ATs that want 'em
2230 AccessBridgeATInstance *ati = ATs;
2231 while (ati != (AccessBridgeATInstance *) 0) {
2232 if (ati->accessibilityEventMask & cPropertyVisibleDataChangeEvent) {
2233
2234 PrintDebugString(" sending to AT");
2235
2236 // make new GlobalRefs for this AT
2237 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2238 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2239 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2240 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2241 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2242 #else // JOBJECT64 is jlong (64 bit)
2243 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2244 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
2245 #endif
2246
2247 ati->sendAccessibilityEventPackage(buffer, sizeof(buffer), cPropertyVisibleDataChangeEvent);
2259 void
2260 JavaAccessBridge::firePropertyChildChange(JNIEnv *env, jobject callingObj,
2261 jobject event, jobject source,
2262 jobject oldValue, jobject newValue){
2263
2264 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyChildPropertyChanged(%p, %p, %p, %p, %p, %p)",
2265 env, callingObj, event,
2266 source, oldValue, newValue);
2267
2268 // sanity check
2269 if (ATs == (AccessBridgeATInstance *) 0) {
2270 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2271 return; // panic!
2272 }
2273
2274 // common setup
2275 char buffer[sizeof(PackageType) + sizeof(PropertyChildChangePackage)];
2276 PackageType *type = (PackageType *) buffer;
2277 PropertyChildChangePackage *pkg = (PropertyChildChangePackage *) (buffer + sizeof(PackageType));
2278 *type = cPropertyChildChangePackage;
2279 pkg->vmID = (long)(uintptr_t) dialogWindow;
2280
2281 // make new Global Refs and send events only to those ATs that want 'em
2282 AccessBridgeATInstance *ati = ATs;
2283 while (ati != (AccessBridgeATInstance *) 0) {
2284 if (ati->accessibilityEventMask & cPropertyChildChangeEvent) {
2285
2286 PrintDebugString(" sending to AT");
2287
2288 // make new GlobalRefs for this AT
2289 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2290 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2291 pkg->oldChildAccessibleContext = (JOBJECT64)env->NewGlobalRef(oldValue);
2292 pkg->newChildAccessibleContext = (JOBJECT64)env->NewGlobalRef(newValue);
2293 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2294 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2295 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2296 PrintDebugString(" GlobalRef'd OldChildAC: %p", pkg->oldChildAccessibleContext);
2297 PrintDebugString(" GlobalRef'd NewChildAC: %p", pkg->newChildAccessibleContext);
2298 #else // JOBJECT64 is jlong (64 bit)
2299 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2317 void
2318 JavaAccessBridge::firePropertyActiveDescendentChange(JNIEnv *env, jobject callingObj,
2319 jobject event, jobject source,
2320 jobject oldValue, jobject newValue){
2321
2322 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyActiveDescendentPropertyChanged(%p, %p, %p, %p, %p, %p)",
2323 env, callingObj, event,
2324 source, oldValue, newValue);
2325
2326 // sanity check
2327 if (ATs == (AccessBridgeATInstance *) 0) {
2328 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2329 return; // panic!
2330 }
2331
2332 // common setup
2333 char buffer[sizeof(PackageType) + sizeof(PropertyActiveDescendentChangePackage)];
2334 PackageType *type = (PackageType *) buffer;
2335 PropertyActiveDescendentChangePackage *pkg = (PropertyActiveDescendentChangePackage *) (buffer + sizeof(PackageType));
2336 *type = cPropertyActiveDescendentChangePackage;
2337 pkg->vmID = (long)(uintptr_t) dialogWindow;
2338
2339 // make new Global Refs and send events only to those ATs that want 'em
2340 AccessBridgeATInstance *ati = ATs;
2341 while (ati != (AccessBridgeATInstance *) 0) {
2342 if (ati->accessibilityEventMask & cPropertyActiveDescendentChangeEvent) {
2343
2344 PrintDebugString(" sending to AT");
2345
2346 // make new GlobalRefs for this AT
2347 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2348 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2349 pkg->oldActiveDescendentAccessibleContext = (JOBJECT64)env->NewGlobalRef(oldValue);
2350 pkg->newActiveDescendentAccessibleContext = (JOBJECT64)env->NewGlobalRef(newValue);
2351 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2352 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2353 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2354 PrintDebugString(" GlobalRef'd OldActiveDescendentAC: %p", pkg->oldActiveDescendentAccessibleContext);
2355 PrintDebugString(" GlobalRef'd NewActiveDescendentAC: %p", pkg->newActiveDescendentAccessibleContext);
2356 #else // JOBJECT64 is jlong (64 bit)
2357 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2375 JavaAccessBridge::firePropertyTableModelChange(JNIEnv *env, jobject callingObj,
2376 jobject event, jobject source,
2377 jstring oldValue, jstring newValue){
2378
2379 PrintDebugString("\r\nJava_com_sun_java_accessibility_internal_AccessBridge_propertyTableModelChange(%p, %p, %p, %p, %p, %p)",
2380 env, callingObj, event,
2381 source, oldValue, newValue);
2382
2383 // sanity check
2384 if (ATs == (AccessBridgeATInstance *) 0) {
2385 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2386 return; // panic!
2387 }
2388
2389 // common setup
2390 const wchar_t *stringBytes;
2391 char buffer[sizeof(PackageType) + sizeof(PropertyTableModelChangePackage)];
2392 PackageType *type = (PackageType *) buffer;
2393 PropertyTableModelChangePackage *pkg = (PropertyTableModelChangePackage *) (buffer + sizeof(PackageType));
2394 *type = cPropertyTableModelChangePackage;
2395 pkg->vmID = (long)(uintptr_t) dialogWindow;
2396
2397 // make new Global Refs and send events only to those ATs that want 'em
2398 AccessBridgeATInstance *ati = ATs;
2399 while (ati != (AccessBridgeATInstance *) 0) {
2400 if (ati->accessibilityEventMask & cPropertyTableModelChangeEvent) {
2401
2402 PrintDebugString(" sending to AT");
2403
2404 // make new GlobalRefs for this AT
2405 pkg->Event = (JOBJECT64)env->NewGlobalRef(event);
2406 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source);
2407 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
2408 PrintDebugString(" GlobalRef'd Event: %p", pkg->Event);
2409 PrintDebugString(" GlobalRef'd Source: %p", pkg->AccessibleContextSource);
2410 #else // JOBJECT64 is jlong (64 bit)
2411 PrintDebugString(" GlobalRef'd Event: %016I64X", pkg->Event);
2412 PrintDebugString(" GlobalRef'd Source: %016I64X", pkg->AccessibleContextSource);
2413 #endif
2414
2415 if (oldValue != (jstring) 0) {
2466 #endif
2467
2468 #define FIRE_EVENT(function, packageStruct, packageConstant, eventConstant) \
2469 void JavaAccessBridge::function(JNIEnv *env, jobject callingObj, \
2470 jobject eventObj, jobject source) { \
2471 \
2472 PrintDebugString("\r\nFiring event id = %d(%p, %p, %p, %p); vmID = %X", \
2473 eventConstant, env, callingObj, eventObj, source, dialogWindow); \
2474 \
2475 /* sanity check */ \
2476 if (ATs == (AccessBridgeATInstance *) 0) { \
2477 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)"); \
2478 return; /* panic! */ \
2479 } \
2480 \
2481 /* common setup */ \
2482 char buffer[sizeof(PackageType) + sizeof(packageStruct)]; \
2483 PackageType *type = (PackageType *) buffer; \
2484 packageStruct *pkg = (packageStruct *) (buffer + sizeof(PackageType)); \
2485 *type = packageConstant; \
2486 pkg->vmID = (long)(uintptr_t) dialogWindow; \
2487 \
2488 /* make new Global Refs, send events only to those ATs that want 'em */ \
2489 AccessBridgeATInstance *ati = ATs; \
2490 while (ati != (AccessBridgeATInstance *) 0) { \
2491 PrintDebugString("\r\njavaEventMask = %X eventConstant=%d pkg->vmID=%X", \
2492 ati->javaEventMask, eventConstant, pkg->vmID ); \
2493 if (ati->javaEventMask & eventConstant) { \
2494 \
2495 PrintDebugString(" sending to AT"); \
2496 /* make new GlobalRefs for this AT */ \
2497 pkg->Event = (JOBJECT64)env->NewGlobalRef(eventObj); \
2498 pkg->AccessibleContextSource = (JOBJECT64)env->NewGlobalRef(source); \
2499 PRINT_GLOBALREFS() \
2500 \
2501 ati->sendJavaEventPackage(buffer, sizeof(buffer), eventConstant); \
2502 } \
2503 ati = ati->nextATInstance; \
2504 } \
2505 PrintDebugString(" done with firing AWT event"); \
2506 }
2507
2508 void JavaAccessBridge::javaShutdown(JNIEnv *env, jobject callingObj) {
2509
2510 PrintDebugString("\r\nFiring event id = %d(%p, %p); vmID = %X",
2511 cJavaShutdownEvent, env, callingObj, dialogWindow);
2512
2513 /* sanity check */
2514 if (ATs == (AccessBridgeATInstance *) 0) {
2515 PrintDebugString(" ERROR!! ATs == 0! (shouldn't happen here!)");
2516 return; /* panic! */
2517 }
2518
2519 /* common setup */
2520 char buffer[sizeof(PackageType) + sizeof(JavaShutdownPackage)];
2521 PackageType *type = (PackageType *) buffer;
2522 JavaShutdownPackage *pkg = (JavaShutdownPackage *) (buffer + sizeof(PackageType));
2523 *type = cJavaShutdownPackage;
2524 pkg->vmID = (long)(uintptr_t) dialogWindow;
2525
2526 /* make new Global Refs, send events only to those ATs that want 'em */
2527 AccessBridgeATInstance *ati = ATs;
2528 while (ati != (AccessBridgeATInstance *) 0) {
2529 if (ati->javaEventMask & cJavaShutdownEvent) {
2530 PrintDebugString(" sending to AT");
2531 ati->sendJavaEventPackage(buffer, sizeof(buffer), cJavaShutdownEvent);
2532 }
2533 ati = ati->nextATInstance;
2534 }
2535 PrintDebugString(" done with firing AWT event");
2536 }
2537
2538 FIRE_EVENT(fireFocusGained, FocusGainedPackage, cFocusGainedPackage, cFocusGainedEvent)
2539 FIRE_EVENT(fireFocusLost, FocusLostPackage, cFocusLostPackage, cFocusLostEvent)
2540 FIRE_EVENT(fireCaretUpdate, CaretUpdatePackage, cCaretUpdatePackage, cCaretUpdateEvent)
2541 FIRE_EVENT(fireMouseClicked, MouseClickedPackage, cMouseClickedPackage, cMouseClickedEvent)
2542 FIRE_EVENT(fireMouseEntered, MouseEnteredPackage, cMouseEnteredPackage, cMouseEnteredEvent)
2543 FIRE_EVENT(fireMouseExited, MouseExitedPackage, cMouseExitedPackage, cMouseExitedEvent)
2544 FIRE_EVENT(fireMousePressed, MousePressedPackage, cMousePressedPackage, cMousePressedEvent)
2702 * Class: com_sun_java_accessibility_internal_AccessBridge
2703 * Method: jawtGetComponentFromNativeWindowHandle
2704 * Signature: (I)Ljava/awt/Component;
2705 */
2706 JNIEXPORT jobject JNICALL
2707 Java_com_sun_java_accessibility_internal_AccessBridge_jawtGetComponentFromNativeWindowHandle
2708 (JNIEnv *env, jobject callingObj, jint windowHandle) {
2709
2710 JAWT awt;
2711 jboolean result;
2712 jobject component = (jobject)0;
2713
2714 // Get the AWT
2715 awt.version = JAWT_VERSION_1_4;
2716 result = JAWT_GetAWT(env, &awt);
2717 if (result == JNI_FALSE) {
2718 return (jobject)0;
2719 }
2720
2721 // Get the component
2722 return awt.GetComponent(env, (void *)(uintptr_t) windowHandle);
2723 }
2724
2725
2726 /*
2727 * Map a Java component to a HWND
2728 *
2729 * Class: com_sun_java_accessibility_internal_AccessBridge
2730 * Method: jawtGetNativeWindowHandleFromComponent
2731 * Signature: (Ljava/awt/Component;)I
2732 */
2733 JNIEXPORT jint JNICALL
2734 Java_com_sun_java_accessibility_internal_AccessBridge_jawtGetNativeWindowHandleFromComponent
2735 (JNIEnv *env, jobject callingObj, jobject component) {
2736
2737 JAWT awt;
2738 JAWT_DrawingSurface* ds;
2739 JAWT_DrawingSurfaceInfo* dsi;
2740 JAWT_Win32DrawingSurfaceInfo* dsi_win;
2741 jboolean result;
2742 // jint lock;
2745 // Get the AWT
2746 awt.version = JAWT_VERSION_1_4;
2747 result = JAWT_GetAWT(env, &awt);
2748 if (result == JNI_FALSE) {
2749 return -1;
2750 }
2751
2752 // Get the drawing surface
2753 ds = awt.GetDrawingSurface(env, component);
2754 if (ds == NULL) {
2755 return -1;
2756 }
2757
2758 // Get the drawing surface info
2759 dsi = ds->GetDrawingSurfaceInfo(ds);
2760
2761 // Get the platform-specific drawing info
2762 dsi_win = (JAWT_Win32DrawingSurfaceInfo *)dsi->platformInfo;
2763
2764 // Get the window handle
2765 windowHandle = (jint)(uintptr_t)dsi_win->hwnd;
2766
2767 // Free the drawing surface info
2768 ds->FreeDrawingSurfaceInfo(dsi);
2769
2770 // Free the drawing surface
2771 awt.FreeDrawingSurface(ds);
2772
2773 return windowHandle;
2774 }
2775
2776 }
|