summaryrefslogtreecommitdiff
path: root/java/src/IceGrid/TreeNode/CommonBase.java
blob: 90fa92d1e92de008c8462f75913d495449a49b01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// **********************************************************************
//
// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
package IceGrid.TreeNode;

import javax.swing.tree.TreePath;
import javax.swing.tree.TreeCellRenderer;
import javax.swing.JPopupMenu;
import javax.swing.JPanel;

import com.jgoodies.uif_lite.panel.SimpleInternalFrame;

import IceGrid.Model;

//
// CommonBase is similar to javax.swing.tree.TreeNode
//

public interface CommonBase extends TreeCellRenderer
{
    Object getChildAt(int childIndex);
    int getChildCount();
    int getIndex(Object child);
    boolean isLeaf();

    CommonBase findChild(String id);

    //
    // Unique within the scope of each parent
    //
    String getId();

    Model getModel();

    //
    // Unregister this element with the enclosing application;
    // often no-op
    //
    void unregister();

    //
    // Ephemeral objects are destroyed when you switch selection
    // without "apply"ing the changes.
    //
    boolean isEphemeral();

    //
    // Destroys this node, returns true when destroyed
    //
    boolean destroy();

    //
    // Set this node as a parent, and recursively update
    // the path of all children.
    // This method has no effect on the parent->children relationship,
    // only child->parent.
    // 
    void setParent(CommonBase newParent);

    //
    // Get this node's parent
    // This is used by nodes to create events
    // pointing to themselves
    //
    CommonBase getParent();

    //
    // The path to this node
    // typically used by children to create TreeModelEvents
    //
    TreePath getPath();

    //
    // Get pop-up menu
    //
    JPopupMenu getPopupMenu();

    void displayProperties();

    //
    // Get properties
    //
    PropertiesHolder getPropertiesHolder();

    //
    // The enclosing editable
    //
    Editable getEditable();

    //
    // The enclosing Application
    //
    Application getApplication();

    //
    // Gets the associated descriptor
    //
    Object getDescriptor();

    //
    // Find child whose descriptor == the given descriptor
    //
    CommonBase findChildWithDescriptor(Object descriptor);

    //
    // Save & restore the descriptor
    // How much needs to be copied depends on how what the corresponding
    // editor writes.
    //
    Object saveDescriptor();
    void restoreDescriptor(Object savedDescriptor);
    
    //
    // Copy the underlying data (typically descriptor);
    // this is a _deep_ copy
    // Objects that are not copyable return null
    //
    Object copy();

    //
    // Create a new object using this descriptor in this container 
    // or the parent's container; does nothing if the descriptor
    // is not of the proper type
    //
    void paste(Object descriptor);
}