Example usage for com.intellij.openapi.fileChooser FileChooserDescriptor isFileSelectable

List of usage examples for com.intellij.openapi.fileChooser FileChooserDescriptor isFileSelectable

Introduction

In this page you can find the example usage for com.intellij.openapi.fileChooser FileChooserDescriptor isFileSelectable.

Prototype

public boolean isFileSelectable(VirtualFile file) 

Source Link

Document

Defines whether a file can be chosen.

Usage

From source file:com.android.tools.idea.actions.AndroidOpenFileAction.java

License:Apache License

@Override
public void actionPerformed(AnActionEvent e) {
    Project project = e.getProject();/*from w ww . jav a2 s .  co  m*/
    boolean showFiles = project != null || PlatformProjectOpenProcessor.getInstanceIfItExists() != null;
    FileChooserDescriptor descriptor = showFiles ? new ProjectOrFileChooserDescriptor()
            : new ProjectOnlyFileChooserDescriptor();
    descriptor.putUserData(PathChooserDialog.PREFER_LAST_OVER_EXPLICIT, showFiles);

    VirtualFile explicitPreferredDirectory = ((project != null) && !project.isDefault()) ? project.getBaseDir()
            : getUserHomeDir();
    chooseFiles(descriptor, project, explicitPreferredDirectory, files -> {
        for (VirtualFile file : files) {
            if (!descriptor.isFileSelectable(file)) {
                String message = IdeBundle.message("error.dir.contains.no.project", file.getPresentableUrl());
                Messages.showInfoMessage(project, message, IdeBundle.message("title.cannot.open.project"));
                return;
            }
        }
        doOpenFile(project, files);
    });

}

From source file:com.intellij.ide.actions.OpenFileAction.java

License:Apache License

@Override
public void actionPerformed(AnActionEvent e) {
    @Nullable//from  w w w  .ja v a2s.c  om
    final Project project = CommonDataKeys.PROJECT.getData(e.getDataContext());
    final boolean showFiles = project != null;

    final FileChooserDescriptor descriptor = new OpenProjectFileChooserDescriptor(true) {
        @Override
        public boolean isFileSelectable(VirtualFile file) {
            if (super.isFileSelectable(file)) {
                return true;
            }
            if (file.isDirectory()) {
                return false;
            }
            return showFiles && !FileElement.isArchive(file);
        }

        @Override
        public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
            if (!file.isDirectory() && isFileSelectable(file)) {
                if (!showHiddenFiles && FileElement.isFileHidden(file))
                    return false;
                return true;
            }
            return super.isFileVisible(file, showHiddenFiles);
        }

        @Override
        public boolean isChooseMultiple() {
            return showFiles;
        }
    };
    descriptor.setTitle(showFiles ? "Open File or Project" : "Open Project");

    VirtualFile userHomeDir = null;
    if (SystemInfo.isUnix) {
        userHomeDir = VfsUtil.getUserHomeDir();
    }

    descriptor.putUserData(PathChooserDialog.PREFER_LAST_OVER_EXPLICIT, Boolean.TRUE);

    FileChooser.chooseFiles(descriptor, project, userHomeDir, new Consumer<List<VirtualFile>>() {
        @Override
        public void consume(final List<VirtualFile> files) {
            for (VirtualFile file : files) {
                if (!descriptor.isFileSelectable(file)) { // on Mac, it could be selected anyway
                    Messages.showInfoMessage(project,
                            file.getPresentableUrl() + " contains no "
                                    + ApplicationNamesInfo.getInstance().getFullProductName() + " project",
                            "Cannot Open Project");
                    return;
                }
            }
            doOpenFile(project, files);
        }
    });
}