diff --git a/java/java-frontback-impl/src/com/intellij/codeInsight/editorActions/wordSelection/CaseStatementsSelectioner.java b/java/java-frontback-impl/src/com/intellij/codeInsight/editorActions/wordSelection/CaseStatementsSelectioner.java
index cb01b5afffb7..29dadbc0595d 100644
--- a/java/java-frontback-impl/src/com/intellij/codeInsight/editorActions/wordSelection/CaseStatementsSelectioner.java
+++ b/java/java-frontback-impl/src/com/intellij/codeInsight/editorActions/wordSelection/CaseStatementsSelectioner.java
@@ -5,6 +5,7 @@ import com.intellij.lang.ASTNode;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.util.TextRange;
+import com.intellij.psi.JavaTokenType;
import com.intellij.psi.PsiElement;
import com.intellij.psi.TokenType;
import com.intellij.psi.impl.source.BasicJavaAstTreeUtil;
@@ -22,6 +23,8 @@ public final class CaseStatementsSelectioner extends AbstractBasicBackBasicSelec
public boolean canSelect(@NotNull PsiElement e) {
ASTNode node = BasicJavaAstTreeUtil.toNode(e);
return node != null &&
+ !BasicJavaAstTreeUtil.is(node, JavaTokenType.RBRACE) &&
+ !BasicJavaAstTreeUtil.is(node, JavaTokenType.LBRACE) &&
BasicJavaAstTreeUtil.is(node.getTreeParent(), BASIC_CODE_BLOCK) &&
BasicJavaAstTreeUtil.is(node.getTreeParent().getTreeParent(), BASIC_SWITCH_STATEMENT);
}
diff --git a/java/java-frontback-tests/testSrc/com/intellij/codeInsight/AbstractBasicJavaSelectWordTest.java b/java/java-frontback-tests/testSrc/com/intellij/codeInsight/AbstractBasicJavaSelectWordTest.java
index 4fbe04f3d7ca..4b67963fce86 100644
--- a/java/java-frontback-tests/testSrc/com/intellij/codeInsight/AbstractBasicJavaSelectWordTest.java
+++ b/java/java-frontback-tests/testSrc/com/intellij/codeInsight/AbstractBasicJavaSelectWordTest.java
@@ -52,6 +52,10 @@ public abstract class AbstractBasicJavaSelectWordTest extends SelectWordTestBase
public void testSwitch() { doTest("java"); }
public void testSwitch2() { doTest("java"); }
public void testSwitch3() { doTest("java"); }
+ public void testSwitchStart1() { doTest("java"); }
+ public void testSwitchStart2() { doTest("java"); }
+ public void testSwitchEnd1() { doTest("java"); }
+ public void testSwitchEnd2() { doTest("java"); }
public void testJavaStartLine() { doTest("java"); }
public void testJavaEndLine() { doTest("java", false); }
diff --git a/java/java-tests/testData/codeInsight/selectWordAction/switchEnd1/after1.java b/java/java-tests/testData/codeInsight/selectWordAction/switchEnd1/after1.java
new file mode 100644
index 000000000000..975d4b2734f7
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/selectWordAction/switchEnd1/after1.java
@@ -0,0 +1,15 @@
+public class TestSwitchSelect
+{
+ public static void main(String[] args)
+ {
+ switch (type) {
+ case 1:
+ break;
+
+ case 2:
+ break;
+ default:
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/selectWordAction/switchEnd1/before.java b/java/java-tests/testData/codeInsight/selectWordAction/switchEnd1/before.java
new file mode 100644
index 000000000000..6bd0fa86b80b
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/selectWordAction/switchEnd1/before.java
@@ -0,0 +1,15 @@
+public class TestSwitchSelect
+{
+ public static void main(String[] args)
+ {
+ switch (type) {
+ case 1:
+ break;
+
+ case 2:
+ break;
+ default:
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/selectWordAction/switchEnd2/after1.java b/java/java-tests/testData/codeInsight/selectWordAction/switchEnd2/after1.java
new file mode 100644
index 000000000000..c4685b3f050e
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/selectWordAction/switchEnd2/after1.java
@@ -0,0 +1,15 @@
+public class TestSwitchSelect
+{
+ public static void main(String[] args)
+ {
+ switch (type) {
+ case 1:
+ break;
+
+ case 2:
+ break;
+ default:
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/selectWordAction/switchEnd2/before.java b/java/java-tests/testData/codeInsight/selectWordAction/switchEnd2/before.java
new file mode 100644
index 000000000000..6a556d74ae33
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/selectWordAction/switchEnd2/before.java
@@ -0,0 +1,15 @@
+public class TestSwitchSelect
+{
+ public static void main(String[] args)
+ {
+ switch (type) {
+ case 1:
+ break;
+
+ case 2:
+ break;
+ default:
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/selectWordAction/switchStart1/after1.java b/java/java-tests/testData/codeInsight/selectWordAction/switchStart1/after1.java
new file mode 100644
index 000000000000..aad5919acf1f
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/selectWordAction/switchStart1/after1.java
@@ -0,0 +1,15 @@
+public class TestSwitchSelect
+{
+ public static void main(String[] args)
+ {
+ switch (type) {
+ case 1:
+ break;
+
+ case 2:
+ break;
+ default:
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/selectWordAction/switchStart1/before.java b/java/java-tests/testData/codeInsight/selectWordAction/switchStart1/before.java
new file mode 100644
index 000000000000..c6196d036fcd
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/selectWordAction/switchStart1/before.java
@@ -0,0 +1,15 @@
+public class TestSwitchSelect
+{
+ public static void main(String[] args)
+ {
+ switch (type) {
+ case 1:
+ break;
+
+ case 2:
+ break;
+ default:
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/selectWordAction/switchStart2/after1.java b/java/java-tests/testData/codeInsight/selectWordAction/switchStart2/after1.java
new file mode 100644
index 000000000000..ffa6352a2f8f
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/selectWordAction/switchStart2/after1.java
@@ -0,0 +1,15 @@
+public class TestSwitchSelect
+{
+ public static void main(String[] args)
+ {
+ switch (type) {
+ case 1:
+ break;
+
+ case 2:
+ break;
+ default:
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/selectWordAction/switchStart2/before.java b/java/java-tests/testData/codeInsight/selectWordAction/switchStart2/before.java
new file mode 100644
index 000000000000..2ca9db6473d6
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/selectWordAction/switchStart2/before.java
@@ -0,0 +1,15 @@
+public class TestSwitchSelect
+{
+ public static void main(String[] args)
+ {
+ switch (type) {
+ case 1:
+ break;
+
+ case 2:
+ break;
+ default:
+ break;
+ }
+ }
+}
\ No newline at end of file