All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.gwt.advanced.client.datamodel.TreeGridRow Maven / Gradle / Ivy

There is a newer version: 2.0.9
Show newest version
/*
 * Copyright 2008-2012 Sergey Skladchikov
 *
 * 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.gwt.advanced.client.datamodel;

/**
 * This is a tree index implementation for the tree grid data models.
 *
 * @author Sergey Skladchikov
 * @since 1.4.0
 */
public class TreeGridRow extends GridRow implements Pageable {
    /** parent index */
    private TreeGridRow parent;
    /** expanded node flag */
    private boolean expanded;
    /** row owner, i.e. grid model that contains the row */
    private Composite model;
    /** pageable delegate */
    private Pageable pageable;
    /** pager enabled flag */
    private boolean pagerEnabled;

    /**
     * Always throws UnsupportedOperationException.
     */
    public TreeGridRow() {
        throw new UnsupportedOperationException("Never use this constructor!");
    }

    /**
     * Creates an instnace of this class and initilizes the internal fields.
     *
     * @param model is a grid data model that contains this row.
     */
    protected TreeGridRow(final Composite model) {
        super();
        setModel(model);
        final TreeGridRow row = this;
        setPageable(new GridPagerModel(new SimpleGridDataModel(null) {
            public int getTotalRowCount() {
                return model.getTotalRowCount(row);
            }
        }));
    }

    /**
     * Getter for property 'parent'.
     *
     * @return Value for property 'parent'.
     */
    public TreeGridRow getParent() {
        return parent;
    }

    /**
     * Setter for property 'parent'.
     *
     * @param parent Value to set for property 'parent'.
     */
    public void setParent(TreeGridRow parent) {
        this.parent = parent;
    }

    /**
     * Gets a level number of this row trying to iterate through all the parents.
     *
     * @return a level number. 0 if it's a root row.
     */
    public int getLevel() {
        TreeGridRow parent = getParent();
        int count = 0;
        while(parent != null) {
            count++;
            parent = parent.getParent();
        }
        return count;
    }

    /**
     * Getter for property 'expanded'.
     *
     * @return Value for property 'expanded'.
     */
    public boolean isExpanded() {
        return expanded;
    }

    /**
     * Setter for property 'expanded'.
     *
     * @param expanded Value to set for property 'expanded'.
     */
    public void setExpanded(boolean expanded) {
        this.expanded = expanded;
    }

    /**
     * Getter for property 'pagerEnabled'.
     *
     * @return Value for property 'pagerEnabled'.
     */
    public boolean isPagerEnabled() {
        return pagerEnabled;
    }

    /**
     * Setter for property 'pagerEnabled'.
     *
     * @param pagerEnabled Value to set for property 'pagerEnabled'.
     */
    public void setPagerEnabled(boolean pagerEnabled) {
        this.pagerEnabled = pagerEnabled;
    }

    /** {@inheritDoc} */
    public void setCurrentPageNumber(int currentPageNumber) throws IllegalArgumentException {
        getPageable().setCurrentPageNumber(currentPageNumber);
    }

    /** {@inheritDoc} */
    public int getTotalPagesNumber() {
        return getPageable().getTotalPagesNumber();
    }

    /** {@inheritDoc} */
    public int getStartPage () {
        return getPageable().getStartPage();
    }

    /** {@inheritDoc} */
    public int getEndPage () {
        return getPageable().getEndPage();
    }

    /** {@inheritDoc} */
    public int getPageSize () {
        return getPageable().getPageSize();
    }

    /** {@inheritDoc} */
    public int getDisplayedPages() {
        return getPageable().getDisplayedPages();
    }

    /** {@inheritDoc} */
    public void setDisplayedPages(int displayedPages) {
        getPageable().setDisplayedPages(displayedPages);
    }

    /** {@inheritDoc} */
    public int getCurrentPageNumber() {
        return getPageable().getCurrentPageNumber();
    }

    /** {@inheritDoc} */
    public void setPageSize (int pageSize) {
        getPageable().setPageSize(pageSize);
    }

    /**
     * Getter for property 'model'.
     *
     * @return Value for property 'model'.
     */
    protected GridDataModel getModel() {
        return model;
    }

    /**
     * Setter for property 'model'.
     *
     * @param model Value to set for property 'model'.
     */
    protected void setModel(Composite model) {
        this.model = model;
    }

    /**
     * Getter for property 'pageable'.
     *
     * @return Value for property 'pageable'.
     */
    protected Pageable getPageable() {
        return pageable;
    }

    /**
     * Setter for property 'pageable'.
     *
     * @param pageable Value to set for property 'pageable'.
     */
    protected void setPageable(Pageable pageable) {
        if (pageable != null)
            this.pageable = pageable;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy