package org.opennms.features.gwt.graph.resource.list.client.presenter; import java.util.ArrayList; import java.util.List; import org.opennms.features.gwt.graph.resource.list.client.presenter.DefaultResourceListPresenter.SearchPopupDisplay; import org.opennms.features.gwt.graph.resource.list.client.view.ReportSelectListView; import org.opennms.features.gwt.graph.resource.list.client.view.ResourceListItem; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.event.dom.client.KeyPressEvent; import com.google.gwt.event.dom.client.KeyPressHandler; import com.google.gwt.user.client.Window.Location; import com.google.gwt.user.client.ui.HasWidgets; public class ReportSelectListPresenter implements Presenter, ReportSelectListView.Presenter<ResourceListItem> { private ReportSelectListView<ResourceListItem> m_view; private SearchPopupDisplay m_searchPopup; private String m_baseUrl; public ReportSelectListPresenter(ReportSelectListView<ResourceListItem> view, SearchPopupDisplay searchView, String baseUrl) { setView(view); getView().setPresenter(this); initializeSearchPopup(searchView); m_baseUrl = baseUrl; } private void initializeSearchPopup(SearchPopupDisplay searchPopupView) { m_searchPopup = searchPopupView; m_searchPopup.setHeightOffset(425); m_searchPopup.setTargetWidget(getView().searchPopupTarget()); m_searchPopup.getSearchConfirmBtn().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { m_searchPopup.hideSearchPopup(); getView().setDataList(filterList(m_searchPopup.getSearchText(), getView().getDataList())); } }); m_searchPopup.getCancelBtn().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { m_searchPopup.hideSearchPopup(); } }); m_searchPopup.getTextBox().addKeyPressHandler(new KeyPressHandler() { @Override public void onKeyPress(KeyPressEvent event) { if(event.getCharCode() == KeyCodes.KEY_ENTER) { m_searchPopup.hideSearchPopup(); getView().setDataList(filterList(m_searchPopup.getSearchText(), getView().getDataList())); } } }); } @Override public void go(HasWidgets container) { container.clear(); container.add(getView().asWidget()); } @Override public void onGraphButtonClick() { List<ResourceListItem> reports = getView().getSelectedReports(); if(reports != null) { buildUrlAndGoToGraphPage(reports); } else { getView().showWarning(); } } private void buildUrlAndGoToGraphPage(List<ResourceListItem> reports) { StringBuilder sb = new StringBuilder(); sb.append(m_baseUrl + "graph/results.htm?reports=all&resourceId="); boolean first = true; for(ResourceListItem item : reports) { if(!first) { sb.append("&resourceId="); } sb.append(item.getId()); first = false; } Location.assign(sb.toString()); } @Override public void onClearSelectionButtonClick() { getView().clearAllSelections(); } @Override public void onSearchButtonClick() { m_searchPopup.showSearchPopup(); } private List<ResourceListItem> filterList(String searchText, List<ResourceListItem> dataList) { List<ResourceListItem> list = new ArrayList<ResourceListItem>(); for(ResourceListItem item : dataList) { if(item.getValue().toLowerCase().contains(searchText.toLowerCase())) { list.add(item); } } return list; } public void setView(ReportSelectListView<ResourceListItem> view) { m_view = view; } public ReportSelectListView<ResourceListItem> getView() { return m_view; } @Override public void onGraphAllButtonClick() { List<ResourceListItem> reports = getView().getAllReports(); buildUrlAndGoToGraphPage(reports); } }