Package pivot.wtk

Source Code of pivot.wtk.TableViewHeader$TableViewHeaderListenerList

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you 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 pivot.wtk;

import pivot.util.ListenerList;
import pivot.wtk.content.TableViewHeaderDataRenderer;

/**
* Component representing a table view header.
*
* @author gbrown
*/
public class TableViewHeader extends Component {
    /**
     * Table view header data renderer interface.
     *
     * @author gbrown
     */
    public interface DataRenderer extends Renderer {
        public void render(Object data, TableViewHeader tableViewHeader, boolean highlighted);
    }

    /**
     * Table view header skin interface. Table view header skins must
     * implement this.
     *
     * @author gbrown
     */
    public interface Skin {
        public int getHeaderAt(int x);
        public Bounds getHeaderBounds(int index);
    }

    private static class TableViewHeaderListenerList extends ListenerList<TableViewHeaderListener>
        implements TableViewHeaderListener {
        public void tableViewChanged(TableViewHeader tableViewHeader,
            TableView previousTableView) {
            for (TableViewHeaderListener listener : this) {
                listener.tableViewChanged(tableViewHeader, previousTableView);
            }
        }

        public void dataRendererChanged(TableViewHeader tableViewHeader,
            TableViewHeader.DataRenderer previousDataRenderer) {
            for (TableViewHeaderListener listener : this) {
                listener.dataRendererChanged(tableViewHeader, previousDataRenderer);
            }
        }
    }

    private static class TableViewHeaderPressListenerList extends ListenerList<TableViewHeaderPressListener>
        implements TableViewHeaderPressListener {
        public void headerPressed(TableViewHeader tableViewHeader, int index) {
            for (TableViewHeaderPressListener listener : this) {
                listener.headerPressed(tableViewHeader, index);
            }
        }
    }

    private TableView tableView = null;
    private DataRenderer dataRenderer = null;

    private TableViewHeaderListenerList tableViewHeaderListeners = new TableViewHeaderListenerList();
    private TableViewHeaderPressListenerList tableViewHeaderPressListeners = new TableViewHeaderPressListenerList();

    public TableViewHeader() {
        this(null);
    }

    public TableViewHeader(TableView tableView) {
        setDataRenderer(new TableViewHeaderDataRenderer());
        installSkin(TableViewHeader.class);

        setTableView(tableView);
    }

    @Override
    protected void setSkin(pivot.wtk.Skin skin) {
        if (!(skin instanceof TableViewHeader.Skin)) {
            throw new IllegalArgumentException("Skin class must implement "
                + TableViewHeader.Skin.class.getName());
        }

        super.setSkin(skin);
    }

    public TableView getTableView() {
        return tableView;
    }

    public void setTableView(TableView tableView) {
        TableView previousTableView = this.tableView;

        if (previousTableView != tableView) {
            this.tableView = tableView;
            tableViewHeaderListeners.tableViewChanged(this, previousTableView);
        }
    }

    public DataRenderer getDataRenderer() {
        return dataRenderer;
    }

    public void setDataRenderer(DataRenderer dataRenderer) {
        if (dataRenderer == null) {
            throw new IllegalArgumentException("dataRenderer is null.");
        }

        DataRenderer previousDataRenderer = this.dataRenderer;
        if (previousDataRenderer != dataRenderer) {
            this.dataRenderer = dataRenderer;
            tableViewHeaderListeners.dataRendererChanged(this, previousDataRenderer);
        }
    }

    public void pressHeader(int index) {
        tableViewHeaderPressListeners.headerPressed(this, index);
    }

    /**
     * Returns the index of the header at a given location.
     *
     * @param x
     * The x-coordinate of the header to identify.
     *
     * @return
     * The column index, or <tt>-1</tt> if there is no column at the given
     * x-coordinate.
     */
    public int getHeaderAt(int x) {
        TableViewHeader.Skin tableViewHeaderSkin = (TableViewHeader.Skin)getSkin();
        return tableViewHeaderSkin.getHeaderAt(x);
    }

    /**
     * Returns the bounding area of a given header.
     *
     * @param index
     * The index of the header.
     *
     * @return
     * The bounding area of the header.
     */
    public Bounds getHeaderBounds(int index) {
        TableViewHeader.Skin tableViewHeaderSkin = (TableViewHeader.Skin)getSkin();
        return tableViewHeaderSkin.getHeaderBounds(index);
    }

    public ListenerList<TableViewHeaderListener> getTableViewHeaderListeners() {
        return tableViewHeaderListeners;
    }

    public ListenerList<TableViewHeaderPressListener> getTableViewHeaderPressListeners() {
        return tableViewHeaderPressListeners;
    }
}
TOP

Related Classes of pivot.wtk.TableViewHeader$TableViewHeaderListenerList

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.
d', 'pageview');