private RefreshSearchResultEvent createRefreshEvent() { RefreshSearchResultEvent refreshSearchResultEvent = new RefreshSearchResultEvent(); int cityIndex = getDisplay().getCitySelects().getSelectedIndex(); String city = getDisplay().getCitySelects().getValue(cityIndex); refreshSearchResultEvent.setCity(city); int categoryIndex = getDisplay().getCategoryTabPanel().getSelectedIndex(); Category category = Category.getDisplayOrder()[categoryIndex]; refreshSearchResultEvent.setCategory(category); int orderTypeIndex = getDisplay().getOrderTypeTabPanelList().get(category.name()).getSelectedIndex(); OrderType orderType = OrderType.getDisplayOrder()[orderTypeIndex]; refreshSearchResultEvent.setOrderType(orderType); boolean onlyToday = getDisplay().getOnlyTodayCheckBox().getValue(); refreshSearchResultEvent.setOnlyToday(onlyToday); // page PageListWidget pageList = getDisplay().getPageListWidgetList().get(category.getIdentify(orderType)); refreshSearchResultEvent.setCurrentPage(pageList.getCurrentPage()); return refreshSearchResultEvent; }
@Override protected void onBind() { registerHandler( getDisplay() .getCitySelects() .addChangeHandler( new ChangeHandler() { @Override public void onChange(ChangeEvent event) { eventBus.fireEvent(createRefreshEvent()); } })); registerHandler( getDisplay() .getOnlyTodayCheckBox() .addValueChangeHandler( new ValueChangeHandler<Boolean>() { @Override public void onValueChange(ValueChangeEvent<Boolean> event) { eventBus.fireEvent(createRefreshEvent()); } })); registerHandler( getDisplay() .getCategoryTabPanel() .addSelectionHandler( new SelectionHandler<Integer>() { @Override public void onSelection(SelectionEvent<Integer> event) { eventBus.fireEvent(createRefreshEvent()); } })); Collection<TabLayoutPanel> orderTypePanelList = getDisplay().getOrderTypeTabPanelList().values(); for (TabLayoutPanel orderTab : orderTypePanelList) { registerHandler( orderTab.addSelectionHandler( new SelectionHandler<Integer>() { @Override public void onSelection(SelectionEvent<Integer> event) { eventBus.fireEvent(createRefreshEvent()); } })); } // previous page Collection<PageListWidget> pageListWidgetList = getDisplay().getPageListWidgetList().values(); for (final PageListWidget page : pageListWidgetList) { // previous registerHandler( page.getPreviousPage() .addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { page.previousPage(); eventBus.fireEvent(createRefreshEvent()); } })); // next registerHandler( page.getNextPage() .addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { page.nextPage(); eventBus.fireEvent(createRefreshEvent()); } })); } // init load getDisplay() .getCategoryTabPanel() .addAttachHandler( new Handler() { @Override public void onAttachOrDetach(AttachEvent event) { RefreshSearchResultEvent refreshSearchResultEvent = new RefreshSearchResultEvent(); refreshSearchResultEvent.setCategory(Category.getDisplayOrder()[0]); refreshSearchResultEvent.setOrderType(OrderType.getDisplayOrder()[0]); // No city select refreshSearchResultEvent.setCity(""); refreshSearchResultEvent.setCurrentPage(1); refreshSearchResultEvent.setOnlyToday(false); eventBus.fireEvent(refreshSearchResultEvent); } }); registerHandler( getDisplay() .getCitySelects() .addAttachHandler( new Handler() { @Override public void onAttachOrDetach(AttachEvent event) { dispatch.execute( new GetCityNames(), new SimpleCallback<CityNames>() { @Override public void onSuccess(CityNames result) { ArrayList<Item> cityList = result.getCityList(); getDisplay().getCitySelects().clear(); for (Item city : cityList) { getDisplay() .getCitySelects() .addItem(city.getDisplayName(), city.getValue()); } } }); } })); // keyword search registerHandler( getDisplay() .getSearchButton() .addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { String value = getDisplay().getSearchTextBox().getText(); if (value == null || value.trim().isEmpty()) { // TODO: validate check return; } eventBus.fireEvent(createKeyworkSearchEvent()); } })); registerHandler( eventBus.addHandler( KeywordSearchEvent.getType(), new KeywordSearchHandler() { @Override public void onRefresh(KeywordSearchEvent event) { // select the first one. getDisplay().getCategoryTabPanel().selectTab(0); // hide and show getDisplay().getKeywordResultPanel().setVisible(true); getDisplay().getCategoryAllPanel().setVisible(false); } })); registerHandler( eventBus.addHandler( RefreshSearchResultEvent.getType(), new RefreshSearchResultHandler() { @Override public void onRefresh(RefreshSearchResultEvent event) { // hide and show getDisplay().getKeywordResultPanel().setVisible(false); getDisplay().getCategoryAllPanel().setVisible(true); } })); }