Java tutorial
/* * Copyright 2010 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.kie.workbench.common.screens.search.client.widgets; import java.util.Collections; import java.util.Date; import com.google.gwt.cell.client.DateCell; import com.google.gwt.dom.client.Style; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.user.cellview.client.Column; import com.google.gwt.user.client.ui.Image; import com.google.gwt.view.client.AsyncDataProvider; import com.google.gwt.view.client.HasData; import org.jboss.errai.common.client.api.RemoteCallback; import org.jboss.errai.ioc.client.container.IOC; import org.kie.workbench.common.screens.search.client.resources.i18n.Constants; import org.kie.workbench.common.screens.search.client.resources.images.ImageResources; import org.kie.workbench.common.screens.search.model.QueryMetadataPageRequest; import org.kie.workbench.common.screens.search.model.SearchPageRow; import org.kie.workbench.common.screens.search.model.SearchTermPageRequest; import org.kie.workbench.common.screens.search.service.SearchService; import org.kie.workbench.common.widgets.client.tables.AbstractPathPagedTable; import org.uberfire.client.workbench.type.ClientResourceType; import org.uberfire.client.workbench.type.ClientTypeRegistry; import org.uberfire.ext.widgets.table.client.CheckboxCellImpl; import org.uberfire.ext.widgets.common.client.tables.ComparableImageResource; import org.uberfire.ext.widgets.common.client.tables.ComparableImageResourceCell; import org.uberfire.ext.widgets.common.client.tables.TitledTextCell; import org.uberfire.ext.widgets.common.client.tables.TitledTextColumn; import org.uberfire.paging.PageResponse; import static org.jboss.errai.bus.client.api.base.MessageBuilder.*; /** * Widget with a table of Assets. */ public class SearchResultTable extends AbstractPathPagedTable<SearchPageRow> { private static final int PAGE_SIZE = 10; private ClientTypeRegistry clientTypeRegistry = null; public SearchResultTable() { super(PAGE_SIZE); setDataProvider(new AsyncDataProvider<SearchPageRow>() { protected void onRangeChanged(HasData<SearchPageRow> display) { updateRowCount(0, true); updateRowData(0, Collections.<SearchPageRow>emptyList()); } }); setTableStyle(); } public SearchResultTable(final QueryMetadataPageRequest queryRequest) { super(PAGE_SIZE); if (queryRequest.getPageSize() == null) { queryRequest.setPageSize(PAGE_SIZE); } setDataProvider(new AsyncDataProvider<SearchPageRow>() { protected void onRangeChanged(HasData<SearchPageRow> display) { queryRequest.setStartRowIndex(dataGrid.getPageStart()); queryRequest.setPageSize(dataGrid.getPageSize()); createCall(new RemoteCallback<PageResponse<SearchPageRow>>() { public void callback(final PageResponse<SearchPageRow> response) { updateRowCount(response.getTotalRowSize(), response.isTotalRowSizeExact()); updateRowData(response.getStartRowIndex(), response.getPageRowList()); } }, SearchService.class).queryMetadata(queryRequest); } }); setTableStyle(); } public SearchResultTable(final SearchTermPageRequest searchRequest) { super(PAGE_SIZE); if (searchRequest.getPageSize() == null) { searchRequest.setPageSize(PAGE_SIZE); } setDataProvider(new AsyncDataProvider<SearchPageRow>() { protected void onRangeChanged(HasData<SearchPageRow> display) { searchRequest.setStartRowIndex(dataGrid.getPageStart()); searchRequest.setPageSize(dataGrid.getPageSize()); createCall(new RemoteCallback<PageResponse<SearchPageRow>>() { public void callback(final PageResponse<SearchPageRow> response) { updateRowCount(response.getTotalRowSize(), response.isTotalRowSizeExact()); updateRowData(response.getStartRowIndex(), response.getPageRowList()); } }, SearchService.class).fullTextSearch(searchRequest); } }); setTableStyle(); } protected void setTableStyle() { final Style style = dataGrid.getElement().getStyle(); style.setMarginLeft(0, Style.Unit.PX); style.setMarginRight(0, Style.Unit.PX); } @Override protected void addAncillaryColumns() { final Column<SearchPageRow, ComparableImageResource> formatColumn = new Column<SearchPageRow, ComparableImageResource>( new ComparableImageResourceCell()) { public ComparableImageResource getValue(SearchPageRow row) { final ClientResourceType associatedType = getClientTypeRegistry().resolve(row.getPath()); final Image icon; if (associatedType.getIcon() == null || !(associatedType.getIcon() instanceof Image)) { icon = new Image(ImageResources.INSTANCE.file()); } else { icon = (Image) associatedType.getIcon(); } return new ComparableImageResource(associatedType.getShortName(), icon); } }; dataGrid.addColumn(formatColumn, Constants.INSTANCE.Format()); final TitledTextColumn<SearchPageRow> titleColumn = new TitledTextColumn<SearchPageRow>() { public TitledTextCell.TitledText getValue(SearchPageRow row) { return new TitledTextCell.TitledText(row.getPath().getFileName(), row.getAbbreviatedDescription()); } }; dataGrid.addColumn(titleColumn, Constants.INSTANCE.Name()); final Column<SearchPageRow, Date> createdDateColumn = new Column<SearchPageRow, Date>( new DateCell(DateTimeFormat.getFormat(DateTimeFormat.PredefinedFormat.DATE_TIME_MEDIUM))) { public Date getValue(SearchPageRow row) { return row.getCreatedDate(); } }; dataGrid.addColumn(createdDateColumn, Constants.INSTANCE.CreatedDate(), false); final Column<SearchPageRow, Date> lastModifiedColumn = new Column<SearchPageRow, Date>( new DateCell(DateTimeFormat.getFormat(DateTimeFormat.PredefinedFormat.DATE_TIME_MEDIUM))) { public Date getValue(final SearchPageRow row) { return row.getLastModified(); } }; dataGrid.addColumn(lastModifiedColumn, Constants.INSTANCE.LastModified()); final Column<SearchPageRow, Boolean> isDisabledColumn = new Column<SearchPageRow, Boolean>( new CheckboxCellImpl(true)) { public Boolean getValue(final SearchPageRow row) { return row.isDisabled(); } }; dataGrid.addColumn(isDisabledColumn, Constants.INSTANCE.Disabled(), false); } private ClientTypeRegistry getClientTypeRegistry() { if (clientTypeRegistry == null) { clientTypeRegistry = IOC.getBeanManager().lookupBean(ClientTypeRegistry.class).getInstance(); } return clientTypeRegistry; } }