diff options
author | Carolyn MacLeod <Carolyn_MacLeod@ca.ibm.com> | 2011-10-18 15:22:48 -0400 |
---|---|---|
committer | Carolyn MacLeod <Carolyn_MacLeod@ca.ibm.com> | 2011-10-18 15:40:27 -0400 |
commit | 7220efeeff3dfb0c07db88687ff4162a44c56c08 (patch) | |
tree | daeb7a9302411d33148ccb8bff82b888d5e111c3 | |
parent | e1548fc423794d2ecf29d4f9f0affcb6dbd5f5e0 (diff) | |
download | eclipse.platform.swt-7220efeeff3dfb0c07db88687ff4162a44c56c08.tar.gz eclipse.platform.swt-7220efeeff3dfb0c07db88687ff4162a44c56c08.tar.xz eclipse.platform.swt-7220efeeff3dfb0c07db88687ff4162a44c56c08.zip |
Bug 346517 - Add accessible keyboard shortcut to TabFolder and
CTabFolder
5 files changed, 38 insertions, 4 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Accessible.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Accessible.java index 0cf345d1a9..8442d20531 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Accessible.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/win32/org/eclipse/swt/accessibility/Accessible.java @@ -2331,7 +2331,8 @@ public class Accessible { /* Get the default keyboard shortcut from the OS. */ code = iaccessible.get_accKeyboardShortcut(varChild, pszKeyboardShortcut); if (code == COM.E_INVALIDARG) code = COM.S_FALSE; // proxy doesn't know about app childID - if (accessibleListeners.size() == 0) return code; + /* Process TabFolder even if there are no apps listening. */ + if (accessibleListeners.size() == 0 && !(control instanceof TabFolder)) return code; if (code == COM.S_OK) { int /*long*/[] pKeyboardShortcut = new int /*long*/[1]; COM.MoveMemory(pKeyboardShortcut, pszKeyboardShortcut, OS.PTR_SIZEOF); @@ -2347,6 +2348,10 @@ public class Accessible { AccessibleEvent event = new AccessibleEvent(this); event.childID = osToChildID(v.lVal); event.result = osKeyboardShortcut; + /* SWT TabFolders use Ctrl+PageDown to switch pages (not Ctrl+Tab). */ + if (v.lVal == COM.CHILDID_SELF && control instanceof TabFolder) { + event.result = SWT.getMessage ("SWT_SwitchPage_Shortcut"); //$NON-NLS-1$ + } for (int i = 0; i < accessibleListeners.size(); i++) { AccessibleListener listener = (AccessibleListener) accessibleListeners.elementAt(i); listener.getKeyboardShortcut(event); diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java index f9f31b7a0c..66bc8abdad 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java @@ -1034,12 +1034,12 @@ void initAccessible() { if (text != null) { char mnemonic = _findMnemonic(text); if (mnemonic != '\0') { - shortcut = "Alt+"+mnemonic; //$NON-NLS-1$ + shortcut = SWT.getMessage ("SWT_Page_Mnemonic", new Object[] {new Character(mnemonic)}); //$NON-NLS-1$ } } } if (childID == ACC.CHILDID_SELF) { - shortcut = "Ctrl+PageDown"; //$NON-NLS-1$ + shortcut = SWT.getMessage ("SWT_SwitchPage_Shortcut"); //$NON-NLS-1$ } e.result = shortcut; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java index 7a9a4a427c..399bf07e82 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java @@ -4139,7 +4139,24 @@ static String findErrorText (int code) { public static String getMessage(String key) { return Compatibility.getMessage(key); } - + +/** + * Returns the NLS'ed message for the given arguments. + * + * @param key the key to look up + * @param args the parameters to insert into the message + * @return the message for the given parameterized key + * + * @exception IllegalArgumentException <ul> + * <li>ERROR_NULL_ARGUMENT - if the key or args are null</li> + * </ul> + * + * @since 3.8 + */ +public static String getMessage(String key, Object[] args) { + return Compatibility.getMessage(key, args); +} + /** * Returns the SWT platform name. * Examples: "win32", "motif", "gtk", "photon", "carbon", "cocoa", "wpf" diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages.properties b/bundles/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages.properties index d212d17971..a5c0a0f9f4 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages.properties +++ b/bundles/org.eclipse.swt/Eclipse SWT/common_j2se/org/eclipse/swt/internal/SWTMessages.properties @@ -65,6 +65,8 @@ SWT_Minimize=Minimize SWT_Maximize=Maximize SWT_Restore=Restore SWT_ShowList=Show List +SWT_Page_Mnemonic=Alt+{0} +SWT_SwitchPage_Shortcut=Ctrl+PageDown SWT_FileDownload=File Download SWT_Download_Error=Error occurred, download not completed SWT_Download_File=Download: {0} diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TabFolder.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TabFolder.java index 2f03875289..f469bcdd25 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TabFolder.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TabFolder.java @@ -869,6 +869,16 @@ LRESULT WM_GETDLGCODE (int /*long*/ wParam, int /*long*/ lParam) { return new LRESULT (OS.DLGC_BUTTON | OS.DLGC_WANTARROWS); } +LRESULT WM_GETOBJECT (int /*long*/ wParam, int /*long*/ lParam) { + /* + * Ensure that there is an accessible object created for this + * control because support for publishing the keyboard shortcut + * for page switching is implemented in the accessibility package. + */ + if (accessible == null) accessible = new_Accessible (this); + return super.WM_GETOBJECT (wParam, lParam); +} + LRESULT WM_KEYDOWN (int /*long*/ wParam, int /*long*/ lParam) { LRESULT result = super.WM_KEYDOWN (wParam, lParam); if (result != null) return result; |