package org.opennms.features.gwt.graph.resource.list.client.view; import java.util.ArrayList; import java.util.List; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Overflow; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.LayoutPanel; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.view.client.MultiSelectionModel; import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.SelectionChangeEvent.Handler; public class ReportSelectListViewImpl extends Composite implements ReportSelectListView<ResourceListItem>{ private static ReportSelectListViewImplUiBinder uiBinder = GWT.create(ReportSelectListViewImplUiBinder.class); interface ReportSelectListViewImplUiBinder extends UiBinder<Widget, ReportSelectListViewImpl> { } @UiField LayoutPanel m_layoutPanel; @UiField FlowPanel m_treeContainer; @UiField Button m_removeButton; @UiField Button m_selectAllButton; @UiField Button m_graphButton; @UiField Button m_searchButton; @UiField Button m_graphAllButton; ReportSelectListCellTree m_reportCellTree; private List<ResourceListItem> m_dataList; private final MultiSelectionModel<ResourceListItem> m_selectionModel; private List<ResourceListItem> m_selectedReports; private Presenter<ResourceListItem> m_presenter; public ReportSelectListViewImpl(List<ResourceListItem> dataList) { m_dataList = dataList; m_selectionModel = new MultiSelectionModel<ResourceListItem>(); m_selectionModel.addSelectionChangeHandler(new Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { if(m_selectionModel.getSelectedSet().size() > 0) { m_selectedReports = new ArrayList<ResourceListItem>(m_selectionModel.getSelectedSet()); }else { m_selectedReports = null; } } }); initWidget(uiBinder.createAndBindUi(this)); m_layoutPanel.setSize("100%", "500px"); m_layoutPanel.getElement().getStyle().setOverflow(Overflow.AUTO); m_treeContainer.add(makeCellTree(m_dataList)); } private ReportSelectListCellTree makeCellTree(List<ResourceListItem> list) { return new ReportSelectListCellTree(list, m_selectionModel); } @UiHandler("m_graphButton") public void onGraphButtonClick(ClickEvent event) { m_presenter.onGraphButtonClick(); } @UiHandler("m_removeButton") public void onRemoveButtonClick(ClickEvent event) { m_presenter.onClearSelectionButtonClick(); } @UiHandler("m_selectAllButton") public void onSelectAllButtonClick(ClickEvent event) { for(ResourceListItem item : m_dataList) { m_selectionModel.setSelected(item, true); } } @UiHandler("m_searchButton") public void onSearchButtonClick(ClickEvent event) { m_presenter.onSearchButtonClick(); } @UiHandler("m_graphAllButton") public void onGraphAllClick(ClickEvent event) { m_presenter.onGraphAllButtonClick(); } @Override public void setDataList(List<ResourceListItem> dataList) { m_treeContainer.clear(); m_treeContainer.add(makeCellTree(dataList)); } @Override public List<ResourceListItem> getSelectedReports() { return m_selectedReports; } @Override public void setPresenter(Presenter<ResourceListItem> presenter) { m_presenter = presenter; } @Override public void clearAllSelections() { m_selectionModel.clear(); } @Override public void showWarning() { Window.alert("Please Select a Report to Graph"); } @Override public List<ResourceListItem> getDataList() { return m_dataList; } @Override public Widget searchPopupTarget() { return m_treeContainer.asWidget(); } @Override public List<ResourceListItem> getAllReports() { return m_dataList; } }