Search in sources :

Example 26 with SmartList

use of com.intellij.util.SmartList in project intellij-community by JetBrains.

the class EditorTracker method editorsByWindow.

@NotNull
private List<Editor> editorsByWindow(Window window) {
    List<Editor> list = myWindowToEditorsMap.get(window);
    if (list == null)
        return Collections.emptyList();
    List<Editor> filtered = new SmartList<>();
    for (Editor editor : list) {
        if (editor.getContentComponent().isShowing()) {
            filtered.add(editor);
        }
    }
    return filtered;
}
Also used : Editor(com.intellij.openapi.editor.Editor) SmartList(com.intellij.util.SmartList) NotNull(org.jetbrains.annotations.NotNull)

Example 27 with SmartList

use of com.intellij.util.SmartList in project intellij-community by JetBrains.

the class TemplateModuleBuilder method unzip.

private void unzip(@Nullable final String projectName, String path, final boolean moduleMode, @Nullable ProgressIndicator pI, boolean reportFailuresWithDialog) {
    final WizardInputField basePackage = getBasePackageField();
    try {
        final File dir = new File(path);
        class ExceptionConsumer implements Consumer<VelocityException> {

            private String myPath;

            private String myText;

            private SmartList<Trinity<String, String, VelocityException>> myFailures = new SmartList<>();

            @Override
            public void consume(VelocityException e) {
                myFailures.add(Trinity.create(myPath, myText, e));
            }

            private void setCurrentFile(String path, String text) {
                myPath = path;
                myText = text;
            }

            private void reportFailures() {
                if (myFailures.isEmpty()) {
                    return;
                }
                if (reportFailuresWithDialog) {
                    String dialogMessage;
                    if (myFailures.size() == 1) {
                        dialogMessage = "Failed to decode file \'" + myFailures.get(0).getFirst() + "\'";
                    } else {
                        StringBuilder dialogMessageBuilder = new StringBuilder();
                        dialogMessageBuilder.append("Failed to decode files: \n");
                        for (Trinity<String, String, VelocityException> failure : myFailures) {
                            dialogMessageBuilder.append(failure.getFirst()).append("\n");
                        }
                        dialogMessage = dialogMessageBuilder.toString();
                    }
                    Messages.showErrorDialog(dialogMessage, "Decoding Template");
                }
                StringBuilder reportBuilder = new StringBuilder();
                for (Trinity<String, String, VelocityException> failure : myFailures) {
                    reportBuilder.append("File: ").append(failure.getFirst()).append("\n");
                    reportBuilder.append("Exception:\n").append(ExceptionUtil.getThrowableText(failure.getThird())).append("\n");
                    reportBuilder.append("File content:\n\'").append(failure.getSecond()).append("\'\n");
                    reportBuilder.append("\n===========================================\n");
                }
                LOG.error(LogMessageEx.createEvent("Cannot decode files in template", "", new Attachment("Files in template", reportBuilder.toString())));
            }
        }
        ExceptionConsumer consumer = new ExceptionConsumer();
        List<File> filesToRefresh = new ArrayList<>();
        myTemplate.processStream(new ArchivedProjectTemplate.StreamProcessor<Void>() {

            @Override
            public Void consume(@NotNull ZipInputStream stream) throws IOException {
                ZipUtil.unzip(ProgressManager.getInstance().getProgressIndicator(), dir, stream, path1 -> {
                    if (moduleMode && path1.contains(Project.DIRECTORY_STORE_FOLDER)) {
                        return null;
                    }
                    if (basePackage != null) {
                        return path1.replace(getPathFragment(basePackage.getDefaultValue()), getPathFragment(basePackage.getValue()));
                    }
                    return path1;
                }, new ZipUtil.ContentProcessor() {

                    @Override
                    public byte[] processContent(byte[] content, File file) throws IOException {
                        if (pI != null) {
                            pI.checkCanceled();
                        }
                        FileType fileType = FileTypeManager.getInstance().getFileTypeByExtension(FileUtilRt.getExtension(file.getName()));
                        String text = new String(content, CharsetToolkit.UTF8_CHARSET);
                        consumer.setCurrentFile(file.getName(), text);
                        return fileType.isBinary() ? content : processTemplates(projectName, text, file, consumer);
                    }
                }, true);
                myTemplate.handleUnzippedDirectories(dir, filesToRefresh);
                return null;
            }
        });
        if (pI != null) {
            pI.setText("Refreshing...");
        }
        String iml = ContainerUtil.find(dir.list(), s -> s.endsWith(".iml"));
        if (moduleMode) {
            File from = new File(path, iml);
            File to = new File(getModuleFilePath());
            if (!from.renameTo(to)) {
                throw new IOException("Can't rename " + from + " to " + to);
            }
        }
        RefreshQueue refreshQueue = RefreshQueue.getInstance();
        LOG.assertTrue(!filesToRefresh.isEmpty());
        for (File file : filesToRefresh) {
            VirtualFile virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file);
            if (virtualFile == null) {
                throw new IOException("Can't find " + file);
            }
            refreshQueue.refresh(false, true, null, virtualFile);
        }
        consumer.reportFailures();
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}
Also used : FileUtilRt(com.intellij.openapi.util.io.FileUtilRt) Trinity(com.intellij.openapi.util.Trinity) com.intellij.openapi.module(com.intellij.openapi.module) VirtualFile(com.intellij.openapi.vfs.VirtualFile) Task(com.intellij.openapi.progress.Task) JDOMException(org.jdom.JDOMException) SmartList(com.intellij.util.SmartList) ModifiableRootModel(com.intellij.openapi.roots.ModifiableRootModel) CodeStyleFacade(com.intellij.codeStyle.CodeStyleFacade) Messages(com.intellij.openapi.ui.Messages) FileUtil(com.intellij.openapi.util.io.FileUtil) Logger(com.intellij.openapi.diagnostic.Logger) VelocityException(org.apache.velocity.exception.VelocityException) ProgressManager(com.intellij.openapi.progress.ProgressManager) FileTypeManager(com.intellij.openapi.fileTypes.FileTypeManager) LocalFileSystem(com.intellij.openapi.vfs.LocalFileSystem) PathMacroUtil(org.jetbrains.jps.model.serialization.PathMacroUtil) com.intellij.ide.util.projectWizard(com.intellij.ide.util.projectWizard) Nullable(org.jetbrains.annotations.Nullable) LogMessageEx(com.intellij.diagnostic.LogMessageEx) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) List(java.util.List) ModuleRootManager(com.intellij.openapi.roots.ModuleRootManager) ApplicationManager(com.intellij.openapi.application.ApplicationManager) ModulesProvider(com.intellij.openapi.roots.ui.configuration.ModulesProvider) ConfigurationException(com.intellij.openapi.options.ConfigurationException) NotNull(org.jetbrains.annotations.NotNull) Consumer(com.intellij.util.Consumer) FileTemplate(com.intellij.ide.fileTemplates.FileTemplate) RunConfiguration(com.intellij.execution.configurations.RunConfiguration) WriteAction(com.intellij.openapi.application.WriteAction) ZipInputStream(java.util.zip.ZipInputStream) CharsetToolkit(com.intellij.openapi.vfs.CharsetToolkit) Computable(com.intellij.openapi.util.Computable) InvalidDataException(com.intellij.openapi.util.InvalidDataException) ContainerUtil(com.intellij.util.containers.ContainerUtil) ModuleBasedConfiguration(com.intellij.execution.configurations.ModuleBasedConfiguration) ArrayList(java.util.ArrayList) RefreshQueue(com.intellij.openapi.vfs.newvfs.RefreshQueue) StartupManager(com.intellij.openapi.startup.StartupManager) RunManager(com.intellij.execution.RunManager) Project(com.intellij.openapi.project.Project) Properties(java.util.Properties) FileTemplateManager(com.intellij.ide.fileTemplates.FileTemplateManager) ProjectManagerEx(com.intellij.openapi.project.ex.ProjectManagerEx) ZipUtil(com.intellij.platform.templates.github.ZipUtil) IOException(java.io.IOException) FileType(com.intellij.openapi.fileTypes.FileType) File(java.io.File) StringUtilRt(com.intellij.openapi.util.text.StringUtilRt) ExceptionUtil(com.intellij.util.ExceptionUtil) FileTemplateUtil(com.intellij.ide.fileTemplates.FileTemplateUtil) Attachment(com.intellij.openapi.diagnostic.Attachment) javax.swing(javax.swing) VirtualFile(com.intellij.openapi.vfs.VirtualFile) ArrayList(java.util.ArrayList) Attachment(com.intellij.openapi.diagnostic.Attachment) RefreshQueue(com.intellij.openapi.vfs.newvfs.RefreshQueue) Consumer(com.intellij.util.Consumer) VelocityException(org.apache.velocity.exception.VelocityException) IOException(java.io.IOException) ZipInputStream(java.util.zip.ZipInputStream) FileType(com.intellij.openapi.fileTypes.FileType) SmartList(com.intellij.util.SmartList) VirtualFile(com.intellij.openapi.vfs.VirtualFile) File(java.io.File)

Example 28 with SmartList

use of com.intellij.util.SmartList in project intellij-community by JetBrains.

the class GotoTestOrCodeHandler method getSourceAndTargetElements.

@Override
@Nullable
protected GotoData getSourceAndTargetElements(final Editor editor, final PsiFile file) {
    PsiElement selectedElement = getSelectedElement(editor, file);
    PsiElement sourceElement = TestFinderHelper.findSourceElement(selectedElement);
    if (sourceElement == null)
        return null;
    List<AdditionalAction> actions = new SmartList<>();
    Collection<PsiElement> candidates;
    if (TestFinderHelper.isTest(selectedElement)) {
        candidates = TestFinderHelper.findClassesForTest(selectedElement);
    } else {
        candidates = TestFinderHelper.findTestsForClass(selectedElement);
        final TestCreator creator = LanguageTestCreators.INSTANCE.forLanguage(file.getLanguage());
        if (creator != null && creator.isAvailable(file.getProject(), editor, file)) {
            actions.add(new AdditionalAction() {

                @NotNull
                @Override
                public String getText() {
                    return "Create New Test...";
                }

                @Override
                public Icon getIcon() {
                    return AllIcons.Actions.IntentionBulb;
                }

                @Override
                public void execute() {
                    creator.createTest(file.getProject(), editor, file);
                }
            });
        }
    }
    return new GotoData(sourceElement, PsiUtilCore.toPsiElementArray(candidates), actions);
}
Also used : SmartList(com.intellij.util.SmartList) NotNull(org.jetbrains.annotations.NotNull) PsiElement(com.intellij.psi.PsiElement) Nullable(org.jetbrains.annotations.Nullable)

Example 29 with SmartList

use of com.intellij.util.SmartList in project intellij-community by JetBrains.

the class FirefoxUtil method computeProfiles.

@NotNull
public static List<FirefoxProfile> computeProfiles(@Nullable File profilesFile) {
    if (profilesFile == null || !profilesFile.isFile()) {
        return Collections.emptyList();
    }
    try {
        BufferedReader reader;
        reader = new BufferedReader(new FileReader(profilesFile));
        try {
            final List<FirefoxProfile> profiles = new SmartList<>();
            boolean insideProfile = false;
            String currentName = null;
            String currentPath = null;
            boolean isDefault = false;
            boolean isRelative = false;
            boolean eof = false;
            while (!eof) {
                String line = reader.readLine();
                if (line == null) {
                    eof = true;
                    line = "[]";
                } else {
                    line = line.trim();
                }
                if (line.startsWith("[") && line.endsWith("]")) {
                    if (!StringUtil.isEmpty(currentPath) && !StringUtil.isEmpty(currentName)) {
                        profiles.add(new FirefoxProfile(currentName, currentPath, isDefault, isRelative));
                    }
                    currentName = null;
                    currentPath = null;
                    isDefault = false;
                    isRelative = false;
                    insideProfile = StringUtil.startsWithIgnoreCase(line, "[Profile");
                    continue;
                }
                final int i = line.indexOf('=');
                if (i != -1 && insideProfile) {
                    String name = line.substring(0, i).trim();
                    String value = line.substring(i + 1).trim();
                    if (name.equalsIgnoreCase("path")) {
                        currentPath = value;
                    } else if (name.equalsIgnoreCase("name")) {
                        currentName = value;
                    } else if (name.equalsIgnoreCase("default") && value.equals("1")) {
                        isDefault = true;
                    } else //noinspection SpellCheckingInspection
                    if (name.equalsIgnoreCase("isrelative") && value.equals("1")) {
                        isRelative = true;
                    }
                }
            }
            return profiles;
        } finally {
            reader.close();
        }
    } catch (IOException e) {
        LOG.info(e);
        return Collections.emptyList();
    }
}
Also used : BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader) IOException(java.io.IOException) SmartList(com.intellij.util.SmartList) NotNull(org.jetbrains.annotations.NotNull)

Example 30 with SmartList

use of com.intellij.util.SmartList in project intellij-community by JetBrains.

the class AbstractModuleDataService method removeData.

@Override
public void removeData(@NotNull final Computable<Collection<Module>> toRemoveComputable, @NotNull final Collection<DataNode<E>> toIgnore, @NotNull final ProjectData projectData, @NotNull final Project project, @NotNull final IdeModifiableModelsProvider modelsProvider) {
    final Collection<Module> toRemove = toRemoveComputable.compute();
    final List<Module> modules = new SmartList<>(toRemove);
    for (DataNode<E> moduleDataNode : toIgnore) {
        final Module module = modelsProvider.findIdeModule(moduleDataNode.getData());
        ContainerUtil.addIfNotNull(modules, module);
    }
    if (modules.isEmpty()) {
        return;
    }
    ContainerUtil.removeDuplicates(modules);
    for (Module module : modules) {
        if (module.isDisposed())
            continue;
        unlinkModuleFromExternalSystem(module);
    }
    ruleOrphanModules(modules, project, projectData.getOwner(), modules1 -> {
        for (Module module : modules1) {
            if (module.isDisposed())
                continue;
            String path = module.getModuleFilePath();
            final ModifiableModuleModel moduleModel = modelsProvider.getModifiableModuleModel();
            moduleModel.disposeModule(module);
            ModuleBuilder.deleteModuleFile(path);
        }
    });
}
Also used : ModifiableModuleModel(com.intellij.openapi.module.ModifiableModuleModel) Module(com.intellij.openapi.module.Module) SmartList(com.intellij.util.SmartList)

Aggregations

SmartList (com.intellij.util.SmartList)163 NotNull (org.jetbrains.annotations.NotNull)70 Nullable (org.jetbrains.annotations.Nullable)25 VirtualFile (com.intellij.openapi.vfs.VirtualFile)24 Module (com.intellij.openapi.module.Module)15 Project (com.intellij.openapi.project.Project)14 TextRange (com.intellij.openapi.util.TextRange)12 PsiElement (com.intellij.psi.PsiElement)12 List (java.util.List)12 Element (org.jdom.Element)12 File (java.io.File)11 THashSet (gnu.trove.THashSet)9 ContainerUtil (com.intellij.util.containers.ContainerUtil)8 ArrayList (java.util.ArrayList)8 Collection (java.util.Collection)8 Pair (com.intellij.openapi.util.Pair)7 PsiFile (com.intellij.psi.PsiFile)6 IOException (java.io.IOException)6 PropertiesFile (com.intellij.lang.properties.psi.PropertiesFile)5 IElementType (com.intellij.psi.tree.IElementType)5