import edu.mit.ai.psg.jexa.*;
import edu.mit.ai.psg.ui.outliner.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.List; // not java.awt.List

/** ContainerChildRenderer is an example of extending Jexa's set of renderers 
    by adding a renderer which displays children of a java.awt.Container.

    For examples of use, see {@link ContainerChildApplet}.

    @author CarlManning, caroma@ai.mit.edu<br>
    Copyright (c) 1999 Massachusetts Institute of Technology
    **/

public class ContainerChildRenderer extends ObjectRenderer {
  // ---- constructors ----
  public ContainerChildRenderer(OutlineMaker outlineMaker) {
    super(outlineMaker);
  }
  // --- override Object Outline ---
  /** Generate children for each element in Container **/
  public List makeChildOutlineNodes(OutlineNode outlineNode) {
    Container container = (Container) outlineNode.getObject();
    Component[] components = container.getComponents();
    List childNodes = new Vector();
    for (int i = 0; i < components.length; i++)
      childNodes.add(myOutlineMaker.makeOutlineNode(null, components[i]));
    return childNodes;
  }
  /** Call initialize to install outlineMakerenderer in OutlineMaker
      for instances of java.awt.Container **/
  public static void initialize (OutlineMaker outlineMaker) {
    outlineMaker.addRenderer(Container.class,
			     new ContainerChildRenderer(outlineMaker));
  }
}