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) {