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