/*
   * (non-Javadoc)
   *
   * @see IJavaSearchScope#encloses(IModelElement)
   */
  public boolean encloses(IModelElement element) {
    IDLTKLanguageToolkit elementToolkit = DLTKLanguageManager.getLanguageToolkit(element);
    if (!toolkit.getNatureId().equals(elementToolkit.getNatureId())) {
      return false;
    }

    if (this.elements != null) {
      for (int i = 0, length = this.elements.size(); i < length; i++) {
        IModelElement scopeElement = this.elements.get(i);
        IModelElement searchedElement = element;
        while (searchedElement != null) {
          if (searchedElement.equals(scopeElement)) return true;
          searchedElement = searchedElement.getParent();
        }
      }
      return false;
    }
    IProjectFragment root = (IProjectFragment) element.getAncestor(IModelElement.PROJECT_FRAGMENT);
    if (root != null && root.isArchive()) {
      // external or internal archive
      IPath rootPath = root.getPath();
      String rootPathToString = rootPath.toString();
      IPath relativePath = getPath(element, true /* relative path */);
      return indexOf(rootPathToString, relativePath.toString()) >= 0;
    }
    // resource in workspace
    String fullResourcePathString = getPath(element, false /* full path */).toString();
    return indexOf(fullResourcePathString) >= 0;
  }
 private static String getNatureFromProject(IScriptProject project) {
   final IDLTKLanguageToolkit languageToolkit = DLTKLanguageManager.getLanguageToolkit(project);
   if (languageToolkit != null) {
     return languageToolkit.getNatureId();
   }
   return null;
 }
 private boolean natureFilter(IModelElement element) {
   // For all projects scope
   if (toolkit == null) {
     return true;
   }
   IDLTKLanguageToolkit elementToolkit = DLTKLanguageManager.getLanguageToolkit(element);
   if (elementToolkit != null && elementToolkit.getNatureId().equals(toolkit.getNatureId())) {
     // Filter by nature.
     return true;
   }
   return false;
 }