| /* |
| * Copyright 2000-2009 JetBrains s.r.o. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.intellij.xdebugger.frame; |
| |
| import com.intellij.util.NotNullFunction; |
| import com.intellij.xdebugger.Obsolescent; |
| import com.intellij.xdebugger.frame.presentation.XValuePresentation; |
| import org.jetbrains.annotations.NonNls; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| import javax.swing.*; |
| |
| /** |
| * Represents a node in debugger tree. This interface isn't supposed to be implemented by a plugin. |
| * |
| * @see XValue |
| * |
| * @author nik |
| */ |
| public interface XValueNode extends Obsolescent { |
| /** |
| * If value text exceeds this constant it's recommended to truncate it and use {@link #setFullValueEvaluator(XFullValueEvaluator)} method |
| * to provide full value |
| */ |
| int MAX_VALUE_LENGTH = 100; |
| |
| /** |
| * Setup presentation of the value |
| * @param icon icon representing value type (see {@link com.intellij.icons.AllIcons.Debugger}) |
| * @param type optional type of the value, it is shown in gray color and surrounded by braces |
| * @param value string representation of value. It is also used in 'Copy Value' action |
| * @param hasChildren {@code false} if the node is a leaf |
| */ |
| void setPresentation(@Nullable Icon icon, @NonNls @Nullable String type, @NonNls @NotNull String value, boolean hasChildren); |
| |
| /** |
| * Setup presentation of the value. This method allows to change separator between name and value and customize the way value text is shown |
| * @param icon icon representing value type (see {@link com.intellij.icons.AllIcons.Debugger}) |
| * @param presentation a new {@link XValuePresentation} instance which determines how the value is show |
| * @param hasChildren {@code false} if the node is a leaf |
| */ |
| void setPresentation(@Nullable Icon icon, @NotNull XValuePresentation presentation, boolean hasChildren); |
| |
| /** |
| * @deprecated use {@link #setPresentation(javax.swing.Icon, XValuePresentation, boolean)} |
| */ |
| void setPresentation(@Nullable Icon icon, @NonNls @Nullable String type, @NonNls @NotNull String separator, @NonNls @Nullable String value, boolean hasChildren); |
| |
| /** |
| * The same as {@link #setPresentation(javax.swing.Icon, String, String, boolean)} but allows to change default processing of |
| * {@code value} parameter using custom {@code valuePresenter} function. By default only invisible characters like tabs or line separators |
| * are escaped in the value. {@code valuePresenter} function doesn't affect 'Copy Value' action. It can be used to escape additional |
| * characters and/or surround value by quotes. |
| * |
| * @deprecated use {@link #setPresentation(javax.swing.Icon, XValuePresentation, boolean)} |
| */ |
| void setPresentation(@Nullable Icon icon, @NonNls @Nullable String type, @NonNls @NotNull String value, |
| @Nullable NotNullFunction<String, String> valuePresenter, boolean hasChildren); |
| |
| /** |
| * @deprecated use {@link #setPresentation(javax.swing.Icon, XValuePresentation, boolean)} |
| */ |
| void setPresentation(@Nullable Icon icon, @NonNls @Nullable String type, @NonNls @NotNull String separator, @NonNls @NotNull String value, |
| @Nullable NotNullFunction<String, String> valuePresenter, boolean hasChildren); |
| |
| /** |
| * If string representation of the value is too long to show in the tree pass truncated value to {@link #setPresentation(javax.swing.Icon, String, String, boolean)} |
| * method and call this method to provide full value. |
| * This will add a link to the node and show popup with full value if an user clicks on that link. |
| * @param fullValueEvaluator will be used to obtain full text of the value |
| * @see #MAX_VALUE_LENGTH |
| */ |
| void setFullValueEvaluator(@NotNull XFullValueEvaluator fullValueEvaluator); |
| } |