Example usage for com.intellij.openapi.fileChooser FileElement isArchive

List of usage examples for com.intellij.openapi.fileChooser FileElement isArchive

Introduction

In this page you can find the example usage for com.intellij.openapi.fileChooser FileElement isArchive.

Prototype

public static boolean isArchive(@Nullable VirtualFile file) 

Source Link

Usage

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

License:Apache License

@Override
public void actionPerformed(AnActionEvent e) {
    @Nullable//  w w  w .  j a  v  a 2  s . co  m
    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);
        }
    });
}