:: ADVANCE ::

[Plug-in] Dialog 본문

Study/Eclipse

[Plug-in] Dialog

KSJ14 2015. 9. 17. 06:27
반응형

[Plug-in] Dialog


JFace 대화창


대화창의 동작을 바꾸기 위해 buttonPressed()를 오버라이딩 한다.

기본적으로 버튼을 클릭하자마자 대화창을 즉시 닫도록 구현되어 있다.

개발자 스스로 추가한 비 표준 버튼도 마찬가지이다. 만약 이러한 동작을 바꾸기를 원한다거나 대화창을 닫기 전에 일종의 과정을 진행하고자 한다면, 이 메소드를 오버라이딩 해야 한다.


 * buttonPressed()를 오버라이딩 하면 대화창은 구현부 마지막에서 super.buttonPressed()를 호출해야 닫힌다.




특정 버튼에 훅을 걸 수 있는 방법은 확인과 취소를 지원하는 대화창에서 okPressed()나 cancelPressed()를 오버라이딩하는 것으로 가능하다.


 ** 오버라이딩을 한다면 마지막에 꼭 부모의 메소드를 호출해야 한다.



createButtonsForButtonBar() 메소드는 지정된 대화창에서 생성한 버튼을 제어한다.

어느 대화창이던지 버튼을 바꾸고 싶다면, 이 메소드를 두어 작업할 수 있다.

MessageDialog는 예외. 메시지 대화창에서의 버튼을 훨씬 더 자주 바꾸길 원할 것이므로, 

이 대화창은 생성자에서 하위 클래스를 생성할 필요 없이 보여야 할 버튼을 명시하는 편리한 방법으로 제공한다.



대화창을 모달로 두어, 일단 대화창을 열면 이 대화창을 닫을 때까지 다른 윈도우로 포커스를 옮길 수 없도록 하기를 추천한다.

모달 대화창을 사용하는 코드를 작성하는 작업은 일반적으로 간단하다.

대화창이 보여지는 동안 사용자가 애플리케이션의 나머지 부분과 상호 작용을 할 수 없다는 사실이 확실하기 때문에.

-> 첫째, 부모 윈도우 없이 대화창을 여는 것은 비합리적이다.

--> 부모인 ApplicationWindow를 포함한다.

-> 둘째, 코드에서 기억해야 할 사항은 open() 블록을 호출하면, 이 메소드는 대화창에서 어떤 방식으로 없애기 전까지 반환하지 않는다.

--> open()은 정수를 반환. 이 정수는 클릭한 버튼을 가리키는 0부터 시작하는 인텍스이고

버튼을 클릭하지 않고 다른 수단으로 대화창을 닫을 경우 -1이 된다. (Esc를 누르는 경우)



[참고] SWT / JFace 인 액션 10장

반응형

'Study > Eclipse' 카테고리의 다른 글

[Plug-in] Dialog  (0) 2015.09.19
[Plug-in] Input Dialog  (0) 2015.09.19
[Plug-in] MessageDialog  (0) 2015.09.17
Comments