SWT에서 IME의 상태는 같은 Shell안에 있을 경우 보장 받습니다. 대부분의 셀 편집이나, 텍스트 필드들은 워크벤치 윈도우의 액티브 셸안에 있기 때문에, 한영상태를 유지하는데 문제가 없습니다. 그러나 입력 다이얼로그등이 열리는 순간 한영 상태를 잃게 되어 사용자의 시간을 많이 빼았게 됩니다. 이 문제를 해결 해 봅시다.

이 테크닉은 한글IME가 있는 윈도우즈 제품군에서만 확인되었습니다. 이 코드는 반드시 운영체제가 윈도우인지 체크하고 사용하세요. 다른 운영체제에서 실험 해 보신 분은 결과를 알려주시면 고맙겠습니다.

영문인지 확인하는 방법

Shell s = ...

boolean inEngilsh = s.getImeInputMode() == SWT.NONE;

영문으로 지정하는 방법

Shell s = ...

s.setImeInputMode(SWT.NONE);

한글인지 확인하는 방법

Shell s = ...

boolean inKorean = s.getImeInputMode() == SWT.Native;

한글로 지정하는 방법

Shell s = ...

s.setImeInputMode(SWT.ALPHA | SWT.PHONETIC);

그렇습니다. 이상합니다. 상식적으로는 setImeInputMode에서 SWT.NATIVE로 지정해야 할 것 같지만, 그렇게 해 보면 부작용으로 영어및 숫자가 전각으로 입력됩니다. 물론 이상하긴 합니다만, 우리 개발자들은 한글을 쓰는 서러움이 익숙하리라 믿습니다.

Posted by 지이이이율
,