수요일, 4월 08, 2009

RAP(RCP) 시작위치 조절(ApplicationWorkbenchWindowAdvisor#postWindowOpen() 고찰)

이것은 RCP도 동일하게 적용됩니다.

RAP가 처음 시작했을 때 보통 왼쪽 가장 자리에서 시작하게됩니다.
브라우저 제일 왼쪽에 딱 붙어서 시작하게 되는거지요.

이것을 화면 가운데로 혹은 원하는 곳으로 뛰어주게 하고 싶을 것 입니다.

이렇게요.

이것을 조절하고 싶을때는 WorkbenchWindowAdvisor를 상속받은 클래스 즉 보통 자동으로 생성되는 ApplicationWorkbenchWindowAdvisor#postWindowOpen() 메소드를 수정해 주면 되겠습니다. WorkbenchWindowAdvisor는 아는 것처럼 초기 원도우의 시작과 끝을 지정하고 어떻게 화면이 open되어야 하는지 조절하는 역할을 합니다.

그중 preWindowOpen() 메소드는 원도우가 어떻게 구성되어야 하는 것인지 정의하고(화면의 크기와 쿨바의 보이기 유무등), postWindowOpen()는 원도우가 오픈된 이후의 부가 적인 것들을 정의하게 되어 있습니다. 우리가 하려고하는 초기 위치 설정이라던가, 아래에 있는 것처럼 Preference 중에 우리가 원하는 것만 오픈한다 던가, RCP 일 경우 tray icon을 설정한다던가요.

진행하는 프로젝트의 코드는 다음과 같습니다.


위의 코드의 설명은 대락 Preference중에 ID가 com.mantech으로 시작하는 Preference만을 관리 하겠다는 것입니다. 나중에 Preference화면을 열었을때 com.mantech으로 시작하는 것만 열리겠지요. 이 코드를 사용하는 이유는 확장점중에 에디터나 ui를 사용할 경우 그 확장점에서 정의 preference도 나타나는데 이것을 지워주기 위함입니다.

그리고 두번째는 초기 시작 위치를 조절하는 것이지요. 시작 위치는 75,25만큼 이동해서 오픈되겠습니다. 중앙에 오픈하려면 창의 크기 자신의 크기를 계산한 다음에 이동해도 되겠지요. 자신의 초기 크기는 preWindowOpen에서 정의한 크기가 되겠구요.

마지막 세번째는 window가 오픈된 이후에 시작해 주어야할 Thread를 시작해 주었습니다. job을 이용해도 되겠습니다만... 혹은 ui와 상관없는 것이라면 확장점 org.eclipse.ui.startup를 사용해도 되겠습니다.

쓰다보니 굉장히 길어 졌네요. 이 부분도 좀더 안정적이고 멋진 제품을 만들기 위해서는 알아야 할 내용입니다. 위에서 설명한 것 이외에도 설명해야 할 부분이 많이 있습니다만 차차 하나씩 적어 보도록 하겠습니다.

댓글 없음:

댓글 쓰기