package org.opennms.features.gwt.ksc.combobox.client.presenter;
import java.util.ArrayList;
import java.util.List;
import org.opennms.features.gwt.ksc.combobox.client.view.KscComboboxView;
import org.opennms.features.gwt.ksc.combobox.client.view.KscComboboxViewImpl;
import org.opennms.features.gwt.ksc.combobox.client.view.KscReportDetail;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.user.client.Window.Location;
import com.google.gwt.user.client.ui.HasWidgets;
public class KscComboboxPresenter implements Presenter, KscComboboxView.Presenter<KscReportDetail> {
private KscComboboxView<KscReportDetail> m_view;
private List<KscReportDetail> m_kscReportDetails;
public KscComboboxPresenter(KscComboboxViewImpl view, JsArray<KscReportDetail> kscReportDetails) {
m_view = view;
m_view.setPresenter(this);
m_kscReportDetails = convertJsArrayToList(kscReportDetails);
}
@Override
public void onSearchButtonClicked() {
m_view.setDataList(filterResultsByName(m_view.getSearchText()));
}
private List<KscReportDetail> filterResultsByName(String searchText) {
List<KscReportDetail> list = new ArrayList<KscReportDetail>();
for(KscReportDetail detail : m_kscReportDetails) {
if(detail.getLabel().toLowerCase().contains(searchText.toLowerCase())) {
list.add(detail);
}
}
return list;
}
@Override
public void onEnterKeyEvent() {
m_view.setDataList(filterResultsByName(m_view.getSearchText()));
}
@Override
public void onKscReportSelected() {
StringBuilder urlBuilder = new StringBuilder();
urlBuilder.append(getBaseHref() + "KSC/customView.htm");
urlBuilder.append("?type=custom");
urlBuilder.append("&report=" + m_view.getSelectedReport().getId());
Location.assign(urlBuilder.toString());
}
@Override
public void go(HasWidgets container) {
container.clear();
container.add(m_view.asWidget());
}
private List<KscReportDetail> convertJsArrayToList(JsArray<KscReportDetail> kscReportDetails) {
List<KscReportDetail> m_list = new ArrayList<KscReportDetail>();
for(int i = 0; i < kscReportDetails.length(); i++) {
m_list.add(kscReportDetails.get(i));
}
return m_list;
}
public native final String getBaseHref() /*-{
try{
return $wnd.getBaseHref();
}catch(err){
return "";
}
}-*/;
}