diff --git a/.idea/libraries/Netty.xml b/.idea/libraries/Netty.xml
index 0d0f840e2724..3732490c7e8a 100644
--- a/.idea/libraries/Netty.xml
+++ b/.idea/libraries/Netty.xml
@@ -1,11 +1,11 @@
-
+
-
+
\ No newline at end of file
diff --git a/build/scripts/libLicenses.gant b/build/scripts/libLicenses.gant
index 36197769af6a..a2ff6d5cb041 100644
--- a/build/scripts/libLicenses.gant
+++ b/build/scripts/libLicenses.gant
@@ -234,7 +234,7 @@ libraryLicense(name: "XML-RPC", libraryName: "XmlRPC", version: "2.0", license:
libraryLicense(name: "XStream", version: "1.2.1", license: "BSD", url: "http://xstream.codehaus.org/", licenseUrl: "http://xstream.codehaus.org/license.html")
libraryLicense(name: "YourKit Java Profiler", libraryName: "yjp-controller-api-redist.jar", version: "8.0.x", license: "link (commercial license)", url: "http://yourkit.com/", licenseUrl: "http://www.yourkit.com/purchase/license.html")
libraryLicense(name: "protobuf", version: "2.3.0", license: "New BSD", url: "http://code.google.com/p/protobuf/", licenseUrl: "http://code.google.com/p/protobuf/source/browse/trunk/COPYING.txt?r=367")
-libraryLicense(name: "Netty", libraryName: "Netty", version: "3.3.1", license: "Apache 2.0", url: "http://netty.io", licenseUrl: "http://www.apache.org/licenses/LICENSE-2.0")
+libraryLicense(name: "Netty", libraryName: "Netty", version: "3.5.5", license: "Apache 2.0", url: "http://netty.io", licenseUrl: "http://www.apache.org/licenses/LICENSE-2.0")
libraryLicense(name: "Kryo", libraryName: "Kryo", version: "1.04", license: "New BSD License", url: "http://code.google.com/p/kryo/", licenseUrl: "http://www.opensource.org/licenses/bsd-license.php")
libraryLicense(name: "Snappy-Java", libraryName: "Snappy-Java", version: "1.0.4.1", license: "Apache 2.0", url: "http://code.google.com/p/snappy-java/", licenseUrl: "http://www.apache.org/licenses/LICENSE-2.0")
libraryLicense(name: "Cucumber-JVM", libraryName: "cucumber-jvm", version: "1.0.11", license: "MIT License", url: "https://github.com/cucumber/cucumber-jvm/", licenseUrl: "http://www.opensource.org/licenses/mit-license.html")
diff --git a/java/compiler/impl/src/com/intellij/compiler/server/BuildMessageDispatcher.java b/java/compiler/impl/src/com/intellij/compiler/server/BuildMessageDispatcher.java
index bfe63f9f644f..d8864be7b77a 100644
--- a/java/compiler/impl/src/com/intellij/compiler/server/BuildMessageDispatcher.java
+++ b/java/compiler/impl/src/com/intellij/compiler/server/BuildMessageDispatcher.java
@@ -151,6 +151,14 @@ class BuildMessageDispatcher extends SimpleChannelHandler {
}
}
+ @Override
+ public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {
+ final Throwable cause = e.getCause();
+ if (cause != null) {
+ LOG.info(cause);
+ }
+ ctx.sendUpstream(e);
+ }
@Override
public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
diff --git a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterIndentationTest.java b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterIndentationTest.java
index 50d371e89423..a2620e436be3 100644
--- a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterIndentationTest.java
+++ b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterIndentationTest.java
@@ -503,4 +503,17 @@ public class JavaFormatterIndentationTest extends AbstractJavaFormatterTest {
"// This is a line comment"
);
}
+
+ public void testMultilineComment() {
+ // IDEA-90860
+ String text =
+ "\n" +
+ "/*\n" +
+ " * comment\n" +
+ " */\n" +
+ "\n" +
+ "class Test {\n" +
+ "}";
+ doTextTest(text, text);
+ }
}
diff --git a/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsModuleDependencyImpl.java b/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsModuleDependencyImpl.java
index 9665284256ed..4a37ee044e27 100644
--- a/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsModuleDependencyImpl.java
+++ b/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsModuleDependencyImpl.java
@@ -1,7 +1,8 @@
package org.jetbrains.jps.model.module.impl;
+import com.intellij.openapi.util.Ref;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.jps.model.*;
+import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleDependency;
@@ -14,6 +15,8 @@ public class JpsModuleDependencyImpl extends JpsDependencyElementBase
MODULE_REFERENCE_CHILD_ROLE = JpsElementChildRoleBase.create("module reference");
+ private volatile Ref myCachedModule = null;
+
public JpsModuleDependencyImpl(final JpsModuleReference moduleReference) {
super();
myContainer.setChild(MODULE_REFERENCE_CHILD_ROLE, moduleReference);
@@ -31,7 +34,12 @@ public class JpsModuleDependencyImpl extends JpsDependencyElementBase moduleRef = myCachedModule;
+ if (moduleRef == null) {
+ moduleRef = new Ref(getModuleReference().resolve());
+ myCachedModule = moduleRef;
+ }
+ return moduleRef.get();
}
@NotNull
diff --git a/lib/netty-3.5.1.Final.jar b/lib/netty-3.5.5.Final.jar
similarity index 66%
rename from lib/netty-3.5.1.Final.jar
rename to lib/netty-3.5.5.Final.jar
index 2c6f4b05b710..39fa449df156 100644
Binary files a/lib/netty-3.5.1.Final.jar and b/lib/netty-3.5.5.Final.jar differ
diff --git a/lib/required_for_dist.txt b/lib/required_for_dist.txt
index b734fa5b346d..b0e3e3ad1179 100644
--- a/lib/required_for_dist.txt
+++ b/lib/required_for_dist.txt
@@ -45,5 +45,5 @@ xmlrpc-2.0.jar
xpp3-1.1.4-min.jar
xstream.jar
swingx-core-1.6.2.jar
-netty-3.5.1.Final.jar
+netty-3.5.5.Final.jar
protobuf-2.4.1.jar
diff --git a/lib/src/netty-3.5.1.Final-sources.jar b/lib/src/netty-3.5.5.Final-sources.jar
similarity index 73%
rename from lib/src/netty-3.5.1.Final-sources.jar
rename to lib/src/netty-3.5.5.Final-sources.jar
index 8e84d9b582e8..c421a37672f9 100644
Binary files a/lib/src/netty-3.5.1.Final-sources.jar and b/lib/src/netty-3.5.5.Final-sources.jar differ
diff --git a/platform/icons/src/process/big/step_10_dark.png b/platform/icons/src/process/big/step_10_dark.png
new file mode 100755
index 000000000000..cca65cad8a9f
Binary files /dev/null and b/platform/icons/src/process/big/step_10_dark.png differ
diff --git a/platform/icons/src/process/big/step_11_dark.png b/platform/icons/src/process/big/step_11_dark.png
new file mode 100755
index 000000000000..a26c1b8a21c8
Binary files /dev/null and b/platform/icons/src/process/big/step_11_dark.png differ
diff --git a/platform/icons/src/process/big/step_12_dark.png b/platform/icons/src/process/big/step_12_dark.png
new file mode 100755
index 000000000000..2f934937b86e
Binary files /dev/null and b/platform/icons/src/process/big/step_12_dark.png differ
diff --git a/platform/icons/src/process/big/step_1_dark.png b/platform/icons/src/process/big/step_1_dark.png
new file mode 100755
index 000000000000..c2fb7e2ec2c3
Binary files /dev/null and b/platform/icons/src/process/big/step_1_dark.png differ
diff --git a/platform/icons/src/process/big/step_2_dark.png b/platform/icons/src/process/big/step_2_dark.png
new file mode 100755
index 000000000000..cd5fa336a48e
Binary files /dev/null and b/platform/icons/src/process/big/step_2_dark.png differ
diff --git a/platform/icons/src/process/big/step_3_dark.png b/platform/icons/src/process/big/step_3_dark.png
new file mode 100755
index 000000000000..dd69919739d0
Binary files /dev/null and b/platform/icons/src/process/big/step_3_dark.png differ
diff --git a/platform/icons/src/process/big/step_4_dark.png b/platform/icons/src/process/big/step_4_dark.png
new file mode 100755
index 000000000000..02f734e0e8da
Binary files /dev/null and b/platform/icons/src/process/big/step_4_dark.png differ
diff --git a/platform/icons/src/process/big/step_5_dark.png b/platform/icons/src/process/big/step_5_dark.png
new file mode 100755
index 000000000000..331d2a521303
Binary files /dev/null and b/platform/icons/src/process/big/step_5_dark.png differ
diff --git a/platform/icons/src/process/big/step_6_dark.png b/platform/icons/src/process/big/step_6_dark.png
new file mode 100755
index 000000000000..a27dac3a7e80
Binary files /dev/null and b/platform/icons/src/process/big/step_6_dark.png differ
diff --git a/platform/icons/src/process/big/step_7_dark.png b/platform/icons/src/process/big/step_7_dark.png
new file mode 100755
index 000000000000..5ea57e949b3b
Binary files /dev/null and b/platform/icons/src/process/big/step_7_dark.png differ
diff --git a/platform/icons/src/process/big/step_8_dark.png b/platform/icons/src/process/big/step_8_dark.png
new file mode 100755
index 000000000000..8b509833118d
Binary files /dev/null and b/platform/icons/src/process/big/step_8_dark.png differ
diff --git a/platform/icons/src/process/big/step_9_dark.png b/platform/icons/src/process/big/step_9_dark.png
new file mode 100755
index 000000000000..f1bc1c70dbd0
Binary files /dev/null and b/platform/icons/src/process/big/step_9_dark.png differ
diff --git a/platform/icons/src/process/big/step_passive_dark.png b/platform/icons/src/process/big/step_passive_dark.png
new file mode 100755
index 000000000000..05c7aa302f37
Binary files /dev/null and b/platform/icons/src/process/big/step_passive_dark.png differ
diff --git a/platform/icons/src/process/fs/step_10_dark.png b/platform/icons/src/process/fs/step_10_dark.png
new file mode 100755
index 000000000000..cbfc2ff0e39a
Binary files /dev/null and b/platform/icons/src/process/fs/step_10_dark.png differ
diff --git a/platform/icons/src/process/fs/step_11_dark.png b/platform/icons/src/process/fs/step_11_dark.png
new file mode 100755
index 000000000000..b75e1a938822
Binary files /dev/null and b/platform/icons/src/process/fs/step_11_dark.png differ
diff --git a/platform/icons/src/process/fs/step_12_dark.png b/platform/icons/src/process/fs/step_12_dark.png
new file mode 100755
index 000000000000..2e24b06c033c
Binary files /dev/null and b/platform/icons/src/process/fs/step_12_dark.png differ
diff --git a/platform/icons/src/process/fs/step_13_dark.png b/platform/icons/src/process/fs/step_13_dark.png
new file mode 100755
index 000000000000..fc6ab4916615
Binary files /dev/null and b/platform/icons/src/process/fs/step_13_dark.png differ
diff --git a/platform/icons/src/process/fs/step_14_dark.png b/platform/icons/src/process/fs/step_14_dark.png
new file mode 100755
index 000000000000..fc2392512646
Binary files /dev/null and b/platform/icons/src/process/fs/step_14_dark.png differ
diff --git a/platform/icons/src/process/fs/step_15_dark.png b/platform/icons/src/process/fs/step_15_dark.png
new file mode 100755
index 000000000000..6a58d44112d2
Binary files /dev/null and b/platform/icons/src/process/fs/step_15_dark.png differ
diff --git a/platform/icons/src/process/fs/step_16_dark.png b/platform/icons/src/process/fs/step_16_dark.png
new file mode 100755
index 000000000000..77148ad42726
Binary files /dev/null and b/platform/icons/src/process/fs/step_16_dark.png differ
diff --git a/platform/icons/src/process/fs/step_17_dark.png b/platform/icons/src/process/fs/step_17_dark.png
new file mode 100755
index 000000000000..d989f72bd1da
Binary files /dev/null and b/platform/icons/src/process/fs/step_17_dark.png differ
diff --git a/platform/icons/src/process/fs/step_18_dark.png b/platform/icons/src/process/fs/step_18_dark.png
new file mode 100755
index 000000000000..6a90563ca477
Binary files /dev/null and b/platform/icons/src/process/fs/step_18_dark.png differ
diff --git a/platform/icons/src/process/fs/step_1_dark.png b/platform/icons/src/process/fs/step_1_dark.png
new file mode 100755
index 000000000000..cbfc2ff0e39a
Binary files /dev/null and b/platform/icons/src/process/fs/step_1_dark.png differ
diff --git a/platform/icons/src/process/fs/step_2_dark.png b/platform/icons/src/process/fs/step_2_dark.png
new file mode 100755
index 000000000000..0883304c9a42
Binary files /dev/null and b/platform/icons/src/process/fs/step_2_dark.png differ
diff --git a/platform/icons/src/process/fs/step_3_dark.png b/platform/icons/src/process/fs/step_3_dark.png
new file mode 100755
index 000000000000..7979cb1b23c5
Binary files /dev/null and b/platform/icons/src/process/fs/step_3_dark.png differ
diff --git a/platform/icons/src/process/fs/step_4_dark.png b/platform/icons/src/process/fs/step_4_dark.png
new file mode 100755
index 000000000000..fc6ab4916615
Binary files /dev/null and b/platform/icons/src/process/fs/step_4_dark.png differ
diff --git a/platform/icons/src/process/fs/step_5_dark.png b/platform/icons/src/process/fs/step_5_dark.png
new file mode 100755
index 000000000000..6f56a61e3aac
Binary files /dev/null and b/platform/icons/src/process/fs/step_5_dark.png differ
diff --git a/platform/icons/src/process/fs/step_6_dark.png b/platform/icons/src/process/fs/step_6_dark.png
new file mode 100755
index 000000000000..eecb17de34e6
Binary files /dev/null and b/platform/icons/src/process/fs/step_6_dark.png differ
diff --git a/platform/icons/src/process/fs/step_7_dark.png b/platform/icons/src/process/fs/step_7_dark.png
new file mode 100755
index 000000000000..77148ad42726
Binary files /dev/null and b/platform/icons/src/process/fs/step_7_dark.png differ
diff --git a/platform/icons/src/process/fs/step_8_dark.png b/platform/icons/src/process/fs/step_8_dark.png
new file mode 100755
index 000000000000..1a0fce559fca
Binary files /dev/null and b/platform/icons/src/process/fs/step_8_dark.png differ
diff --git a/platform/icons/src/process/fs/step_9_dark.png b/platform/icons/src/process/fs/step_9_dark.png
new file mode 100755
index 000000000000..6a90563ca477
Binary files /dev/null and b/platform/icons/src/process/fs/step_9_dark.png differ
diff --git a/platform/icons/src/process/fs/step_passive_dark.png b/platform/icons/src/process/fs/step_passive_dark.png
new file mode 100755
index 000000000000..4f2a90765706
Binary files /dev/null and b/platform/icons/src/process/fs/step_passive_dark.png differ
diff --git a/platform/icons/src/process/step_10_dark.png b/platform/icons/src/process/step_10_dark.png
new file mode 100755
index 000000000000..c3dc2f967a2a
Binary files /dev/null and b/platform/icons/src/process/step_10_dark.png differ
diff --git a/platform/icons/src/process/step_11_dark.png b/platform/icons/src/process/step_11_dark.png
new file mode 100755
index 000000000000..d7e36a0601d0
Binary files /dev/null and b/platform/icons/src/process/step_11_dark.png differ
diff --git a/platform/icons/src/process/step_12_dark.png b/platform/icons/src/process/step_12_dark.png
new file mode 100755
index 000000000000..2c803be2eecc
Binary files /dev/null and b/platform/icons/src/process/step_12_dark.png differ
diff --git a/platform/icons/src/process/step_1_dark.png b/platform/icons/src/process/step_1_dark.png
new file mode 100755
index 000000000000..c89fe7fc27b3
Binary files /dev/null and b/platform/icons/src/process/step_1_dark.png differ
diff --git a/platform/icons/src/process/step_2_dark.png b/platform/icons/src/process/step_2_dark.png
new file mode 100755
index 000000000000..022bd407b8d6
Binary files /dev/null and b/platform/icons/src/process/step_2_dark.png differ
diff --git a/platform/icons/src/process/step_3_dark.png b/platform/icons/src/process/step_3_dark.png
new file mode 100755
index 000000000000..0db886486e5c
Binary files /dev/null and b/platform/icons/src/process/step_3_dark.png differ
diff --git a/platform/icons/src/process/step_4_dark.png b/platform/icons/src/process/step_4_dark.png
new file mode 100755
index 000000000000..92c3019fb76e
Binary files /dev/null and b/platform/icons/src/process/step_4_dark.png differ
diff --git a/platform/icons/src/process/step_5_dark.png b/platform/icons/src/process/step_5_dark.png
new file mode 100755
index 000000000000..ca7ddc58dff9
Binary files /dev/null and b/platform/icons/src/process/step_5_dark.png differ
diff --git a/platform/icons/src/process/step_6_dark.png b/platform/icons/src/process/step_6_dark.png
new file mode 100755
index 000000000000..39c8fd481fbb
Binary files /dev/null and b/platform/icons/src/process/step_6_dark.png differ
diff --git a/platform/icons/src/process/step_7_dark.png b/platform/icons/src/process/step_7_dark.png
new file mode 100755
index 000000000000..455a4a2f91a4
Binary files /dev/null and b/platform/icons/src/process/step_7_dark.png differ
diff --git a/platform/icons/src/process/step_8_dark.png b/platform/icons/src/process/step_8_dark.png
new file mode 100755
index 000000000000..d48da647300d
Binary files /dev/null and b/platform/icons/src/process/step_8_dark.png differ
diff --git a/platform/icons/src/process/step_9_dark.png b/platform/icons/src/process/step_9_dark.png
new file mode 100755
index 000000000000..52fe4d3c72b8
Binary files /dev/null and b/platform/icons/src/process/step_9_dark.png differ
diff --git a/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java b/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java
index d31f878ff814..8afa9699de65 100644
--- a/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java
+++ b/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java
@@ -393,12 +393,14 @@ class FormatProcessor {
if (block.isLeaf() && whiteSpace.containsLineFeeds() && block.containsLineFeeds()) {
final TextRange currentBlockRange = shiftRange(block.getTextRange(), shift);
- IndentInside lastLineIndent = block.getLastLineIndent();
+ IndentInside oldBlockIndent = whiteSpace.getInitialLastLineIndent();
IndentInside whiteSpaceIndent = IndentInside.createIndentOn(IndentInside.getLastLine(newWhiteSpace));
- final int shiftInside = calcShift(lastLineIndent, whiteSpaceIndent, options);
+ final int shiftInside = calcShift(oldBlockIndent, whiteSpaceIndent, options);
- final TextRange newBlockRange = model.shiftIndentInsideRange(currentBlockRange, shiftInside);
- shift += newBlockRange.getLength() - block.getLength();
+ if (shiftInside != 0) {
+ final TextRange newBlockRange = model.shiftIndentInsideRange(currentBlockRange, shiftInside);
+ shift += newBlockRange.getLength() - block.getLength();
+ }
}
return shift;
}
diff --git a/platform/lang-impl/src/com/intellij/formatting/IndentInside.java b/platform/lang-impl/src/com/intellij/formatting/IndentInside.java
index b8c4a0879586..26ff7e0f07a1 100644
--- a/platform/lang-impl/src/com/intellij/formatting/IndentInside.java
+++ b/platform/lang-impl/src/com/intellij/formatting/IndentInside.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2012 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.
@@ -16,18 +16,22 @@
package com.intellij.formatting;
-import com.intellij.openapi.diagnostic.Logger;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
+import com.intellij.util.text.CharArrayUtil;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.io.IOException;
-import java.io.LineNumberReader;
-import java.io.StringReader;
-
class IndentInside {
public int whiteSpaces = 0;
public int tabs = 0;
- private static final Logger LOG = Logger.getInstance("#com.intellij.formatting.FormatProcessor");
+
+ public IndentInside() {
+ }
+
+ public IndentInside(int whiteSpaces, int tabs) {
+ this.whiteSpaces = whiteSpaces;
+ this.tabs = tabs;
+ }
public boolean equals(final Object o) {
if (this == o) return true;
@@ -55,13 +59,14 @@ class IndentInside {
return whiteSpaces + tabs * options.TAB_SIZE;
}
- static IndentInside getLastLineIndent(final String text) {
- String lastLine = getLastLine(text);
- if (lastLine == null) return new IndentInside();
+ @NotNull
+ static IndentInside getLastLineIndent(@NotNull final CharSequence text) {
+ CharSequence lastLine = getLastLine(text);
return createIndentOn(lastLine);
}
- static IndentInside createIndentOn(@Nullable final String lastLine) {
+ @NotNull
+ static IndentInside createIndentOn(@Nullable final CharSequence lastLine) {
final IndentInside result = new IndentInside();
if (lastLine == null) {
return result;
@@ -73,19 +78,17 @@ class IndentInside {
return result;
}
- @Nullable static String getLastLine(final String text) {
- if (text.endsWith("\n")) return "";
- final LineNumberReader lineNumberReader = new LineNumberReader(new StringReader(text));
- String line;
- String result = null;
- try {
- while ((line = lineNumberReader.readLine()) != null) {
- result = line;
- }
+ @NotNull
+ static CharSequence getLastLine(@NotNull final CharSequence text) {
+ int i = CharArrayUtil.shiftBackwardUntil(text, text.length() - 1, "\n");
+ if (i < 0) {
+ return text;
}
- catch (IOException e) {
- LOG.assertTrue(false);
+ else if (i >= text.length() - 1) {
+ return "";
+ }
+ else {
+ return text.subSequence(i + 1, text.length());
}
- return result;
}
}
diff --git a/platform/lang-impl/src/com/intellij/formatting/LeafBlockWrapper.java b/platform/lang-impl/src/com/intellij/formatting/LeafBlockWrapper.java
index 29776ef7d4a0..4a4e6b1d5891 100644
--- a/platform/lang-impl/src/com/intellij/formatting/LeafBlockWrapper.java
+++ b/platform/lang-impl/src/com/intellij/formatting/LeafBlockWrapper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2012 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.
@@ -29,7 +29,6 @@ class LeafBlockWrapper extends AbstractBlockWrapper {
private LeafBlockWrapper myPreviousBlock;
private LeafBlockWrapper myNextBlock;
private SpacingImpl mySpaceProperty;
- private IndentInside myLastLineIndent;
private String myDebugInfo;
/**
@@ -97,12 +96,6 @@ class LeafBlockWrapper extends AbstractBlockWrapper {
final boolean isLeaf = block.isLeaf();
flagsValue |= isLeaf ? LEAF : 0;
- if (isLeaf && containsLineFeeds) {
- myLastLineIndent = IndentInside.getLastLineIndent(model.getText(textRange).toString());
- } else {
- myLastLineIndent = null;
- }
-
myFlags = flagsValue;
}
@@ -157,7 +150,6 @@ class LeafBlockWrapper extends AbstractBlockWrapper {
myPreviousBlock = null;
myNextBlock = null;
mySpaceProperty = null;
- myLastLineIndent = null;
}
/**
@@ -218,10 +210,6 @@ class LeafBlockWrapper extends AbstractBlockWrapper {
return (myFlags & LEAF) != 0;
}
- public IndentInside getLastLineIndent() {
- return myLastLineIndent;
- }
-
public boolean contains(final int offset) {
return myStart < offset && myEnd > offset;
}
diff --git a/platform/lang-impl/src/com/intellij/formatting/WhiteSpace.java b/platform/lang-impl/src/com/intellij/formatting/WhiteSpace.java
index f00777b7829e..5b6abdeb1443 100644
--- a/platform/lang-impl/src/com/intellij/formatting/WhiteSpace.java
+++ b/platform/lang-impl/src/com/intellij/formatting/WhiteSpace.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2012 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.
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiWhiteSpace;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.intellij.psi.formatter.FormattingDocumentModelImpl;
+import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
@@ -48,9 +49,11 @@ class WhiteSpace {
private final int myStart;
private int myEnd;
-
+
private int mySpaces;
private int myIndentSpaces;
+ private int myInitialLastLinesSpaces;
+ private int myInitialLastLinesTabs;
private CharSequence myInitial;
private int myFlags;
@@ -130,6 +133,9 @@ class WhiteSpace {
} else {
refreshStateOnEndOffsetDecrease(oldText, newEndOffset, oldEndOffset, options.TAB_SIZE);
}
+ IndentInside indent = IndentInside.getLastLineIndent(myInitial);
+ myInitialLastLinesSpaces = indent.whiteSpaces;
+ myInitialLastLinesTabs = indent.tabs;
if (getLineFeeds() > 0) myFlags |= CONTAINS_LF_INITIALLY;
else myFlags &= ~CONTAINS_LF_INITIALLY;
@@ -613,6 +619,11 @@ class WhiteSpace {
return result;
}
+ @NotNull
+ public IndentInside getInitialLastLineIndent() {
+ return new IndentInside(myInitialLastLinesSpaces, myInitialLastLinesTabs);
+ }
+
private static void appendNonWhitespaces(StringBuilder result, CharSequence[] lines, int currentLine) {
// It looks like regexp usage is too heavy here.
if (currentLine != lines.length && !lines[currentLine].toString().matches("\\s*")) {
diff --git a/platform/lang-impl/src/com/intellij/ide/macro/MacrosDialog.java b/platform/lang-impl/src/com/intellij/ide/macro/MacrosDialog.java
index 822ad509f50c..8fc1ce7fa6f8 100644
--- a/platform/lang-impl/src/com/intellij/ide/macro/MacrosDialog.java
+++ b/platform/lang-impl/src/com/intellij/ide/macro/MacrosDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2012 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.
@@ -104,7 +104,7 @@ public final class MacrosDialog extends DialogWrapper {
}
protected void doHelpAction() {
- HelpManager.getInstance().invokeHelp("preferences.externalToolsMacro");
+ HelpManager.getInstance().invokeHelp("reference.settings.ide.settings.external.tools.macros");
}
protected String getDimensionServiceKey(){
diff --git a/platform/platform-api/src/com/intellij/openapi/ui/LoadingDecorator.java b/platform/platform-api/src/com/intellij/openapi/ui/LoadingDecorator.java
index 33a699768da9..33e79334f6f7 100644
--- a/platform/platform-api/src/com/intellij/openapi/ui/LoadingDecorator.java
+++ b/platform/platform-api/src/com/intellij/openapi/ui/LoadingDecorator.java
@@ -75,7 +75,7 @@ public class LoadingDecorator {
final Font font = text.getFont();
text.setFont(font.deriveFont(font.getStyle(), font.getSize() + 8));
- text.setForeground(Color.black);
+ //text.setForeground(Color.black);
final int gap = new JLabel().getIconTextGap();
final NonOpaquePanel result = new NonOpaquePanel(new FlowLayout(FlowLayout.CENTER, gap * 3, 0));
diff --git a/platform/platform-api/src/com/intellij/ui/CommonActionsPanel.java b/platform/platform-api/src/com/intellij/ui/CommonActionsPanel.java
index 6d4b415b21c3..60769666531f 100644
--- a/platform/platform-api/src/com/intellij/ui/CommonActionsPanel.java
+++ b/platform/platform-api/src/com/intellij/ui/CommonActionsPanel.java
@@ -19,6 +19,7 @@ import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.ui.speedSearch.SpeedSearchSupply;
import com.intellij.util.IconUtil;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.Nullable;
@@ -164,6 +165,11 @@ public class CommonActionsPanel extends JPanel {
e.getPresentation().setEnabled(false);
return;
}
+ final SpeedSearchSupply supply = SpeedSearchSupply.getSupply(contextComponent);
+ if (supply != null && supply.isPopupActive()) {
+ e.getPresentation().setEnabled(false);
+ return;
+ }
removeButton.update(e);
}
}.registerCustomShortcutSet(CustomShortcutSet.fromString("DELETE", "BACK_SPACE"), removeButton.getContextComponent());
diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java
index 1a6aac5d6fdf..92239a9fd20c 100644
--- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java
@@ -55,7 +55,6 @@ import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
-import java.util.ConcurrentModificationException;
import java.util.LinkedList;
import java.util.List;
@@ -63,17 +62,10 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar {
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.actionSystem.impl.ActionToolbarImpl");
private static List ourToolbars = new LinkedList();
- private static Throwable ourLastModification = null;
public static void updateAllToolbarsImmediately() {
- try {
- ourLastModification = null;
- for (ActionToolbarImpl toolbar : ourToolbars) {
- toolbar.updateActionsImmediately();
- }
- }
- catch (ConcurrentModificationException e) {
- LOG.error(ourLastModification == null? e : ourLastModification);
+ for (ActionToolbarImpl toolbar : new ArrayList(ourToolbars)) {
+ toolbar.updateActionsImmediately();
}
}
@@ -178,7 +170,6 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar {
@Override
public void addNotify() {
super.addNotify();
- ourLastModification = new ConcurrentModificationException();
ourToolbars.add(this);
myActionManager.addTimerListener(500, myWeakTimerListener);
myActionManager.addTransparentTimerListener(500, myWeakTimerListener);
@@ -199,7 +190,6 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar {
@Override
public void removeNotify() {
super.removeNotify();
- ourLastModification = new ConcurrentModificationException();
ourToolbars.remove(this);
myActionManager.removeTimerListener(myWeakTimerListener);
myActionManager.removeTransparentTimerListener(myWeakTimerListener);
@@ -484,7 +474,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar {
for (final Rectangle r : bounds) {
if (r.height < maxHeight) {
- r.y = r.y + (maxHeight - r.height) / 2;
+ r.y += (maxHeight - r.height) / 2;
}
}
@@ -555,7 +545,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar {
// Lay components out
int xOffset = insets.left;
int yOffset = insets.top;
- // Calculate max size of a row. It's not possible to make more then 3 row toolbar
+ // Calculate max size of a row. It's not possible to make more than 3 row toolbar
final int maxRowWidth = Math.max(sizeToFit.width, componentCount * maxWidth / 3);
for (int i = 0; i < componentCount; i++) {
if (xOffset + maxWidth > maxRowWidth) { // place component at new row
@@ -1185,14 +1175,12 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar {
ArrayList result = new ArrayList();
ArrayList secondary = new ArrayList();
- if (myActionGroup != null) {
- AnAction[] kids = myActionGroup.getChildren(null);
- for (AnAction each : kids) {
- if (myActionGroup.isPrimary(each)) {
- result.add(each);
- } else {
- secondary.add(each);
- }
+ AnAction[] kids = myActionGroup.getChildren(null);
+ for (AnAction each : kids) {
+ if (myActionGroup.isPrimary(each)) {
+ result.add(each);
+ } else {
+ secondary.add(each);
}
}
result.add(new Separator());
diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/http/RemoteFilePanel.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/http/RemoteFilePanel.java
index 2aa06fac95b9..1bd8085e438d 100644
--- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/http/RemoteFilePanel.java
+++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/http/RemoteFilePanel.java
@@ -33,6 +33,7 @@ import com.intellij.openapi.vfs.impl.http.RemoteFileInfo;
import com.intellij.openapi.vfs.impl.http.RemoteFileState;
import com.intellij.util.EventDispatcher;
import com.intellij.util.net.HTTPProxySettingsDialog;
+import com.intellij.util.ui.UIUtil;
import com.intellij.util.ui.update.MergingUpdateQueue;
import com.intellij.util.ui.update.Update;
import org.jetbrains.annotations.NonNls;
@@ -152,17 +153,25 @@ public class RemoteFilePanel implements PropertyChangeListener {
}
public void selectNotify() {
- myProgressUpdatesQueue.showNotify();
- if (myFileEditor != null) {
- myFileEditor.selectNotify();
- }
+ UIUtil.invokeLaterIfNeeded(new Runnable() {
+ public void run() {
+ myProgressUpdatesQueue.showNotify();
+ if (myFileEditor != null) {
+ myFileEditor.selectNotify();
+ }
+ }
+ });
}
public void deselectNotify() {
- myProgressUpdatesQueue.hideNotify();
- if (myFileEditor != null) {
- myFileEditor.deselectNotify();
- }
+ UIUtil.invokeLaterIfNeeded(new Runnable() {
+ public void run() {
+ myProgressUpdatesQueue.hideNotify();
+ if (myFileEditor != null) {
+ myFileEditor.deselectNotify();
+ }
+ }
+ });
}
public void dispose() {
diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/impl/TaskCheckinHandlerFactory.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/impl/TaskCheckinHandlerFactory.java
index 77f4cf7f3115..b1499df1e6c1 100644
--- a/plugins/tasks/tasks-core/src/com/intellij/tasks/impl/TaskCheckinHandlerFactory.java
+++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/impl/TaskCheckinHandlerFactory.java
@@ -59,7 +59,9 @@ public class TaskCheckinHandlerFactory extends CheckinHandlerFactory {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
- WorkingContextManager.getInstance(project).saveContext(localTask);
+ if (!project.isDisposed()) {
+ WorkingContextManager.getInstance(project).saveContext(localTask);
+ }
}
});
}
diff --git a/xml/impl/src/com/intellij/psi/impl/source/xml/XmlEntityRefImpl.java b/xml/impl/src/com/intellij/psi/impl/source/xml/XmlEntityRefImpl.java
index 6b0bd810c682..45b65260a5cc 100644
--- a/xml/impl/src/com/intellij/psi/impl/source/xml/XmlEntityRefImpl.java
+++ b/xml/impl/src/com/intellij/psi/impl/source/xml/XmlEntityRefImpl.java
@@ -148,7 +148,9 @@ public class XmlEntityRefImpl extends XmlElementImpl implements XmlEntityRef {
XmlDoctype xmlDoctype = (XmlDoctype)element;
final String dtdUri = XmlUtil.getDtdUri(xmlDoctype);
if (dtdUri != null) {
- final XmlFile xmlFile = XmlUtil.findNamespace(XmlUtil.getContainingFile(element), dtdUri);
+ XmlFile file = XmlUtil.getContainingFile(element);
+ if (file == null) return true;
+ final XmlFile xmlFile = XmlUtil.findNamespace(file, dtdUri);
if (xmlFile != null) {
if (xmlFile != targetElement) {
deps.add(xmlFile);
diff --git a/xml/impl/src/com/intellij/psi/impl/source/xml/XmlTextImpl.java b/xml/impl/src/com/intellij/psi/impl/source/xml/XmlTextImpl.java
index 795fbcf0f23f..05d1446a8154 100644
--- a/xml/impl/src/com/intellij/psi/impl/source/xml/XmlTextImpl.java
+++ b/xml/impl/src/com/intellij/psi/impl/source/xml/XmlTextImpl.java
@@ -97,7 +97,9 @@ public class XmlTextImpl extends XmlElementImpl implements XmlText, PsiLanguageI
child = cdata.getFirstChildNode();
}
else if (elementType == XmlTokenType.XML_CHAR_ENTITY_REF) {
- buffer.append(XmlUtil.getCharFromEntityRef(child.getText()));
+ String text = child.getText();
+ LOG.assertTrue(text != null, child);
+ buffer.append(XmlUtil.getCharFromEntityRef(text));
}
else if (elementType == XmlTokenType.XML_WHITE_SPACE || elementType == XmlTokenType.XML_DATA_CHARACTERS || elementType == XmlTokenType
.XML_ATTRIBUTE_VALUE_TOKEN) {
diff --git a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java
index 5e455aecfc57..e6689ce9cf7b 100644
--- a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java
+++ b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java
@@ -18,6 +18,7 @@ package org.intellij.plugins.relaxNG.model.descriptors;
import com.intellij.codeInsight.daemon.Validator;
import com.intellij.javaee.ExternalResourceManager;
+import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.ModificationTracker;
@@ -245,6 +246,9 @@ public class RngNsDescriptor implements XmlNSDescriptorEx, Validator {
public Object[] getDependences() {
if (myPattern != null) {
+ if (DumbService.isDumb(myElement.getProject())) {
+ return new Object[] { ModificationTracker.EVER_CHANGED, ExternalResourceManager.getInstance()};
+ }
final Object[] a = { myElement, ExternalResourceManager.getInstance() };
final PsiElementProcessor.CollectElements processor = new PsiElementProcessor.CollectElements();
RelaxIncludeIndex.processForwardDependencies(myFile, processor);
@@ -253,9 +257,8 @@ public class RngNsDescriptor implements XmlNSDescriptorEx, Validator {
} else {
return a;
}
- } else {
- return new Object[]{ ModificationTracker.EVER_CHANGED };
}
+ return new Object[]{ ModificationTracker.EVER_CHANGED };
}
public synchronized void init(PsiElement element) {