1/*
2 * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package javax.swing.tree;
27
28/**
29 * Defines the requirements for a tree node object that can change --
30 * by adding or removing child nodes, or by changing the contents
31 * of a user object stored in the node.
32 *
33 * @see DefaultMutableTreeNode
34 * @see javax.swing.JTree
35 *
36 * @author Rob Davis
37 * @author Scott Violet
38 */
39
40public interface MutableTreeNode extends TreeNode
41{
42    /**
43     * Adds <code>child</code> to the receiver at <code>index</code>.
44     * <code>child</code> will be messaged with <code>setParent</code>.
45     *
46     * @param child node to be added
47     * @param index index of the receiver
48     */
49    void insert(MutableTreeNode child, int index);
50
51    /**
52     * Removes the child at <code>index</code> from the receiver.
53     *
54     * @param index index of child to be removed
55     */
56    void remove(int index);
57
58    /**
59     * Removes <code>node</code> from the receiver. <code>setParent</code>
60     * will be messaged on <code>node</code>.
61     *
62     * @param node node to be removed from the receiver
63     */
64    void remove(MutableTreeNode node);
65
66    /**
67     * Resets the user object of the receiver to <code>object</code>.
68     *
69     * @param object object to be set as a receiver
70     */
71    void setUserObject(Object object);
72
73    /**
74     * Removes the receiver from its parent.
75     */
76    void removeFromParent();
77
78    /**
79     * Sets the parent of the receiver to <code>newParent</code>.
80     *
81     * @param newParent node to be set as parent of the receiver
82     */
83    void setParent(MutableTreeNode newParent);
84}
85