GWT 에서 History 를 넣는 방법
history 를 만들어 넣으면 back button 을 이용해서 이전 모습으로 돌아갈 수 있다.아래는 myButton 이라는 버튼을 눌렀을 때 history 를 넣는 방법이다. 아래 stack 을 보면 알지만 newItem() 을 호출하면, onValueChange() 가 호출된다. 이 onValueChange() 에서 button 이 click 됐을 때의 동작을 설정해 주면 된다.
그러니 단순하게 생각하면,
- 동작이 발생하는 곳에서 token 을 정해서 History.newItem() 을 호출하고,
- 실제 행해야 하는 동작은 ValueChangeHandler() 에서 구현해 주면(token 으로 구별한다.)
동작을 했을 때 history 가 만들어지면서 원하는 녀석이 동작하게 될 것이다.
@UiHandler("myButton") public void showExtend (ClickEvent event){ History.newItem(HistoryTokens.EXTEND); } public void onValueChange(ValueChangeEventevent) { String page = event.getValue().trim(); // Check if the token is null or empty if ((page == null) || (page.equals(""))){ } else if (page.equals(HistoryTokens.EXTEND)){ // do something ...
// Stack Examples.onValueChange(ValueChangeEvent<String>) line: 68 ValueChangeEvent<T>.dispatch(ValueChangeHandler<T>) line: 128 ValueChangeEvent<T>.dispatch(EventHandler) line: 1 ValueChangeEvent<T>(GwtEvent<H>).dispatch(Object) line: 1 EventBus.dispatchEvent(Event<H>, H) line: 40 HandlerManager$Bus(SimpleEventBus).doFire(Event<H>, Object) line: 193 HandlerManager$Bus(SimpleEventBus).fireEvent(Event<?>) line: 88 HandlerManager.fireEvent(GwtEvent<?>) line: 127 HistoryImplSafari(HistoryImpl).fireEvent(GwtEvent<?>) line: 87 ValueChangeEvent<T>.fire(HasValueChangeHandlers<T>, T) line: 43 HistoryImplSafari(HistoryImpl).fireHistoryChangedImpl(String) line: 94 HistoryImplSafari(HistoryImpl).newItem(String, boolean) line: 138 History.newItem(String, boolean) line: 210 History.newItem(String) line: 195 ExamplePanel.showExtend(ClickEvent) line: 135
아래처럼 token 에 따른 원하는 동작을 하도록 설정 해 주면 된다.
// Setup a history handler to reselect the associate menu item. final ValueChangeHandlerhistoryHandler = new ValueChangeHandler< String>() { public void onValueChange(ValueChangeEvent // Get the content widget associated with the history token. String token = event.getValue(); ContentWidget contentWidget = treeModel.getContentWidgetForToken( token); if (contentWidget == null) { return; } // do something you want } }; History.addValueChangeHandler(historyHandler);event) {
댓글 없음:
댓글 쓰기