2014-04-20 2 views
0

smartGWT CloseClickHandler을 사용하는 데 문제가 있습니다. 탭에 추가했는데 작동하지만 좋은 점은 그 문제가 있다는 것입니다. 이벤트를 수행하기 전에 탭을 삭제해야합니다. 원하는 사용자가 확인 창을 표시하여 사용자가 탭을 닫으 려 할 수 있도록 할 것입니다. 그래서 탭을 삭제하거나 숨기기 전에 제 코드를 수행 할 수있는 핸들러가 있습니까? 아니면이 상황을 처리 할 수있는 방법이 있습니까? 탭 CloseClickHandler?smartGwt close clickHandler

내 코드는 다음과 같습니다

tabSet = new TabSet(); 
    tabSet .setWidth100(); 
    tabSet .setOverflow(Overflow.HIDDEN); 
    tabSet .setTabBarThickness(23); 
    tabSet .setHeight(23); 
    tabSet .setBackgroundColor("#e1dfdf"); 
    tabSet .setCanCloseTabs(true); 
    tabSet .setCloseTabIcon("icons/close_icon.png"); 
    tabSet .setCloseTabIconSize(12); 
    tabSet .addCloseClickHandler(new CloseClickHandler() { 

     public void onCloseClick(TabCloseClickEvent event) { 

      final int tabIndex = ((MyTab)event.getTab()).getId(); 

      final MyTab = (MyTab)tabSet.getTab(tabIndex); 
      int tabId = tab.getTabId(); 
      int tabType = getType(); 
      presenter.removeBasket(tabId, tabType); 

     } 
    }); 

답변

1

이 하나를 시도하십시오.

먼저 TabCloseClickEvent을 취소 한 다음 원하는대로 수행하십시오.

tabSet.addCloseClickHandler(new com.smartgwt.client.widgets.tab.events.CloseClickHandler() { 

    @Override 
    public void onCloseClick(TabCloseClickEvent event) { 
     event.cancel(); 

     final Tab tab = event.getTab(); 

     SC.confirm("Are you sure? You want to delete " + tab.getTitle()+" tab.", 
       new BooleanCallback() { 

        @Override 
        public void execute(Boolean value) { 
         if (value != null && value) { 
          tabSet.removeTab(tab); 
         } 

        } 
       }); 

    } 
});