# HG changeset patch # User Jacob Carlborg # Date 1228854930 -3600 # Node ID 6d9ec9ccdcdd47ff5f4aff50be6f6a137d2b492d # Parent 4444d15131d57d7c169f172d9d968c2846b56d3a Updated Accessible to 3.514 diff -r 4444d15131d5 -r 6d9ec9ccdcdd dwt/accessibility/Accessible.d --- a/dwt/accessibility/Accessible.d Mon Dec 08 22:02:10 2008 +0100 +++ b/dwt/accessibility/Accessible.d Tue Dec 09 21:35:30 2008 +0100 @@ -14,11 +14,6 @@ module dwt.accessibility.Accessible; import dwt.dwthelper.utils; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Vector; import dwt.DWT; import dwt.DWTException; @@ -34,16 +29,20 @@ import dwt.internal.cocoa.NSString; import dwt.internal.cocoa.NSValue; import dwt.internal.cocoa.OS; -import dwt.internal.cocoa.id; +import cocoa = dwt.internal.cocoa.id; import dwt.widgets.Composite; import dwt.widgets.Control; import dwt.widgets.Display; import dwt.widgets.Monitor; import dwt.widgets.Shell; +import tango.util.container.HashMap; + import dwt.accessibility.AccessibleListener; import dwt.accessibility.AccessibleControlListener; import dwt.accessibility.AccessibleTextListener; +import dwt.accessibility.SWTAccessibleDelegate; +import dwt.dwthelper.array; /** * Instances of this class provide a bridge between application @@ -70,49 +69,55 @@ */ public class Accessible { - static NSString[] baseAttributes = { - OS.NSAccessibilityRoleAttribute, - OS.NSAccessibilityRoleDescriptionAttribute, - OS.NSAccessibilityHelpAttribute, - OS.NSAccessibilityFocusedAttribute, - OS.NSAccessibilityParentAttribute, - OS.NSAccessibilityChildrenAttribute, - OS.NSAccessibilityPositionAttribute, - OS.NSAccessibilitySizeAttribute, - OS.NSAccessibilityWindowAttribute, - OS.NSAccessibilityTopLevelUIElementAttribute - }; + static NSString[] baseAttributes; - static NSString[] baseTextAttributes = { - OS.NSAccessibilityNumberOfCharactersAttribute, - OS.NSAccessibilitySelectedTextAttribute, - OS.NSAccessibilitySelectedTextRangeAttribute, - OS.NSAccessibilityInsertionPointLineNumberAttribute, - OS.NSAccessibilitySelectedTextRangesAttribute, - OS.NSAccessibilityVisibleCharacterRangeAttribute, - OS.NSAccessibilityValueAttribute, - }; + static NSString[] baseTextAttributes; - static NSString[] baseParameterizedAttributes = { - OS.NSAccessibilityStringForRangeParameterizedAttribute, - OS.NSAccessibilityRangeForLineParameterizedAttribute, - }; + static NSString[] baseParameterizedAttributes; NSMutableArray attributeNames = null; NSMutableArray parameterizedAttributeNames = null; NSMutableArray actionNames = null; - Vector accessibleListeners = new Vector(); - Vector accessibleControlListeners = new Vector(); - Vector accessibleTextListeners = new Vector (); + AccessibleListener[] accessibleListeners; + AccessibleControlListener[] accessibleControlListeners; + AccessibleTextListener[] accessibleTextListeners; Control control; - Map /**/ children = new HashMap(); + HashMap!(int, SWTAccessibleDelegate) children; this (Control control) { this.control = control; + + baseAttributes = [ + OS.NSAccessibilityRoleAttribute, + OS.NSAccessibilityRoleDescriptionAttribute, + OS.NSAccessibilityHelpAttribute, + OS.NSAccessibilityFocusedAttribute, + OS.NSAccessibilityParentAttribute, + OS.NSAccessibilityChildrenAttribute, + OS.NSAccessibilityPositionAttribute, + OS.NSAccessibilitySizeAttribute, + OS.NSAccessibilityWindowAttribute, + OS.NSAccessibilityTopLevelUIElementAttribute + ]; + + baseTextAttributes = [ + OS.NSAccessibilityNumberOfCharactersAttribute, + OS.NSAccessibilitySelectedTextAttribute, + OS.NSAccessibilitySelectedTextRangeAttribute, + OS.NSAccessibilityInsertionPointLineNumberAttribute, + OS.NSAccessibilitySelectedTextRangesAttribute, + OS.NSAccessibilityVisibleCharacterRangeAttribute, + OS.NSAccessibilityValueAttribute + ]; + + baseParameterizedAttributes = [ + OS.NSAccessibilityStringForRangeParameterizedAttribute, + OS.NSAccessibilityRangeForLineParameterizedAttribute + ]; } /** @@ -215,7 +220,7 @@ accessibleTextListeners.addElement (listener); } - public id internal_accessibilityActionDescription(NSString action, int childID) { + public cocoa.id internal_accessibilityActionDescription(NSString action, int childID) { // TODO No action support for now. return NSString.stringWith(""); } @@ -226,7 +231,7 @@ event.childID = childID; event.detail = -1; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getRole(event); } @@ -274,7 +279,7 @@ event.childID = childID; event.detail = -1; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getRole(event); } @@ -377,7 +382,7 @@ } } - public id internal_accessibilityAttributeValue(NSString attribute, int childID) { + public cocoa.id internal_accessibilityAttributeValue(NSString attribute, int childID) { if (attribute.isEqualToString(OS.NSAccessibilityRoleAttribute)) return getRoleAttribute(childID); if (attribute.isEqualToString(OS.NSAccessibilitySubroleAttribute)) return getSubroleAttribute(childID); if (attribute.isEqualToString(OS.NSAccessibilityRoleDescriptionAttribute)) return getRoleDescriptionAttribute(childID); @@ -408,7 +413,7 @@ return null; } - public id internal_accessibilityAttributeValue_forParameter(NSString attribute, id parameter, int childID) { + public cocoa.id internal_accessibilityAttributeValue_forParameter(NSString attribute, id parameter, int childID) { if (attribute.isEqualToString(OS.NSAccessibilityStringForRangeParameterizedAttribute)) return getStringForRangeAttribute(parameter, childID); if (attribute.isEqualToString(OS.NSAccessibilityRangeForLineParameterizedAttribute)) return getRangeForLineParameterizedAttribute(parameter, childID); return null; @@ -416,12 +421,12 @@ // Returns the UI Element that has the focus. You can assume that the search for the focus has already been narrowed down to the receiver. // 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. - public id internal_accessibilityFocusedUIElement(int childID) { + public cocoa.id internal_accessibilityFocusedUIElement(int childID) { AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = ACC.CHILDID_MULTIPLE; // set to invalid value, to test if the application sets it in getFocus() event.accessible = null; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getFocus(event); } @@ -431,30 +436,30 @@ /* The application can optionally answer an accessible. */ if (event.accessible !is null) { - return new id(OS.NSAccessibilityUnignoredAncestor(event.accessible.control.view.id)); + return new cocoa.id(OS.NSAccessibilityUnignoredAncestor(event.accessible.control.view.id)); } /* Or the application can answer a valid child ID, including CHILDID_SELF and CHILDID_NONE. */ if (event.childID is ACC.CHILDID_SELF || event.childID is ACC.CHILDID_NONE) { - return new id(OS.NSAccessibilityUnignoredAncestor(control.view.id)); + return new cocoa.id(OS.NSAccessibilityUnignoredAncestor(control.view.id)); } - return new id(OS.NSAccessibilityUnignoredAncestor(childIDToOs(event.childID).id)); + return new cocoa.id(OS.NSAccessibilityUnignoredAncestor(childIDToOs(event.childID).id)); } // 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. - public id internal_accessibilityHitTest(NSPoint point, int childID) { + public cocoa.id internal_accessibilityHitTest(NSPoint point, int childID) { AccessibleControlEvent event = new AccessibleControlEvent(this); - event.x = (int) point.x; + event.x = cast(int) point.x; Monitor primaryMonitor = Display.getCurrent().getPrimaryMonitor(); - event.y = (int) (primaryMonitor.getBounds().height - point.y); + event.y = cast(int) (primaryMonitor.getBounds().height - point.y); // Set an impossible value to determine if anything responded to the event. event.childID = ACC.CHILDID_MULTIPLE; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getChildAtPoint(event); } @@ -463,14 +468,14 @@ return null; if (event.accessible !is null) { - return new id(OS.NSAccessibilityUnignoredAncestor(event.accessible.control.view.id)); + return new cocoa.id(OS.NSAccessibilityUnignoredAncestor(event.accessible.control.view.id)); } if (event.childID is ACC.CHILDID_SELF || event.childID is ACC.CHILDID_NONE) { - return new id(OS.NSAccessibilityUnignoredAncestor(control.view.id)); + return new cocoa.id(OS.NSAccessibilityUnignoredAncestor(control.view.id)); } - return new id(OS.NSAccessibilityUnignoredAncestor(childIDToOs(event.childID).id)); + return new cocoa.id(OS.NSAccessibilityUnignoredAncestor(childIDToOs(event.childID).id)); } public bool internal_accessibilityIsAttributeSettable(NSString attribute, int childID) { @@ -541,29 +546,25 @@ if (attributeNames !is null) attributeNames.release(); attributeNames = null; if (parameterizedAttributeNames !is null) parameterizedAttributeNames.release(); - parameterizedAttributeNames = null; + parameterizedAttributeNames = null; - Collection delegates = children.values(); - Iterator iter = delegates.iterator(); - while (iter.hasNext()) { - SWTAccessibleDelegate childDelegate = (SWTAccessibleDelegate)iter.next(); + foreach (childDelegate ; children) childDelegate.internal_dispose_SWTAccessibleDelegate(); - } children.clear(); } - id getExpandedAttribute(int childID) { + cocoa.id getExpandedAttribute(int childID) { // TODO: May need to expand the API so the combo box state can be reported. return NSNumber.numberWithBool(false); } - id getHelpAttribute (int childID) { - id returnValue = null; + cocoa.id getHelpAttribute (int childID) { + cocoa.id returnValue = null; AccessibleEvent event = new AccessibleEvent(this); event.childID = childID; for (int i = 0; i < accessibleListeners.size(); i++) { - AccessibleListener listener = (AccessibleListener) accessibleListeners.elementAt(i); + AccessibleListener listener = accessibleListeners.elementAt(i); listener.getHelp(event); } @@ -580,7 +581,7 @@ event.childID = childID; event.detail = -1; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getRole(event); } if (event.detail !is -1) { @@ -593,13 +594,13 @@ return returnValue; } - id getSubroleAttribute (int childID) { - id returnValue = null; + cocoa.id getSubroleAttribute (int childID) { + cocoa.id returnValue = null; AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = childID; event.detail = -1; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getRole(event); } if (event.detail !is -1) { @@ -613,13 +614,13 @@ return returnValue; } - id getRoleDescriptionAttribute (int childID) { - id returnValue = null; + cocoa.id getRoleDescriptionAttribute (int childID) { + cocoa.id returnValue = null; AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = childID; event.detail = -1; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getRole(event); } if (event.detail !is -1) { @@ -634,14 +635,14 @@ NSString nsAppSubrole = null; if (appSubrole !is null) nsAppSubrole = NSString.stringWith(appSubrole); - returnValue = new NSString(OS.NSAccessibilityRoleDescription (((nsAppRole !is null) ? nsAppRole.id : 0), (nsAppSubrole !is null) ? nsAppSubrole.id : 0)); + returnValue = new NSString(OS.NSAccessibilityRoleDescription (((nsAppRole !is null) ? nsAppRole.id : null), (nsAppSubrole !is null) ? nsAppSubrole.id : null)); } return returnValue; } - id getTitleAttribute (int childID) { + cocoa.id getTitleAttribute (int childID) { - id returnValue = null;//NSString.stringWith(""); + cocoa.id returnValue = null;//NSString.stringWith(""); /* * Feature of the Macintosh. The text of a Label is returned in its value, @@ -651,7 +652,7 @@ roleEvent.childID = childID; roleEvent.detail = -1; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getRole(roleEvent); } if (roleEvent.detail !is ACC.ROLE_LABEL) { @@ -659,7 +660,7 @@ event.childID = childID; event.result = null; for (int i = 0; i < accessibleListeners.size(); i++) { - AccessibleListener listener = (AccessibleListener) accessibleListeners.elementAt(i); + AccessibleListener listener = accessibleListeners.elementAt(i); listener.getName(event); } @@ -669,14 +670,14 @@ return returnValue; } - id getValueAttribute (int childID) { + cocoa.id getValueAttribute (int childID) { id returnValue = null; AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = childID; event.detail = -1; event.result = null; //TODO: could pass the OS value to the app for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getRole(event); listener.getValue(event); } @@ -709,7 +710,7 @@ AccessibleControlEvent ace = new AccessibleControlEvent(this); ace.childID = -4; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getSelection(ace); } if (ace.childID >= ACC.CHILDID_SELF) { @@ -732,7 +733,7 @@ e.childID = childID; e.result = null; for (int i = 0; i < accessibleListeners.size(); i++) { - AccessibleListener listener = (AccessibleListener) accessibleListeners.elementAt(i); + AccessibleListener listener = accessibleListeners.elementAt(i); listener.getName(e); } if (e.result !is null) { @@ -746,23 +747,23 @@ return returnValue; } - id getEnabledAttribute (int childID) { + cocoa.id getEnabledAttribute (int childID) { AccessibleControlEvent event = new AccessibleControlEvent(this); event.detail = -1; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getState(event); } return NSNumber.numberWithBool(control.isEnabled()); } - id getFocusedAttribute (int childID) { + cocoa.id getFocusedAttribute (int childID) { AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = ACC.CHILDID_MULTIPLE; // set to invalid value, to test if the application sets it in getFocus() event.accessible = null; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getFocus(event); } @@ -792,7 +793,7 @@ return NSNumber.numberWithBool(hasFocus); } - id getParentAttribute (int childID) { + cocoa.id getParentAttribute (int childID) { // Returning null here means 'let Cocoa figure it out.' if (childID is ACC.CHILDID_SELF) return null; @@ -800,19 +801,19 @@ return new id(OS.NSAccessibilityUnignoredAncestor(control.view.id)); } - id getChildrenAttribute (int childID) { - id returnValue = null; + cocoa.id getChildrenAttribute (int childID) { + cocoa.id returnValue = null; if (childID is ACC.CHILDID_SELF) { AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = childID; event.detail = -1; // set to impossible value to test if app resets for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getChildCount(event); } if (event.detail > 0) { for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getChildren(event); } Object [] appChildren = event.children; @@ -822,15 +823,15 @@ for (int i = 0; i < appChildren.length; i++) { Object child = appChildren[i]; - if (child instanceof Integer) { - id accChild = childIDToOs(((Integer)child).intValue()); + if (cast(Integer) child) { + id accChild = childIDToOs((cast(Integer)child).intValue()); childArray.addObject(accChild); } else { - childArray.addObject(((Accessible)child).control.view); + childArray.addObject((cast(Accessible)child).control.view); } } - returnValue = new id(OS.NSAccessibilityUnignoredChildren(childArray.id)); + returnValue = new cocoa.id(OS.NSAccessibilityUnignoredChildren(childArray.id)); } } } else { @@ -844,19 +845,19 @@ return returnValue; } - id getTabsAttribute (int childID) { - id returnValue = null; + cocoa.id getTabsAttribute (int childID) { + cocoa.id returnValue = null; if (childID is ACC.CHILDID_SELF) { AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = childID; event.detail = -1; // set to impossible value to test if app resets for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getChildCount(event); } if (event.detail > 0) { for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getChildren(event); } Object [] appChildren = event.children; @@ -866,25 +867,25 @@ for (int i = 0; i < appChildren.length; i++) { Object child = appChildren[i]; - if (child instanceof Integer) { - int subChildID = ((Integer)child).intValue(); + if (cast(Integer)child) { + int subChildID = (cast(Integer)child).intValue(); event.childID = subChildID; event.detail = -1; for (int j = 0; j < accessibleControlListeners.size(); j++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(j); + AccessibleControlListener listener = accessibleControlListeners.elementAt(j); listener.getRole(event); } if (event.detail is ACC.ROLE_TABITEM) { - id accChild = childIDToOs(((Integer)child).intValue()); + cocoa.id accChild = childIDToOs((cast(Integer)child).intValue()); childArray.addObject(accChild); } } else { - childArray.addObject(((Accessible)child).control.view); + childArray.addObject((cast(Accessible)child).control.view); } } - returnValue = new id(OS.NSAccessibilityUnignoredChildren(childArray.id)); + returnValue = new cocoa.id(OS.NSAccessibilityUnignoredChildren(childArray.id)); } } } else { @@ -898,28 +899,28 @@ return returnValue; } - id getWindowAttribute (int childID) { + cocoa.id getWindowAttribute (int childID) { return control.view.window(); } - id getTopLevelUIElementAttribute (int childID) { + cocoa.id getTopLevelUIElementAttribute (int childID) { return control.view.window(); } - id getPositionAttribute (int childID) { - id returnValue = null; + cocoa.id getPositionAttribute (int childID) { + cocoa.id returnValue = null; AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = childID; event.width = -1; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getLocation(event); } Monitor primaryMonitor = Display.getCurrent().getPrimaryMonitor(); - NSPoint osPositionAttribute = new NSPoint (); + NSPoint osPositionAttribute = NSPoint (); if (event.width !is -1) { // The point returned is the lower-left coordinate of the widget in lower-left relative screen coordinates. osPositionAttribute.x = event.x; @@ -933,7 +934,7 @@ if (control.getParent() !is null) pt = control.getParent().toDisplay(location.x, location.y); else - pt = ((Shell)control).toDisplay(location.x, location.y); + pt = (cast(Shell)control).toDisplay(location.x, location.y); osPositionAttribute.x = pt.x; osPositionAttribute.y = pt.y; @@ -944,18 +945,18 @@ return returnValue; } - id getSizeAttribute (int childID) { - id returnValue = null; + cocoa.id getSizeAttribute (int childID) { + cocoa.id returnValue = null; AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = childID; event.width = -1; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getLocation(event); } - NSSize controlSize = new NSSize (); + NSSize controlSize = NSSize (); if (event.width !is -1) { controlSize.width = event.width; controlSize.height = event.height; @@ -970,13 +971,13 @@ return returnValue; } - id getDescriptionAttribute (int childID) { + cocoa.id getDescriptionAttribute (int childID) { AccessibleEvent event = new AccessibleEvent(this); event.childID = childID; event.result = null; - id returnValue = null; + cocoa.id returnValue = null; for (int i = 0; i < accessibleListeners.size(); i++) { - AccessibleListener listener = (AccessibleListener) accessibleListeners.elementAt(i); + AccessibleListener listener = accessibleListeners.elementAt(i); listener.getDescription(event); } @@ -984,26 +985,26 @@ // If no description was provided, try the name. if (returnValue is null) { - if (control instanceof Composite) returnValue = NSString.stringWith(""); + if (cast(Composite) control) returnValue = NSString.stringWith(""); } return returnValue; } - id getInsertionPointLineNumberAttribute (int childID) { - id returnValue = null; + cocoa.id getInsertionPointLineNumberAttribute (int childID) { + cocoa.id returnValue = null; AccessibleControlEvent controlEvent = new AccessibleControlEvent(this); controlEvent.childID = childID; controlEvent.result = null; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getValue(controlEvent); } AccessibleTextEvent textEvent = new AccessibleTextEvent(this); textEvent.childID = childID; textEvent.offset = -1; for (int i = 0; i < accessibleTextListeners.size(); i++) { - AccessibleTextListener listener = (AccessibleTextListener) accessibleTextListeners.elementAt(i); + AccessibleTextListener listener = accessibleTextListeners.elementAt(i); listener.getCaretOffset(textEvent); } if (controlEvent.result !is null && textEvent.offset !is -1) { @@ -1013,13 +1014,13 @@ return returnValue; } - id getNumberOfCharactersAttribute (int childID) { - id returnValue = null; + cocoa.id getNumberOfCharactersAttribute (int childID) { + cocoa.id returnValue = null; AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = childID; event.result = null; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getValue(event); } String appValue = event.result; @@ -1029,18 +1030,18 @@ return returnValue; } - id getRangeForLineParameterizedAttribute (id parameter, int childID) { - id returnValue = null; + cocoa.id getRangeForLineParameterizedAttribute (cocoa.id parameter, int childID) { + cocoa.id returnValue = null; // The parameter is an NSNumber with the line number. NSNumber lineNumberObj = new NSNumber(parameter.id); int lineNumber = lineNumberObj.intValue(); - System.out.println("Line number = " + lineNumber); + System.Out.println("Line number = " ~ lineNumber); AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = childID; event.result = null; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getValue(event); } if (event.result !is null) { @@ -1052,14 +1053,14 @@ return returnValue; } - id getSelectedTextAttribute (int childID) { - id returnValue = NSString.stringWith(""); + cocoa.id getSelectedTextAttribute (int childID) { + cocoa.id returnValue = NSString.stringWith(""); AccessibleTextEvent event = new AccessibleTextEvent(this); event.childID = childID; event.offset = -1; event.length = -1; for (int i = 0; i < accessibleTextListeners.size(); i++) { - AccessibleTextListener listener = (AccessibleTextListener) accessibleTextListeners.elementAt(i); + AccessibleTextListener listener = accessibleTextListeners.elementAt(i); listener.getSelectionRange(event); } int offset = event.offset; @@ -1069,7 +1070,7 @@ event2.childID = event.childID; event2.result = null; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getValue(event2); } String appValue = event2.result; @@ -1080,14 +1081,14 @@ return returnValue; } - id getSelectedTextRangeAttribute (int childID) { - id returnValue = null; + cocoa.id getSelectedTextRangeAttribute (int childID) { + cocoa.id returnValue = null; AccessibleTextEvent event = new AccessibleTextEvent(this); event.childID = childID; event.offset = -1; event.length = 0; for (int i = 0; i < accessibleTextListeners.size(); i++) { - AccessibleTextListener listener = (AccessibleTextListener) accessibleTextListeners.elementAt(i); + AccessibleTextListener listener = accessibleTextListeners.elementAt(i); listener.getSelectionRange(event); } if (event.offset !is -1) { @@ -1099,8 +1100,8 @@ return returnValue; } - id getStringForRangeAttribute (id parameter, int childID) { - id returnValue = null; + cocoa.id getStringForRangeAttribute (cocoa.id parameter, int childID) { + cocoa.id returnValue = null; // Parameter is an NSRange wrapped in an NSValue. NSValue parameterObject = new NSValue(parameter.id); @@ -1109,7 +1110,7 @@ event.childID = childID; event.result = null; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getValue(event); } String appValue = event.result; @@ -1121,7 +1122,7 @@ return returnValue; } - id getSelectedTextRangesAttribute (int childID) { + cocoa.id getSelectedTextRangesAttribute (int childID) { NSMutableArray returnValue = null; AccessibleTextEvent event = new AccessibleTextEvent(this); event.childID = childID; @@ -1129,7 +1130,7 @@ event.length = 0; for (int i = 0; i < accessibleTextListeners.size(); i++) { - AccessibleTextListener listener = (AccessibleTextListener) accessibleTextListeners.elementAt(i); + AccessibleTextListener listener = accessibleTextListeners.elementAt(i); listener.getSelectionRange(event); } @@ -1144,12 +1145,12 @@ return returnValue; } - id getVisibleCharacterRangeAttribute (int childID) { + cocoa.id getVisibleCharacterRangeAttribute (int childID) { AccessibleControlEvent event = new AccessibleControlEvent(this); event.childID = childID; event.result = null; for (int i = 0; i < accessibleControlListeners.size(); i++) { - AccessibleControlListener listener = (AccessibleControlListener) accessibleControlListeners.elementAt(i); + AccessibleControlListener listener = accessibleControlListeners.elementAt(i); listener.getValue(event); } @@ -1287,8 +1288,8 @@ } static NSArray retainedAutoreleased(NSArray inObject) { - id temp = inObject.retain(); - id temp2 = new NSObject(temp.id).autorelease(); + cocoa.id temp = inObject.retain(); + cocoa.id temp2 = (new NSObject(temp.id)).autorelease(); return new NSArray(temp2.id); } @@ -1382,17 +1383,17 @@ OS.NSAccessibilityPostNotification(control.view.id, OS.NSAccessibilitySelectedTextChangedNotification.id); } - id childIDToOs(int childID) { + cocoa.id childIDToOs(int childID) { if (childID is ACC.CHILDID_SELF) { return control.view; } /* Check cache for childID, if found, return corresponding osChildID. */ - SWTAccessibleDelegate childRef = (SWTAccessibleDelegate) children.get(new Integer(childID)); + SWTAccessibleDelegate childRef = children.get(childID); if (childRef is null) { childRef = new SWTAccessibleDelegate(this, childID); - children.put(new Integer(childID), childRef); + children.put(childID, childRef); } return childRef; diff -r 4444d15131d5 -r 6d9ec9ccdcdd dwt/internal/Lock.d --- a/dwt/internal/Lock.d Mon Dec 08 22:02:10 2008 +0100 +++ b/dwt/internal/Lock.d Tue Dec 09 21:35:30 2008 +0100 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. + * Copyright (c) 2000, 2005 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -7,7 +7,6 @@ * * Contributors: * IBM Corporation - initial API and implementation - * * Port to the D programming language: * Frank Benoit *******************************************************************************/ @@ -16,75 +15,59 @@ import tango.core.Thread; import tango.core.sync.Mutex; import tango.core.sync.Condition; -import tango.core.Exception; - -import dwt.dwthelper.utils; /** - * Instances of this represent a recursive monitor. Note that this - * is an empty implementation which does not actually perform locking. + * Instance of this represent a recursive monitor. */ -public class Lock -{ +public class Lock { + int count, waitCount; + Thread owner; Mutex mutex; Condition cond; - public this () - { + public this() { mutex = new Mutex; cond = new Condition(mutex); } +/** + * Locks the monitor and returns the lock count. If + * the lock is owned by another thread, wait until + * the lock is released. + * + * @return the lock count + */ +public int lock() { + synchronized (mutex) { + Thread current = Thread.getThis(); + if (owner !is current) { + waitCount++; + while (count > 0) { + try { + cond.wait(); + } catch (SyncException e) { + /* Wait forever, just like synchronized blocks */ + } + } + --waitCount; + owner = current; + } + return ++count; + } +} - /** - * Locks the monitor and returns the lock count. If - * the lock is owned by another thread, wait until - * the lock is released. - * - * @return the lock count - */ - public int lock () - { - synchronized (mutex) - { - Thread current = Thread.getThis(); - if (owner !is current) - { - waitCount++; - while (count > 0) - { - try - { - cond.wait(); - } - catch (SyncException e) - { - } - } - --waitCount; - owner = current; - } - return ++count; - } - } - - /** - * Unlocks the monitor. If the current thread is not - * the monitor owner, do nothing. - */ - public void unlock () - { - synchronized (mutex) - { - Thread current = Thread.getThis(); - if (owner is current) - { - if (--count is 0) - { - owner = null; - if (waitCount > 0) - cond.notifyAll(); - } +/** + * Unlocks the monitor. If the current thread is not + * the monitor owner, do nothing. + */ +public void unlock() { + synchronized (mutex) { + Thread current = Thread.getThis(); + if (owner is current) { + if (--count is 0) { + owner = null; + if (waitCount > 0) cond.notifyAll(); } } } } +} diff -r 4444d15131d5 -r 6d9ec9ccdcdd dwt/internal/Platform.d --- a/dwt/internal/Platform.d Mon Dec 08 22:02:10 2008 +0100 +++ b/dwt/internal/Platform.d Tue Dec 09 21:35:30 2008 +0100 @@ -14,6 +14,7 @@ module dwt.internal.Platform; import dwt.dwthelper.utils; +import dwt.internal.Lock; public class Platform { diff -r 4444d15131d5 -r 6d9ec9ccdcdd dwt/widgets/ToolTip.d --- a/dwt/widgets/ToolTip.d Mon Dec 08 22:02:10 2008 +0100 +++ b/dwt/widgets/ToolTip.d Tue Dec 09 21:35:30 2008 +0100 @@ -127,6 +127,8 @@ case DWT.Dispose: onDispose (event); break; case DWT.Paint: onPaint (event); break; case DWT.MouseDown: onMouseDown (event); break; + default: + assert(false); } } }; diff -r 4444d15131d5 -r 6d9ec9ccdcdd dwt/widgets/TrayItem.d --- a/dwt/widgets/TrayItem.d Mon Dec 08 22:02:10 2008 +0100 +++ b/dwt/widgets/TrayItem.d Tue Dec 09 21:35:30 2008 +0100 @@ -274,7 +274,7 @@ void register () { super.register (); display.addWidget (view, this); - display.addWidget (((NSControl)view).cell(), this); + display.addWidget ((cast(NSControl)view).cell(), this); } void releaseHandle () { diff -r 4444d15131d5 -r 6d9ec9ccdcdd dwt/widgets/TypedListener.d --- a/dwt/widgets/TypedListener.d Mon Dec 08 22:02:10 2008 +0100 +++ b/dwt/widgets/TypedListener.d Tue Dec 09 21:35:30 2008 +0100 @@ -297,6 +297,9 @@ e.doit = event.doit; break; } + + default: + assert(false); } }