protected void addCompletions()

in src/main/java/lt/martynassateika/idea/codeigniter/model/ModelCompletionProvider.java [57:91]


  protected void addCompletions(@NotNull CompletionParameters completionParameters,
      @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet resultSet) {
    PsiElement originalPosition = completionParameters.getOriginalPosition();
    if (originalPosition != null) {
      Project project = originalPosition.getProject();
      if (CodeIgniterProjectSettings.getInstance(project).isEnabled()) {
        if (isModelNameElement(originalPosition)) {
          List<PsiFileSystemItem> modelDirectories = CiModelUtil.getModelDirectories(project);
          for (PsiFileSystemItem modelDirectory : modelDirectories) {
            VirtualFile directoryVirtualFile = modelDirectory.getVirtualFile();
            VirtualFile applicationDirectory = directoryVirtualFile.getParent();
            VfsUtil
                .visitChildrenRecursively(directoryVirtualFile, new VirtualFileVisitor<Object>() {
                  @Override
                  public boolean visitFile(@NotNull VirtualFile file) {
                    if (file.getFileType() == PhpFileType.INSTANCE) {
                      String relativePath = VfsUtilCompat
                          .findRelativePath(directoryVirtualFile, file, '/');
                      if (StringUtil.isNotEmpty(relativePath)) {
                        Icon icon = file.getFileType().getIcon();
                        resultSet.addElement(new BasicFileLookupElement(
                            PhpExtensionUtil.removeIfPresent(relativePath.toLowerCase()),
                            applicationDirectory,
                            icon
                        ));
                      }
                    }
                    return true;
                  }
                });
          }
        }
      }
    }
  }