replaced <code></code> with more concise {@code}
[idea/community.git] / platform / xdebugger-api / src / com / intellij / xdebugger / frame / XCompositeNode.java
1 /*
2  * Copyright 2000-2009 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.xdebugger.frame;
17
18 import com.intellij.ui.SimpleTextAttributes;
19 import com.intellij.xdebugger.Obsolescent;
20 import org.jetbrains.annotations.NotNull;
21 import org.jetbrains.annotations.Nullable;
22
23 import javax.swing.*;
24
25 /**
26  * Represents a node with children in a debugger tree. This interface isn't supposed to be implemented by a plugin.
27  *
28  * @see XValueContainer
29  *
30  * @author nik
31  */
32 public interface XCompositeNode extends Obsolescent {
33   /**
34    * If node has more children than this constant it's recommended to stop adding children and call {@link #tooManyChildren(int)} method
35    */
36   int MAX_CHILDREN_TO_SHOW = 100;
37
38   /**
39    * Add children to the node.
40    * @param children child nodes to add
41    * @param last {@code true} if all children added
42    */
43   void addChildren(@NotNull XValueChildrenList children, final boolean last);
44
45   /**
46    * Add an ellipsis node ("...") indicating that the node has too many children. If user double-click on that node
47    * {@link XValueContainer#computeChildren(XCompositeNode)} method will be called again to add next children.
48    * @param remaining number of remaining children or {@code -1} if unknown
49    * @see #MAX_CHILDREN_TO_SHOW
50    */
51   void tooManyChildren(int remaining);
52
53   /**
54    * Use sort specified in data view settings (alreadySorted false, by default) or not
55    */
56   void setAlreadySorted(boolean alreadySorted);
57
58   /**
59    * Indicates that an error occurs
60    * @param errorMessage message describing the error
61    */
62   void setErrorMessage(@NotNull String errorMessage);
63
64   /**
65    * Indicates that an error occurs
66    * @param errorMessage message describing the error
67    * @param link describes a hyperlink which will be appended to the error message
68    */
69   void setErrorMessage(@NotNull String errorMessage, @Nullable XDebuggerTreeNodeHyperlink link);
70
71   void setMessage(@NotNull String message, final @Nullable Icon icon, final @NotNull SimpleTextAttributes attributes, @Nullable XDebuggerTreeNodeHyperlink link);
72 }