private boolean canExport(List<?> selected) {
   if (selected.size() != 1) {
     return false;
   }
   Object elem = selected.get(0);
   if (elem instanceof CPElement) {
     CPElement element = (CPElement) selected.get(0);
     if (element.getParentContainer() == null && element.getInherited() == null) {
       IPath base_ref = (IPath) element.getAttribute(CPElement.BASE_REF);
       if (base_ref != null && !base_ref.equals(Path.EMPTY)) return false;
       return element.getEntryKind() == IPathEntry.CDT_INCLUDE
           || element.getEntryKind() == IPathEntry.CDT_MACRO;
     }
   }
   return false;
 }
 private boolean canMove(List<?> selected) {
   if (selected.size() == 0) {
     return false;
   }
   for (int i = 0; i < selected.size(); i++) {
     Object element = selected.get(i);
     if (!(element instanceof CPElement)) return false;
     CPElement elem = (CPElement) element;
     if (elem.getEntryKind() != IPathEntry.CDT_INCLUDE
         && elem.getEntryKind() != IPathEntry.CDT_MACRO) {
       return false;
     }
     if (elem.getParentContainer() != null || elem.getInherited() != null) {
       return false;
     }
   }
   return true;
 }
 /**
  * @param cpentry
  * @param str
  */
 private void addParentInfo(CPElement cpentry, StringBuffer str) {
   if (bShowParentInfo) {
     CPElement parent = cpentry.getParentContainer();
     if (parent != null) {
       str.append(" ["); // $NON-NLS-1$
       try {
         IPathEntryContainer container =
             CoreModel.getPathEntryContainer(cpentry.getPath(), cpentry.getCProject());
         if (container != null) {
           str.append(container.getDescription());
         }
       } catch (CModelException e) {
         str.append(parent.getPath());
       }
       str.append(']');
     }
   }
 }
 private boolean canRemove(List<?> selected) {
   if (selected.size() != 1) {
     return false;
   }
   Object elem = selected.get(0);
   if (elem instanceof CPElement) {
     CPElement element = (CPElement) elem;
     if (element.getParentContainer() == null) {
       return element.getEntryKind() == IPathEntry.CDT_INCLUDE
           || element.getEntryKind() == IPathEntry.CDT_MACRO;
     }
   } else if (elem instanceof CPElementAttribute) {
     CPElementAttribute attrib = (CPElementAttribute) elem;
     if (attrib.getKey().equals(CPElement.EXCLUSION)) {
       if (((IPath[]) attrib.getValue()).length > 0) {
         return true;
       }
     }
   }
   return false;
 }
 private boolean canEdit(List<?> selected) {
   if (selected.size() != 1) {
     return false;
   }
   Object elem = selected.get(0);
   if (elem instanceof CPElement) {
     CPElement element = (CPElement) selected.get(0);
     if (element.getParentContainer() == null && element.getInherited() == null) {
       IPath path = (IPath) element.getAttribute(CPElement.BASE_REF);
       if (path != null && !path.equals(Path.EMPTY)) {
         return false;
       }
       return element.getEntryKind() == IPathEntry.CDT_INCLUDE
           || element.getEntryKind() == IPathEntry.CDT_MACRO
           || element.getEntryKind() == IPathEntry.CDT_CONTAINER;
     }
   }
   if (elem instanceof CPElementAttribute) {
     return true;
   }
   return false;
 }