Package floobits.utilities

Source Code of floobits.utilities.SelectFolder

package floobits.utilities;

import com.intellij.openapi.fileChooser.FileChooser;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import floobits.common.Constants;
import floobits.common.FloorcJson;
import floobits.common.RunLater;
import floobits.common.Settings;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;

import java.io.File;
import java.io.IOException;

public class SelectFolder {

    public static void build(String owner, String workspace, final RunLater<String> runLater) {
        FileChooserDescriptor descriptor = new FileChooserDescriptor(false, true, false, false, false, false);
        descriptor.setTitle("Select Folder For Workspace");
        descriptor.setDescription("NOTE: Floobits will NOT make a new, root directory inside the folder you choose. If you have cloned the project already, select that folder.");
        FloorcJson floorcJson;
        try {
            floorcJson =  Settings.get();
        } catch (Exception e) {
            Flog.errorMessage("Your floorc.json has invalid json.", null);
            return;
        }
        File file = null;
        String shareDir = floorcJson.share_dir;
        if (shareDir != null) {
            if (shareDir.substring(0, 2).equals("~/")) {
                shareDir = shareDir.replaceFirst("~/", System.getProperty("user.home") + "/");
            }
            file = createDir(shareDir, owner, workspace);
            if (file == null) {
                Flog.errorMessage(String.format("Your floorc.json share_dir setting %s did not work, using default ~/floobits",
                        floorcJson.share_dir), null);
            }
        }
        if (file == null) {
            file = createDir(Constants.shareDir, owner, workspace);
        }
        if (file == null) {
            Flog.errorMessage(String.format("Could not create a directory for this workspace, tried %s", Constants.shareDir), null);
            return;
        }
        VirtualFile virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file);
        VirtualFile[] vFiles = FileChooser.chooseFiles(descriptor, null, virtualFile);
        if (vFiles.length == 0) {
            return;
        }
        if (vFiles.length > 1) {
            Flog.errorMessage("You can only select one directory!", null);
            return;
        }
        final String selectedPath = vFiles[0].getPath();
        runLater.run(selectedPath);
    }


    private static File createDir(String path, String owner, String workspace) {
        path = FilenameUtils.concat(path, owner);
        path = FilenameUtils.concat(path, workspace);
        File file = new File(path);
        try {
            FileUtils.forceMkdir(file);
        } catch (IOException e) {
            Flog.warn(e);
            return null;
        }
        return file;
    }
}
TOP

Related Classes of floobits.utilities.SelectFolder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.