< prev index next >

jdk/src/jdk.accessibility/windows/native/libjavaaccessbridge/JavaAccessBridge.cpp

Print this page




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 }
< prev index next >