001/*
002 * #%L
003 * GwtMaterial
004 * %%
005 * Copyright (C) 2015 - 2016 GwtMaterialDesign
006 * %%
007 * Licensed under the Apache License, Version 2.0 (the "License");
008 * you may not use this file except in compliance with the License.
009 * You may obtain a copy of the License at
010 * 
011 *      http://www.apache.org/licenses/LICENSE-2.0
012 * 
013 * Unless required by applicable law or agreed to in writing, software
014 * distributed under the License is distributed on an "AS IS" BASIS,
015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016 * See the License for the specific language governing permissions and
017 * limitations under the License.
018 * #L%
019 */
020package gwt.material.design.client.ui.table;
021
022import gwt.material.design.client.data.DataSource;
023import gwt.material.design.client.data.infinite.HasLoader;
024import gwt.material.design.client.data.infinite.InfiniteDataView;
025import gwt.material.design.client.data.loader.LoadCallback;
026import gwt.material.design.client.data.loader.LoadConfig;
027
028/**
029 * "Infinite" Material data table extending {@link MaterialDataTable}.
030 *
031 * @author Ben Dol
032 *
033 * @see <a href="http://gwtmaterialdesign.github.io/gwt-material-demo/#datatable">Material Data Table</a>
034 * @see <a href="https://material.io/guidelines/components/data-tables.html">Material Design Specification</a>
035 */
036public class MaterialInfiniteDataTable<T> extends MaterialDataTable<T> implements HasLoader {
037
038    public MaterialInfiniteDataTable() {
039        super(new InfiniteDataView<>(100, new DataSource<T>() {
040            @Override
041            public void load(LoadConfig<T> loadConfig, LoadCallback<T> callback) {}
042            @Override
043            public boolean useRemoteSort() {
044                return false;
045            }
046        }));
047    }
048
049    public MaterialInfiniteDataTable(String name, int totalRows, int viewSize, DataSource<T> dataSource) {
050        super(new InfiniteDataView<>(name, totalRows, viewSize, dataSource));
051    }
052
053    public MaterialInfiniteDataTable(int totalRows, int viewSize, DataSource<T> dataSource) {
054        super(new InfiniteDataView<>(totalRows, viewSize, dataSource));
055    }
056
057    public MaterialInfiniteDataTable(TableScaffolding scaffolding, int totalRows, int viewSize,
058                                     DataSource<T> dataSource) {
059        super(new InfiniteDataView<>(totalRows, viewSize, dataSource), scaffolding);
060    }
061
062    @Override
063    public int getLoaderDelay() {
064        return ((InfiniteDataView<T>) view).getLoaderDelay();
065    }
066
067    @Override
068    public void setLoaderDelay(int loaderDelay) {
069        ((InfiniteDataView<T>) view).setLoaderDelay(loaderDelay);
070    }
071
072    @Override
073    public int getLoaderBuffer() {
074        return ((InfiniteDataView<T>) view).getLoaderBuffer();
075    }
076
077    @Override
078    public void setLoaderBuffer(int loaderBuffer) {
079        ((InfiniteDataView<T>) view).setLoaderBuffer(loaderBuffer);
080    }
081
082    @Override
083    public boolean isLoading() {
084        return ((InfiniteDataView<T>) view).isLoading();
085    }
086}