001 /*
002 * Copyright 1997-1998 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025
026 package javax.swing.plaf;
027
028 import java.awt.Rectangle;
029 import javax.swing.JTree;
030 import javax.swing.tree.TreePath;
031
032 /**
033 * Pluggable look and feel interface for JTree.
034 *
035 * @version 1.31 05/05/07
036 * @author Rob Davis
037 * @author Scott Violet
038 */
039 public abstract class TreeUI extends ComponentUI {
040 /**
041 * Returns the Rectangle enclosing the label portion that the
042 * last item in path will be drawn into. Will return null if
043 * any component in path is currently valid.
044 */
045 public abstract Rectangle getPathBounds(JTree tree, TreePath path);
046
047 /**
048 * Returns the path for passed in row. If row is not visible
049 * null is returned.
050 */
051 public abstract TreePath getPathForRow(JTree tree, int row);
052
053 /**
054 * Returns the row that the last item identified in path is visible
055 * at. Will return -1 if any of the elements in path are not
056 * currently visible.
057 */
058 public abstract int getRowForPath(JTree tree, TreePath path);
059
060 /**
061 * Returns the number of rows that are being displayed.
062 */
063 public abstract int getRowCount(JTree tree);
064
065 /**
066 * Returns the path to the node that is closest to x,y. If
067 * there is nothing currently visible this will return null, otherwise
068 * it'll always return a valid path. If you need to test if the
069 * returned object is exactly at x, y you should get the bounds for
070 * the returned path and test x, y against that.
071 */
072 public abstract TreePath getClosestPathForLocation(JTree tree,
073 int x, int y);
074
075 /**
076 * Returns true if the tree is being edited. The item that is being
077 * edited can be returned by getEditingPath().
078 */
079 public abstract boolean isEditing(JTree tree);
080
081 /**
082 * Stops the current editing session. This has no effect if the
083 * tree isn't being edited. Returns true if the editor allows the
084 * editing session to stop.
085 */
086 public abstract boolean stopEditing(JTree tree);
087
088 /**
089 * Cancels the current editing session. This has no effect if the
090 * tree isn't being edited. Returns true if the editor allows the
091 * editing session to stop.
092 */
093 public abstract void cancelEditing(JTree tree);
094
095 /**
096 * Selects the last item in path and tries to edit it. Editing will
097 * fail if the CellEditor won't allow it for the selected item.
098 */
099 public abstract void startEditingAtPath(JTree tree, TreePath path);
100
101 /**
102 * Returns the path to the element that is being edited.
103 */
104 public abstract TreePath getEditingPath(JTree tree);
105 }
|