private boolean handleRemoveCategoryDefinition(ISiteCategoryDefinition catDef) {
   try {
     Object[] children =
         ((CategoryContentProvider) fCategoryViewer.getContentProvider()).getChildren(catDef);
     for (int i = 0; i < children.length; i++) {
       SiteFeatureAdapter adapter = (SiteFeatureAdapter) children[i];
       ISiteCategory[] cats = adapter.feature.getCategories();
       for (int j = 0; j < cats.length; j++) {
         if (adapter.category.equals(cats[j].getName()))
           adapter.feature.removeCategories(new ISiteCategory[] {cats[j]});
       }
       if (adapter.feature.getCategories().length == 0) {
         fModel.getSite().removeFeatures(new ISiteFeature[] {adapter.feature});
       }
     }
     fModel.getSite().removeCategoryDefinitions(new ISiteCategoryDefinition[] {catDef});
     return true;
   } catch (CoreException e) {
   }
   return false;
 }