001 /*--------------------------------------------------------------------------+
002 $Id: ITreeMapNode.java 28095 2010-06-09 13:10:26Z hummelb $
003 | |
004 | Copyright 2005-2010 Technische Universitaet Muenchen |
005 | |
006 | Licensed under the Apache License, Version 2.0 (the "License"); |
007 | you may not use this file except in compliance with the License. |
008 | You may obtain a copy of the License at |
009 | |
010 | http://www.apache.org/licenses/LICENSE-2.0 |
011 | |
012 | Unless required by applicable law or agreed to in writing, software |
013 | distributed under the License is distributed on an "AS IS" BASIS, |
014 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
015 | See the License for the specific language governing permissions and |
016 | limitations under the License. |
017 +--------------------------------------------------------------------------*/
018 package edu.tum.cs.commons.treemap;
019
020 import java.awt.Color;
021 import java.awt.geom.Rectangle2D;
022 import java.util.List;
023
024 /**
025 * Interface for nodes used for building the tree map node hierarchy which is
026 * then rendered as a tree map.
027 *
028 * @author Benjamin Hummel
029 * @author $Author: hummelb $
030 * @version $Rev: 28095 $
031 * @levd.rating GREEN Hash: 6A2576C914919BB550F99037D71626EA
032 *
033 * @param <T>
034 * the type the user data has.
035 */
036 public interface ITreeMapNode<T> {
037
038 /** Returns the text of the tree map node */
039 public String getText();
040
041 /**
042 * Returns the list of children of this node. This usually is a readonly
043 * list.
044 */
045 public List<ITreeMapNode<T>> getChildren();
046
047 /** Returns the area of this node including all subnodes. */
048 public double getArea();
049
050 /** Returns the base color used for drawing this node. */
051 public Color getColor();
052
053 /** Returns the color used for drawing the pattern (if any) of this node. */
054 public Color getPatternColor();
055
056 /**
057 * Returns the pattern used for drawing the node (may be <code>null</code>
058 * to use no pattern).
059 */
060 public IDrawingPattern getDrawingPattern();
061
062 /** Returns some user defined data which can be useful for some callbacks. */
063 public T getUserDatum();
064
065 /**
066 * Returns the rectangle this node was layouted into. If the tree was not
067 * yet layouted, this may be null, otherwise it should be the value set by
068 * {@link #setLayoutRectangle(Rectangle2D)}.
069 */
070 public Rectangle2D getLayoutRectangle();
071
072 /** Sets the rectangle this node should be layouted into. */
073 public void setLayoutRectangle(Rectangle2D rect);
074
075 /** Get displayable name of the node. */
076 public String getTooltipId();
077
078 /** Returns keys for structured displayable data. */
079 public List<String> getTooltipKeys();
080
081 /** Returns the value to be displayed for a single key. */
082 public Object getTooltipValue(String key);
083
084 }