/* Copyright (C) 2000  Free Software Foundation

   This file is part of libgcj.

This software is copyrighted work licensed under the terms of the
Libjava License.  Please consult the file "LIBGCJ_LICENSE" for
details.  */

package java.awt.event;

/**
 * @since 1.3
 * @author Bryce McKinlay
 */

/* Status:  Believed complete and correct. */

public abstract class HierarchyBoundsAdapter implements HierarchyBoundsListener
{
  public void ancestorMoved(HierarchyEvent e)
  {
  }
  
  public void ancestorResized(HierarchyEvent e)
  {
  }
}
