added searching if statement in children

This commit is contained in:
Ekaterina Tuzova
2010-11-24 16:45:18 +03:00
parent 72322c3c64
commit 078d4b5bb0
3 changed files with 26 additions and 7 deletions
@@ -123,6 +123,7 @@ INTN.flip.$0.to.$1=Flip ''{0}'' to ''{1}''
INTN.convert.string=Convert single-quoted string to double-quoted
INTN.join.if=Join if's
INTN.join.if.text=Join two if's
# Conflict checker
CONFLICT.name.$0.obscured=Name ''{0}'' obscured by local definitions
@@ -24,18 +24,36 @@ public class PyJoinIfIntention extends BaseIntentionAction {
@NotNull
public String getText() {
return PyBundle.message("INTN.join.if");
return PyBundle.message("INTN.join.if.text");
}
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) {
PyIfStatement expression =
PsiTreeUtil.getParentOfType(file.findElementAt(editor.getCaretModel().getOffset()), PyIfStatement.class);
while (expression != null) {
PyStatement firstStatement = expression.getIfPart().getStatementList().getStatements()[0];
if (firstStatement instanceof PyIfStatement) {
return true;
PyStatementList stList = expression.getIfPart().getStatementList();
if (stList != null) {
if (stList.getStatements().length != 0) {
PyStatement firstStatement = stList.getStatements()[0];
if (firstStatement instanceof PyIfStatement) {
return true;
}
}
}
expression = PsiTreeUtil.getParentOfType(file.findElementAt(editor.getCaretModel().getOffset()), PyIfStatement.class);
expression = PsiTreeUtil.getParentOfType(expression, PyIfStatement.class);
}
expression = PsiTreeUtil.getParentOfType(file.findElementAt(editor.getCaretModel().getOffset()), PyIfStatement.class);
while (expression != null) {
PyStatementList stList = expression.getIfPart().getStatementList();
if (stList != null) {
if (stList.getStatements().length != 0) {
PyStatement firstStatement = stList.getStatements()[0];
if (firstStatement instanceof PyIfStatement) {
return true;
}
}
}
expression = PsiTreeUtil.getChildOfType(expression, PyIfStatement.class);
}
return false;
}
@@ -50,7 +68,7 @@ public class PyJoinIfIntention extends BaseIntentionAction {
if (firstStatement instanceof PyIfStatement) {
break;
}
expression = PsiTreeUtil.getParentOfType(file.findElementAt(editor.getCaretModel().getOffset()), PyIfStatement.class);
expression = PsiTreeUtil.getParentOfType(expression, PyIfStatement.class);
}
if (firstStatement != null && firstStatement instanceof PyIfStatement) {
PyExpression condition = ((PyIfStatement)firstStatement).getIfPart().getCondition();
@@ -110,6 +110,6 @@ public class PyIntentionTest extends PyLightFixtureTestCase {
}
public void testJoinIf() {
doTest(PyBundle.message("INTN.join.if"));
doTest(PyBundle.message("INTN.join.if.text"));
}
}