Example usage for com.intellij.openapi.options SchemeImportException SchemeImportException

List of usage examples for com.intellij.openapi.options SchemeImportException SchemeImportException

Introduction

In this page you can find the example usage for com.intellij.openapi.options SchemeImportException SchemeImportException.

Prototype

public SchemeImportException(Throwable cause) 

Source Link

Usage

From source file:com.intellij.application.options.codeStyle.ManageCodeStyleSchemesDialog.java

License:Apache License

@Nullable
private String importExternalCodeStyle(String importerName) throws SchemeImportException {
    final SchemeImporter<CodeStyleScheme> importer = SchemeImporterEP.getImporter(importerName,
            CodeStyleScheme.class);
    if (importer != null) {
        FileChooserDialog fileChooser = FileChooserFactory.getInstance()
                .createFileChooser(new FileChooserDescriptor(true, false, false, false, false, false) {
                    @Override/*from w  w  w.j ava 2  s  . c o m*/
                    public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
                        return file.isDirectory() || importer.getSourceExtension().equals(file.getExtension());
                    }

                    @Override
                    public boolean isFileSelectable(VirtualFile file) {
                        return !file.isDirectory() && importer.getSourceExtension().equals(file.getExtension());
                    }
                }, null, myContentPane);
        VirtualFile[] selection = fileChooser.choose(null,
                CodeStyleSchemesUIConfiguration.Util.getRecentImportFile());
        if (selection.length == 1) {
            VirtualFile selectedFile = selection[0];
            selectedFile.refresh(false, false);
            CodeStyleSchemesUIConfiguration.Util.setRecentImportFile(selectedFile);
            try {
                InputStream nameInputStream = selectedFile.getInputStream();
                String[] schemeNames;
                try {
                    schemeNames = importer.readSchemeNames(nameInputStream);
                } finally {
                    nameInputStream.close();
                }
                CodeStyleScheme currScheme = myModel.getSelectedScheme();
                ImportSchemeChooserDialog schemeChooserDialog = new ImportSchemeChooserDialog(myContentPane,
                        schemeNames, !currScheme.isDefault() ? currScheme.getName() : null);
                if (schemeChooserDialog.showAndGet()) {
                    String schemeName = schemeChooserDialog.getSelectedName();
                    String targetName = schemeChooserDialog.getTargetName();
                    CodeStyleScheme targetScheme = null;
                    if (schemeChooserDialog.isUseCurrentScheme()) {
                        targetScheme = myModel.getSelectedScheme();
                    } else {
                        if (targetName == null)
                            targetName = ApplicationBundle.message("code.style.scheme.import.unnamed");
                        for (CodeStyleScheme scheme : myModel.getSchemes()) {
                            if (targetName.equals(scheme.getName())) {
                                targetScheme = scheme;
                                break;
                            }
                        }
                        if (targetScheme == null) {
                            int row = mySchemesTableModel.createNewScheme(getSelectedScheme(), targetName);
                            mySchemesTable.getSelectionModel().setSelectionInterval(row, row);
                            targetScheme = mySchemesTableModel.getSchemeAt(row);
                        } else {
                            int result = Messages.showYesNoDialog(myContentPane,
                                    ApplicationBundle.message("message.code.style.scheme.already.exists",
                                            targetName),
                                    ApplicationBundle.message("title.code.style.settings.import"),
                                    Messages.getQuestionIcon());
                            if (result != Messages.YES) {
                                return null;
                            }
                        }
                    }
                    InputStream dataInputStream = selectedFile.getInputStream();
                    try {
                        importer.importScheme(dataInputStream, schemeName, targetScheme);
                        myModel.fireSchemeChanged(targetScheme);
                    } finally {
                        dataInputStream.close();
                    }
                    return targetScheme.getName();
                }
            } catch (IOException e) {
                throw new SchemeImportException(e);
            }
        }
    }
    return null;
}