/* * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code 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 General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package javax.swing.tree; import java.awt.Component; import javax.swing.JTree; /** * Defines the requirements for an object that displays a tree node. * See How to Use Trees * in The Java Tutorial * for an example of implementing a tree cell renderer * that displays custom icons. * * @author Rob Davis * @author Ray Ryan * @author Scott Violet */ public interface TreeCellRenderer { /** * Sets the value of the current tree cell to value. * If selected is true, the cell will be drawn as if * selected. If expanded is true the node is currently * expanded and if leaf is true the node represents a * leaf and if hasFocus is true the node currently has * focus. tree is the JTree the receiver is being * configured for. Returns the Component that the renderer * uses to draw the value. *

* The TreeCellRenderer is also responsible for rendering the * the cell representing the tree's current DnD drop location if * it has one. If this renderer cares about rendering * the DnD drop location, it should query the tree directly to * see if the given row represents the drop location: *

     *     JTree.DropLocation dropLocation = tree.getDropLocation();
     *     if (dropLocation != null
     *             && dropLocation.getChildIndex() == -1
     *             && tree.getRowForPath(dropLocation.getPath()) == row) {
     *
     *         // this row represents the current drop location
     *         // so render it specially, perhaps with a different color
     *     }
     * 
* * @return the Component that the renderer uses to draw the value */ Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus); }