diff --git a/java/java-impl/src/com/intellij/codeEditor/printing/MethodSeparatorProvider.java b/java/java-impl/src/com/intellij/codeEditor/printing/MethodSeparatorProvider.java deleted file mode 100644 index 80aa4d5d5d23..000000000000 --- a/java/java-impl/src/com/intellij/codeEditor/printing/MethodSeparatorProvider.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2000-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * User: anna - * Date: 25-Jan-2008 - */ -package com.intellij.codeEditor.printing; - -import com.intellij.codeInsight.daemon.LineMarkerInfo; -import com.intellij.codeInsight.daemon.impl.LineMarkersPass; -import com.intellij.openapi.editor.Document; -import com.intellij.openapi.editor.Editor; -import com.intellij.psi.PsiFile; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -public class MethodSeparatorProvider extends FileSeparatorProvider { - @Override - public List getFileSeparators(final PsiFile file, final Document document, @Nullable final Editor editor) { - final List result = new ArrayList(); - LineMarkersPass pass = new LineMarkersPass(file.getProject(), file, editor, document, file.getTextRange()); - for (LineMarkerInfo lineMarkerInfo : pass.queryLineMarkers()) { - if (lineMarkerInfo.separatorColor != null) { - result.add(lineMarkerInfo); - } - } - - Collections.sort(result, new Comparator() { - public int compare(final LineMarkerInfo i1, final LineMarkerInfo i2) { - return i1.startOffset - i2.startOffset; - } - }); - return result; - } -} \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/codeEditor/printing/ExportToHTMLManager.java b/platform/lang-impl/src/com/intellij/codeEditor/printing/ExportToHTMLManager.java index e8fd2235d370..0ee2cd2e5e46 100644 --- a/platform/lang-impl/src/com/intellij/codeEditor/printing/ExportToHTMLManager.java +++ b/platform/lang-impl/src/com/intellij/codeEditor/printing/ExportToHTMLManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import com.intellij.CommonBundle; import com.intellij.ide.BrowserUtil; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.extensions.Extensions; @@ -130,32 +131,39 @@ class ExportToHTMLManager { } } - private static boolean exportPsiFile(final PsiFile psiFile, String outputDirectoryName, Project project, HashMap filesMap) { - ExportToHTMLSettings exportToHTMLSettings = ExportToHTMLSettings.getInstance(project); + private static boolean exportPsiFile(final PsiFile psiFile, + final String outputDirectoryName, + final Project project, + final HashMap filesMap) { + final ExportToHTMLSettings exportToHTMLSettings = ExportToHTMLSettings.getInstance(project); if (psiFile instanceof PsiBinaryFile) { return true; } - TreeMap refMap = null; - for (PrintOption printOption : Extensions.getExtensions(PrintOption.EP_NAME)) { - final TreeMap map = printOption.collectReferences(psiFile, filesMap); - if (map != null) { - refMap = new TreeMap(); - refMap.putAll(map); - } - } + ApplicationManager.getApplication().runReadAction(new Runnable() { + @Override + public void run() { + TreeMap refMap = null; + for (PrintOption printOption : Extensions.getExtensions(PrintOption.EP_NAME)) { + final TreeMap map = printOption.collectReferences(psiFile, filesMap); + if (map != null) { + refMap = new TreeMap(); + refMap.putAll(map); + } + } - String dirName = constructOutputDirectory(psiFile, outputDirectoryName); - HTMLTextPainter textPainter = new HTMLTextPainter(psiFile, project, dirName, exportToHTMLSettings.PRINT_LINE_NUMBERS); - try { - textPainter.paint(refMap, psiFile.getFileType()); - } - catch (FileNotFoundException e) { - myLastException = e; - return false; - } - return true; + String dirName = constructOutputDirectory(psiFile, outputDirectoryName); + HTMLTextPainter textPainter = new HTMLTextPainter(psiFile, project, dirName, exportToHTMLSettings.PRINT_LINE_NUMBERS); + try { + textPainter.paint(refMap, psiFile.getFileType()); + } + catch (FileNotFoundException e) { + myLastException = e; + } + } + }); + return myLastException == null; } private static String constructOutputDirectory(PsiFile psiFile, String outputDirectoryName) { @@ -241,11 +249,18 @@ class ExportToHTMLManager { final ArrayList filesList = new ArrayList(); final boolean isRecursive = myExportToHTMLSettings.isIncludeSubdirectories(); - try { - addToPsiFileList(myPsiDirectory, filesList, isRecursive, myOutputDirectoryName); - } - catch (FileNotFoundException e) { - myLastException = e; + ApplicationManager.getApplication().runReadAction(new Runnable() { + @Override + public void run() { + try { + addToPsiFileList(myPsiDirectory, filesList, isRecursive, myOutputDirectoryName); + } + catch (FileNotFoundException e) { + myLastException = e; + } + } + }); + if (myLastException != null) { return; } HashMap filesMap = new HashMap(); diff --git a/platform/lang-impl/src/com/intellij/codeEditor/printing/FileSeparatorProvider.java b/platform/lang-impl/src/com/intellij/codeEditor/printing/FileSeparatorProvider.java index 1a1d7b0a43c1..31ec50c83606 100644 --- a/platform/lang-impl/src/com/intellij/codeEditor/printing/FileSeparatorProvider.java +++ b/platform/lang-impl/src/com/intellij/codeEditor/printing/FileSeparatorProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,21 +21,32 @@ package com.intellij.codeEditor.printing; import com.intellij.codeInsight.daemon.LineMarkerInfo; -import com.intellij.openapi.components.ServiceManager; +import com.intellij.codeInsight.daemon.impl.LineMarkersPass; import com.intellij.openapi.editor.Document; -import com.intellij.openapi.editor.Editor; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; public class FileSeparatorProvider { - public static FileSeparatorProvider getInstance() { - return ServiceManager.getService(FileSeparatorProvider.class); - } - @Nullable - public List getFileSeparators(PsiFile file, final Document document, @Nullable final Editor editor) { - return null; + public static List getFileSeparators(PsiFile file, final Document document) { + final List result = new ArrayList(); + LineMarkersPass pass = new LineMarkersPass(file.getProject(), file, null, document, file.getTextRange()); + for (LineMarkerInfo lineMarkerInfo : pass.queryLineMarkers()) { + if (lineMarkerInfo.separatorColor != null) { + result.add(lineMarkerInfo); + } + } + + Collections.sort(result, new Comparator() { + public int compare(final LineMarkerInfo i1, final LineMarkerInfo i2) { + return i1.startOffset - i2.startOffset; + } + }); + return result; } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/codeEditor/printing/HTMLTextPainter.java b/platform/lang-impl/src/com/intellij/codeEditor/printing/HTMLTextPainter.java index 22e365cc5a4f..ccb474bcadcf 100644 --- a/platform/lang-impl/src/com/intellij/codeEditor/printing/HTMLTextPainter.java +++ b/platform/lang-impl/src/com/intellij/codeEditor/printing/HTMLTextPainter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,7 +35,6 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.psi.impl.file.PsiDirectoryFactory; -import com.intellij.psi.util.PsiUtilBase; import com.intellij.ui.JBColor; import org.jetbrains.annotations.NonNls; @@ -86,8 +85,7 @@ class HTMLTextPainter { ArrayList methodSeparators = new ArrayList(); if (document != null) { - final List separators = FileSeparatorProvider.getInstance().getFileSeparators(psiFile, document, - PsiUtilBase.findEditor(psiFile)); + final List separators = FileSeparatorProvider.getFileSeparators(psiFile, document); if (separators != null) { methodSeparators.addAll(separators); } diff --git a/platform/lang-impl/src/com/intellij/codeEditor/printing/TextPainter.java b/platform/lang-impl/src/com/intellij/codeEditor/printing/TextPainter.java index 7c84f5e637aa..801bfdc5f819 100644 --- a/platform/lang-impl/src/com/intellij/codeEditor/printing/TextPainter.java +++ b/platform/lang-impl/src/com/intellij/codeEditor/printing/TextPainter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -100,7 +100,7 @@ class TextPainter extends BasePainter { FileType fileType, Editor editor) { this(editorDocument, highlighter, fullFileName, shortFileName, psiFile.getProject(), fileType, - FileSeparatorProvider.getInstance().getFileSeparators(psiFile, editorDocument, editor)); + FileSeparatorProvider.getFileSeparators(psiFile, editorDocument)); } public TextPainter(@NotNull DocumentEx editorDocument, diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java index 6ae363f52f7e..e67c63bb7a50 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java @@ -109,7 +109,7 @@ public class LineMarkersPass extends TextEditorHighlightingPass implements LineM myMarkers = mergeLineMarkers(lineMarkers, myEditor); } - static List mergeLineMarkers(@NotNull List markers, Editor editor) { + static List mergeLineMarkers(@NotNull List markers, @Nullable Editor editor) { List forMerge = new ArrayList(); final Iterator iterator = markers.iterator(); while (iterator.hasNext()) { diff --git a/platform/platform-resources/src/META-INF/PlatformLangPlugin.xml b/platform/platform-resources/src/META-INF/PlatformLangPlugin.xml index 4c2a05ef506b..62afda53d807 100644 --- a/platform/platform-resources/src/META-INF/PlatformLangPlugin.xml +++ b/platform/platform-resources/src/META-INF/PlatformLangPlugin.xml @@ -71,8 +71,6 @@ - diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml index ded75cc64893..b9db52d3b9eb 100644 --- a/resources/src/META-INF/IdeaPlugin.xml +++ b/resources/src/META-INF/IdeaPlugin.xml @@ -1341,8 +1341,6 @@ -