Merge branch 'master' into upsource-master

Conflicts:
	build/scripts/libLicenses.gant
	images/src/org/intellij/images/index/ImageInfoIndex.java
	java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java
	java/execution/impl/src/com/intellij/execution/actions/AbstractRerunFailedTestsAction.java
	jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildSession.java
	jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java
	jps/jps-builders/src/org/jetbrains/jps/incremental/storage/BuildDataManager.java
	jps/jps-builders/src/org/jetbrains/jps/javac/JavacMain.java
	jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager.java
	jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17.java
	jps/model/src/org/jetbrains/jps/idea/IdeaProjectLoader.groovy
	platform/lang-api/src/com/intellij/execution/runners/ExecutionEnvironment.java
	platform/lang-impl/src/com/intellij/codeInsight/editorActions/CopyPasteIndentProcessor.java
	platform/platform-impl/src/com/intellij/featureStatistics/actions/ShowFeatureUsageStatisticsDialog.java
	platform/platform-resources-en/src/messages/ActionsBundle.properties
	platform/util/src/com/intellij/icons/AllIcons.java
	plugins/IdeaTestAssistant/src/com/intellij/testAssistant/TestDataHighlightingPass.java
	plugins/java-i18n/src/com/intellij/spellchecker/LiteralExpressionTokenizer.java
	plugins/junit/src/com/intellij/execution/junit/JUnitConfigurationType.java
	plugins/spellchecker/src/com/intellij/spellchecker/tokenizer/EscapeSequenceTokenizer.java
This commit is contained in:
Evgeny Pasynkov
2012-07-04 11:45:53 +02:00
68 changed files with 16778 additions and 15221 deletions
@@ -101,12 +101,7 @@ public class DuplicatesImpl {
private static boolean replaceMatch(final Project project, final MatchProvider provider, final Match match, @NotNull final Editor editor,
final int idx, final int size, Ref<Boolean> showAll, final String confirmDuplicatePrompt) {
final ArrayList<RangeHighlighter> highlighters = new ArrayList<RangeHighlighter>();
highlightMatch(project, editor, match, highlighters);
final TextRange textRange = match.getTextRange();
final LogicalPosition logicalPosition = editor.offsetToLogicalPosition(textRange.getStartOffset());
expandAllRegionsCoveringRange(project, editor, textRange);
editor.getScrollingModel().scrollTo(logicalPosition, ScrollType.MAKE_VISIBLE);
final ArrayList<RangeHighlighter> highlighters = previewMatch(project, match, editor);
if (!ApplicationManager.getApplication().isUnitTestMode()) {
if (size > 1 && (showAll.get() == null || !showAll.get())) {
final String prompt = provider.getConfirmDuplicatePrompt(match);
@@ -145,6 +140,16 @@ public class DuplicatesImpl {
return false;
}
public static ArrayList<RangeHighlighter> previewMatch(Project project, Match match, Editor editor) {
final ArrayList<RangeHighlighter> highlighters = new ArrayList<RangeHighlighter>();
highlightMatch(project, editor, match, highlighters);
final TextRange textRange = match.getTextRange();
final LogicalPosition logicalPosition = editor.offsetToLogicalPosition(textRange.getStartOffset());
expandAllRegionsCoveringRange(project, editor, textRange);
editor.getScrollingModel().scrollTo(logicalPosition, ScrollType.MAKE_VISIBLE);
return highlighters;
}
private static void expandAllRegionsCoveringRange(final Project project, Editor editor, final TextRange textRange) {
final FoldRegion[] foldRegions = CodeFoldingManager.getInstance(project).getFoldRegionsAtOffset(editor, textRange.getStartOffset());
boolean anyCollapsed = false;
@@ -177,9 +182,13 @@ public class DuplicatesImpl {
public static void processDuplicates(@NotNull MatchProvider provider, @NotNull Project project, @NotNull Editor editor) {
boolean hasDuplicates = provider.hasDuplicates();
if (hasDuplicates) {
List<Match> duplicates = provider.getDuplicates();
if (duplicates.size() == 1) {
previewMatch(project, duplicates.get(0), editor);
}
final int answer = Messages.showYesNoDialog(project,
RefactoringBundle.message("0.has.detected.1.code.fragments.in.this.file.that.can.be.replaced.with.a.call.to.extracted.method",
ApplicationNamesInfo.getInstance().getProductName(), provider.getDuplicates().size()),
ApplicationNamesInfo.getInstance().getProductName(), duplicates.size()),
"Process Duplicates", Messages.getQuestionIcon());
if (answer == 0) {
invoke(project, editor, provider);