public void componentRemoved(ContainerEvent e) {
      JTabbedPane tp = (JTabbedPane) e.getContainer();
      Component child = e.getChild();
      if (child instanceof UIResource) {
        return;
      }

      // NOTE 4/15/2002 (joutwate):
      // This fix is implemented using client properties since there is
      // currently no IndexPropertyChangeEvent. Once
      // IndexPropertyChangeEvents have been added this code should be
      // modified to use it.
      Integer indexObj = (Integer) tp.getClientProperty("__index_to_remove__");
      if (indexObj != null) {
        int index = indexObj.intValue();
        if (htmlViews != null && htmlViews.size() >= index) {
          htmlViews.removeElementAt(index);
        }
      }
    }
 public void componentAdded(ContainerEvent e) {
   JTabbedPane tp = (JTabbedPane) e.getContainer();
   Component child = e.getChild();
   if (child instanceof UIResource) {
     return;
   }
   int index = tp.indexOfComponent(child);
   String title = tp.getTitleAt(index);
   boolean isHTML = BasicHTML.isHTMLString(title);
   if (isHTML) {
     if (htmlViews == null) { // Initialize vector
       htmlViews = createHTMLVector();
     } else { // Vector already exists
       View v = BasicHTML.createHTMLView(tp, title);
       htmlViews.insertElementAt(v, index);
     }
   } else { // Not HTML
     if (htmlViews != null) { // Add placeholder
       htmlViews.insertElementAt(null, index);
     } // else nada!
   }
 }