annotate dwt/accessibility/SWTAccessibleDelegate.d @ 156:969e7de37c3d default tip

Fixes to get dwt to work with dmd and ldc
author Jacob Carlborg <doob@me.com>
date Wed, 08 Jul 2009 21:56:44 +0200
parents ad4e1fe71a5a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
1 /*******************************************************************************
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
2 * Copyright (c) 2000, 2008 IBM Corporation and others.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
7 *
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
8 * Contributors:
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
10 *
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
11 * Port to the D programming language:
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
12 * Jacob Carlborg <doob@me.com>
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
13 *******************************************************************************/
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
14 module dwt.accessibility.SWTAccessibleDelegate;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
15
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
16 import dwt.dwthelper.utils;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
17
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
18
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
19 import dwt.DWT;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
20 import dwt.internal.C;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
21 import dwt.internal.cocoa.NSArray;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
22 import dwt.internal.cocoa.NSObject;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
23 import dwt.internal.cocoa.NSPoint;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
24 import dwt.internal.cocoa.NSString;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
25 import dwt.internal.cocoa.OS;
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
26 import cocoa = dwt.internal.cocoa.id;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
27
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
28 import dwt.accessibility.Accessible;
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
29 import objc = dwt.internal.objc.runtime;
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
30
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
31 class SWTAccessibleDelegate : NSObject {
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
32
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
33 /**
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
34 * Accessible Key: The string constant for looking up the accessible
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
35 * for a control using <code>getData(String)</code>. When an accessible
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
36 * is created for a control, it is stored as a property in the control
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
37 * using <code>setData(String, Object)</code>.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
38 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
39 static final String ACCESSIBLE_KEY = "Accessible"; //$NON-NLS-1$
129
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents: 123
diff changeset
40 static final String SWT_OBJECT = "SWT_OBJECT";
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
41
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
42 static objc.IMP proc2Args, proc3Args, proc4Args;
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
43
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
44 Accessible accessibleParent;
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
45 void* delegateJniRef;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
46 int childID;
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
47
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
48 NSArray attributeNames = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
49 NSArray parameterizedAttributeNames = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
50 NSArray actionNames = null;
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
51
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
52 static this (){
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
53 ClassInfo clazz = SWTAccessibleDelegate.classinfo;
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
54
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
55 proc2Args = cast(objc.IMP) &accessibleProc2;
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
56
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
57 proc3Args = cast(objc.IMP) &accessibleProc3;
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
58
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
59 proc4Args = cast(objc.IMP) &accessibleProc4;
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
60
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
61 // Accessible custom controls need to implement the NSAccessibility protocol. To do that,
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
62 // we dynamically add the methods to the control's class that are required
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
63 // by NSAccessibility. Then, when external assistive technology services are used,
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
64 // those methods get called to provide the needed information.
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
65
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
66 String className = "SWTAccessibleDelegate";
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
67
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
68 // TODO: These should either move out of Display or be accessible to this class.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
69 String types = "*";
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
70 size_t size = C.PTR_SIZEOF, align_ = C.PTR_SIZEOF is 4 ? 2 : 3;
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
71
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
72 objc.Class cls = OS.objc_allocateClassPair(cast(objc.Class) OS.class_NSObject, className, 0);
129
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents: 123
diff changeset
73 OS.class_addIvar(cls, SWT_OBJECT, size, cast(byte)align_, types);
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
74
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
75 // Add the NSAccessibility overrides
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
76 OS.class_addMethod(cls, OS.sel_accessibilityActionNames, proc2Args, "@:");
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
77 OS.class_addMethod(cls, OS.sel_accessibilityAttributeNames, proc2Args, "@:");
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
78 OS.class_addMethod(cls, OS.sel_accessibilityParameterizedAttributeNames, proc2Args, "@:");
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
79 OS.class_addMethod(cls, OS.sel_accessibilityIsIgnored, proc2Args, "@:");
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
80 OS.class_addMethod(cls, OS.sel_accessibilityFocusedUIElement, proc2Args, "@:");
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
81
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
82 OS.class_addMethod(cls, OS.sel_accessibilityAttributeValue_, proc3Args, "@:@");
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
83 OS.class_addMethod(cls, OS.sel_accessibilityHitTest_, proc3Args, "@:{NSPoint}");
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
84 OS.class_addMethod(cls, OS.sel_accessibilityIsAttributeSettable_, proc3Args, "@:@");
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
85 OS.class_addMethod(cls, OS.sel_accessibilityActionDescription_, proc3Args, "@:@");
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
86 OS.class_addMethod(cls, OS.sel_accessibilityPerformAction_, proc3Args, "@:@");
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
87
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
88 OS.class_addMethod(cls, OS.sel_accessibilityAttributeValue_forParameter_, proc4Args, "@:@@");
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
89 OS.class_addMethod(cls, OS.sel_accessibilitySetValue_forAttribute_, proc4Args, "@:@@");
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
90
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
91 OS.objc_registerClassPair(cls);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
92 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
93
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
94
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
95 public this(Accessible accessible, int childID) {
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
96 super(cast(objc.id) null);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
97 this.accessibleParent = accessible;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
98 this.childID = childID;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
99 alloc().init();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
100 delegateJniRef = OS.NewGlobalRef(this);
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
101 if (delegateJniRef is null) DWT.error(DWT.ERROR_NO_HANDLES);
129
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents: 123
diff changeset
102 OS.object_setInstanceVariable(this.id, SWT_OBJECT, delegateJniRef);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
103 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
104
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
105 NSArray accessibilityActionNames() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
106
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
107 if (actionNames !is null)
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
108 return retainedAutoreleased(actionNames);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
109
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
110 actionNames = accessibleParent.internal_accessibilityActionNames(childID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
111 actionNames.retain();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
112 return retainedAutoreleased(actionNames);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
113 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
114
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
115 NSArray accessibilityAttributeNames() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
116
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
117 if (attributeNames !is null)
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
118 return retainedAutoreleased(attributeNames);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
119
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
120 attributeNames = accessibleParent.internal_accessibilityAttributeNames(childID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
121 attributeNames.retain();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
122 return retainedAutoreleased(attributeNames);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
123 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
124
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
125 cocoa.id accessibilityAttributeValue(NSString attribute) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
126 return accessibleParent.internal_accessibilityAttributeValue(attribute, childID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
127 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
128
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
129 // parameterized attribute methods
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
130 NSArray accessibilityParameterizedAttributeNames() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
131
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
132 if (parameterizedAttributeNames !is null)
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
133 return retainedAutoreleased(parameterizedAttributeNames);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
134
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
135 parameterizedAttributeNames = accessibleParent.internal_accessibilityParameterizedAttributeNames(childID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
136 parameterizedAttributeNames.retain();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
137 return retainedAutoreleased(parameterizedAttributeNames);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
138 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
139
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
140 cocoa.id accessibilityAttributeValue_forParameter(NSString attribute, cocoa.id parameter) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
141 return accessibleParent.internal_accessibilityAttributeValue_forParameter(attribute, parameter, childID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
142 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
143
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
144 // Return YES if the UIElement doesn't show up to the outside world - i.e. its parent should return the UIElement's children as its own - cutting the UIElement out. E.g. NSControls are ignored when they are single-celled.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
145 bool accessibilityIsIgnored() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
146 return accessibleParent.internal_accessibilityIsIgnored(childID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
147 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
148
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
149 bool accessibilityIsAttributeSettable(NSString attribute) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
150 return accessibleParent.internal_accessibilityIsAttributeSettable(attribute, childID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
151 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
152
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
153 // Returns the deepest descendant of the UIElement hierarchy that contains the point. You can assume the point has already been determined to lie within the receiver. Override this method to do deeper hit testing within a UIElement - e.g. a NSMatrix would test its cells. The point is bottom-left relative screen coordinates.
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
154 cocoa.id accessibilityHitTest(NSPoint point) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
155 return accessibleParent.internal_accessibilityHitTest(point, childID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
156 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
157
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
158 // Returns the UI Element that has the focus. You can assume that the search for the focus has already been narrowed down to the reciever. Override this method to do a deeper search with a UIElement - e.g. a NSMatrix would determine if one of its cells has the focus.
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
159 cocoa.id accessibilityFocusedUIElement() {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
160 return accessibleParent.internal_accessibilityFocusedUIElement(childID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
161 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
162
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
163 void accessibilityPerformAction(NSString action) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
164 accessibleParent.internal_accessibilityPerformAction(action, childID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
165 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
166
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
167 cocoa.id accessibilityActionDescription(NSString action) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
168 return accessibleParent.internal_accessibilityActionDescription(action, childID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
169 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
170
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
171
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
172 void accessibilitySetValue_forAttribute(cocoa.id value, NSString attribute) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
173 // This shouldn't be called!
61
c74ba20de292 Fix: The application responds to events now
Jacob Carlborg <doob@me.com>
parents: 60
diff changeset
174 System.out_.println("Ignoring attribute: " ~ attribute.getString());
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
175 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
176
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
177 static NSArray retainedAutoreleased(NSArray inObject) {
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
178 cocoa.id temp = inObject.retain();
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 59
diff changeset
179 cocoa.id temp2 = (new NSObject(temp.id)).autorelease();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
180 return new NSArray(temp2.id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
181 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
182 extern (C){
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
183 static objc.id accessibleProc2(objc.id id, objc.SEL sel) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
184 SWTAccessibleDelegate swtAcc = getAccessibleDelegate(id);
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
185 if (swtAcc is null) return null;
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
186
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
187 if (sel is OS.sel_accessibilityAttributeNames) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
188 NSArray retObject = swtAcc.accessibilityAttributeNames();
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
189 return (retObject is null ? null : retObject.id);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
190 } else if (sel is OS.sel_accessibilityActionNames) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
191 NSArray retObject = swtAcc.accessibilityActionNames();
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
192 return (retObject is null ? null : retObject.id);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
193 } else if (sel is OS.sel_accessibilityParameterizedAttributeNames) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
194 NSArray retObject = swtAcc.accessibilityParameterizedAttributeNames();
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
195 return (retObject is null ? null : retObject.id);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
196 } else if (sel is OS.sel_accessibilityIsIgnored) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
197 bool retVal = swtAcc.accessibilityIsIgnored();
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
198 return (retVal ? cast(objc.id)1 : null);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
199 } else if (sel is OS.sel_accessibilityFocusedUIElement) {
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
200 cocoa.id retObject = swtAcc.accessibilityFocusedUIElement();
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
201 return (retObject is null ? null : retObject.id);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
202 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
203
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
204 return null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
205 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
206
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
207 static objc.id accessibleProc3(objc.id id, objc.SEL sel, objc.id arg0) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
208 SWTAccessibleDelegate swtAcc = getAccessibleDelegate(id);
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
209 if (swtAcc is null) return null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
210
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
211 if (sel is OS.sel_accessibilityAttributeValue_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
212 NSString attribute = new NSString(arg0);
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
213 cocoa.id retObject = swtAcc.accessibilityAttributeValue(attribute);
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
214 return (retObject is null ? null : retObject.id);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
215 } else if (sel is OS.sel_accessibilityHitTest_) {
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
216 NSPoint point= NSPoint();
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 59
diff changeset
217 OS.memmove(&point, arg0, NSPoint.sizeof);
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
218 cocoa.id retObject = swtAcc.accessibilityHitTest(point);
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
219 return (retObject is null ? null : retObject.id);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
220 } else if (sel is OS.sel_accessibilityIsAttributeSettable_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
221 NSString attribute = new NSString(arg0);
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 59
diff changeset
222 return (swtAcc.accessibilityIsAttributeSettable(attribute) ? cast(objc.id) 1 : null);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
223 } else if (sel is OS.sel_accessibilityActionDescription_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
224 NSString action = new NSString(arg0);
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
225 cocoa.id retObject = swtAcc.accessibilityActionDescription(action);
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
226 return (retObject is null ? null : retObject.id);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
227 } else if (sel is OS.sel_accessibilityPerformAction_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
228 NSString action = new NSString(arg0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
229 swtAcc.accessibilityPerformAction(action);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
230 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
231
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
232 return null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
233 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
234
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
235 static objc.id accessibleProc4(objc.id id, objc.SEL sel, objc.id arg0, objc.id arg1) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
236 SWTAccessibleDelegate swtAcc = getAccessibleDelegate(id);
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
237 if (swtAcc is null) return null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
238
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
239 if (sel is OS.sel_accessibilityAttributeValue_forParameter_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
240 NSString attribute = new NSString(arg0);
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
241 cocoa.id parameter = new cocoa.id(arg1);
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
242 cocoa.id retObject = swtAcc.accessibilityAttributeValue_forParameter(attribute, parameter);
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
243 return (retObject is null ? null : retObject.id);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
244 } else if (sel is OS.sel_accessibilitySetValue_forAttribute_) {
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
245 cocoa.id value = new cocoa.id(arg0);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
246 NSString attribute = new NSString(arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
247 swtAcc.accessibilitySetValue_forAttribute(value, attribute);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
248 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
249
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
250 return null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
251 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
252 }
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
253 static SWTAccessibleDelegate getAccessibleDelegate(objc.id id) {
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
254 if (id is null) return null;
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
255 void* jniRef;
129
ad4e1fe71a5a Fixed runtime errors
Jacob Carlborg <doob@me.com>
parents: 123
diff changeset
256 OS.object_getInstanceVariable(id, SWT_OBJECT, jniRef);
59
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
257 if (jniRef is null) return null;
83b0ad9d9238 Ported SWTAccessibleDelegate
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
258 return cast(SWTAccessibleDelegate)OS.JNIGetObject(jniRef);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
259 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
260
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
261 public void internal_dispose_SWTAccessibleDelegate() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
262 if (actionNames !is null) actionNames.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
263 actionNames = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
264 if (attributeNames !is null) attributeNames.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
265 attributeNames = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
266 if (parameterizedAttributeNames !is null) parameterizedAttributeNames.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
267 parameterizedAttributeNames = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
268 }
123
63a09873578e Fixed compile errors
Jacob Carlborg <doob@me.com>
parents: 61
diff changeset
269
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents:
diff changeset
270 }