[컴][웹] GWT 의 history, places 사용법

GWT history button / back button




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(ValueChangeEvent event) {
    
    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 ValueChangeHandler historyHandler = new ValueChangeHandler<
        String>() {
    public void onValueChange(ValueChangeEvent event) {

        // 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);

댓글 없음:

댓글 쓰기