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

org.jdesktop.swingx.renderer.ListCellContext Maven / Gradle / Ivy

There is a newer version: 1.7.2
Show newest version
/*
 * $Id: ListCellContext.java 3424 2009-07-30 10:53:39Z kleopatra $
 *
 * Copyright 2008 Sun Microsystems, Inc., 4150 Network Circle,
 * Santa Clara, California 95054, U.S.A. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
package org.jdesktop.swingx.renderer;

import javax.swing.JList;
import java.awt.Color;

/**
 * List specific CellContext.
 */
public class ListCellContext extends CellContext {

    /**
     * Sets state of the cell's context. Note that the component might be null
     * to indicate a cell without a concrete context. All accessors must cope
     * with.
     *
     * @param component the component the cell resides on, might be null
     * @param value     the content value of the cell
     * @param row       the cell's row index in view coordinates
     * @param column    the cell's column index in view coordinates
     * @param selected  the cell's selected state
     * @param focused   the cell's focused state
     * @param expanded  the cell's expanded state
     * @param leaf      the cell's leaf state
     */
    public void installContext(JList component, Object value, int row, int column,
                               boolean selected, boolean focused, boolean expanded, boolean leaf) {
        this.component = component;
        installState(value, row, column, selected, focused, expanded, leaf);
        this.dropOn = checkDropOnState();
    }

    /**
     *
     */
    private boolean checkDropOnState() {
        if (getComponent() == null) {
            return false;
        }
        JList.DropLocation dropLocation = getComponent().getDropLocation();
        return dropLocation != null && !dropLocation.isInsert() && dropLocation.getIndex() == row;
    }

    @Override
    public JList getComponent() {
        return (JList) super.getComponent();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected Color getSelectionBackground() {
        if (isDropOn()) {
            Color selection = getDropCellBackground();
            if (selection != null)
                return selection;
        }
        return getComponent() != null ? getComponent().getSelectionBackground() : null;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected Color getSelectionForeground() {
        if (isDropOn()) {
            Color selection = getDropCellForeground();
            if (selection != null)
                return selection;
        }
        return getComponent() != null ? getComponent().getSelectionForeground() : null;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected String getUIPrefix() {
        return "List.";
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy