import edu.mit.ai.psg.ui.outliner.*;
import java.util.*;

/** SimpleMapRenderer: Displays key:value entries of {@link java.util.Map}
    as children, displayed in order returned by entrySet iterator.<p>

    @see java.util.Map

    @author CarlManning, caroma@ai.mit.edu<br>
    Copyright (c) 1999 Massachusetts Institute of Technology
    **/

public class SimpleMapRenderer extends OutlineRendererDefault {
  // ---- constructor ----
  public SimpleMapRenderer(OutlineMaker outlineMaker) { super(outlineMaker); }
  // --- override Object Outline ---
  /** Generate children for each key:value pair in Map **/
  public List makeChildOutlineNodes(OutlineNode outlineNode) {
    Map map = (Map) outlineNode.getObject();
    List children = new Vector();
    children.add(myOutlineMaker.makeOutlineNode("Map size",
						new Integer(map.size())));
    for (Iterator entryIter = map.entrySet().iterator(); entryIter.hasNext();){
      Map.Entry entry = (Map.Entry) entryIter.next();
      children.add(myOutlineMaker.makeOutlineNode(entry.getKey(),
						  entry.getValue()));
    }
    return children;
  }
  /** Call initialize to install outlineRenderer in OutlineMaker
      for objects with interface java.util.Map **/
  public static void initialize (OutlineMaker outlineMaker) {
    outlineMaker.addRenderer(Map.class, new SimpleMapRenderer(outlineMaker));
  }
  /** Example use **/
  public static void main(String[] ignore) {
    SimpleMapRenderer.initialize(Outliner.outlineMaker);
    Outliner.outline(System.getProperties());
  }
}
