///* // * Copyright 2000-2009 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. // * You may obtain a copy of the License at // * // * http://www.apache.org/licenses/LICENSE-2.0 // * // * Unless required by applicable law or agreed to in writing, software // * distributed under the License is distributed on an "AS IS" BASIS, // * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // * See the License for the specific language governing permissions and // * limitations under the License. // */ //package com.sylvanaar.idea.Lua.intentions.control; // //import com.intellij.psi.PsiElement; //import com.intellij.util.IncorrectOperationException; //import org.jetbrains.annotations.NonNls; //import org.jetbrains.annotations.NotNull; //import org.jetbrains.plugins.lua.intentions.utils.ConditionalUtils; //import org.jetbrains.plugins.lua.intentions.utils.ParenthesesUtils; //import org.jetbrains.plugins.lua.intentions.base.*; //import org.jetbrains.plugins.lua.lang.psi.api.statements.GrIfStatement; //import org.jetbrains.plugins.lua.lang.psi.api.statements.GrStatement; //import org.jetbrains.plugins.lua.lang.psi.api.statements.expressions.GrExpression; // //public class MergeIfAndIntention extends Intention { // // // @NotNull // public PsiElementPredicate getElementPredicate() { // return new MergeIfAndPredicate(); // } // // public void processIntention(@NotNull PsiElement element) // throws IncorrectOperationException { // final GrIfStatement parentStatement = // (GrIfStatement) element; // assert parentStatement != null; // final GrStatement parentThenBranch = (GrStatement) parentStatement.getThenBranch(); // final GrIfStatement childStatement = // (GrIfStatement) ConditionalUtils.stripBraces(parentThenBranch); // // final GrExpression childCondition = (GrExpression) childStatement.getCondition(); // final String childConditionText; // if (ParenthesesUtils.getPrecendence(childCondition) // > ParenthesesUtils.AND_PRECEDENCE) { // childConditionText = '(' + childCondition.getText() + ')'; // } else { // childConditionText = childCondition.getText(); // } // // final GrExpression parentCondition = (GrExpression) parentStatement.getCondition(); // final String parentConditionText; // if (ParenthesesUtils.getPrecendence(parentCondition) // > ParenthesesUtils.AND_PRECEDENCE) { // parentConditionText = '(' + parentCondition.getText() + ')'; // } else { // parentConditionText = parentCondition.getText(); // } // // final GrStatement childThenBranch = (GrStatement) childStatement.getThenBranch(); // @NonNls final String statement = // "if(" + parentConditionText + "&&" + childConditionText + ')' + // childThenBranch.getText(); // IntentionUtils.replaceStatement(statement, parentStatement); // } //}