PopupPanel 과 autoHide /
GWT 에서 PopupPanel 을 다양하게 사용할 수 있는데, 버튼을 눌렀을 때 popup 이 뜨고, 다시 버튼을 누르면 사라지는 작업도 가능하다.
그런데 문제는 PopupPanel 이 PopupPanel 이외의 영역에서 click 을 하면 사라지는 autoHide 기능을 켰을 때이다. 이 때 버튼을 누르게 되면, autoHide 의 영향으로 PopupPanel 이외의 영역에 click 을 한 것이기 때문에 PopupPanel 을 PopupPanel 을 close 하게 된다. 그런데 이 click 이 다시 button 에 event 를 전달해서 button click event 에 대한 처리를 하게 된다.(보통 button 이 click 될 때 show() 를 하기 때문에 사라졌다가 바로 다시 PopupPanel 이 뜨게 된다.)
이 때 이 button 부위를 click 했을 때는 autoHide 가 발동하지 않도록 하면 된다. 이것은
- addAutoHidePartner
를 이용해서 가능하다.
addAutoHidePartner 의 사용예제와 관련해서는 아래 링크를 참고하자.
PeriodPopup pp = new PeriodPopup();
private void init(){
pp.addAutoHidePartner(buttonRange.getElement());
}
@UiHandler("buttonRange")
void onClickRange(ClickEvent evt) {
pp.addCloseHandler(new CloseHandler() {
@Override
public void onClose(CloseEvent event) {
boolean t = event.isAutoClosed();
}
});
if(pp.isShowing()){
pp.hide();
}else{
pp.showRelativeTo(buttonRange);
}
}
댓글 없음:
댓글 쓰기