synchronized fixer

This commit is contained in:
Max Medvedev
2013-03-19 10:44:08 +04:00
parent b16f7e7b1f
commit e69927a07d
@@ -13,26 +13,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.plugins.groovy.lang.completion.smartEnter.fixers
package org.jetbrains.plugins.groovy.lang.completion.smartEnter.fixers;
import com.intellij.lang.SmartEnterProcessorWithFixers
import com.intellij.openapi.editor.Document
import com.intellij.openapi.editor.Editor
import com.intellij.psi.PsiElement
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.annotations.NotNull
import org.jetbrains.plugins.groovy.lang.completion.smartEnter.GroovySmartEnterProcessor
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrSynchronizedStatement
import com.intellij.lang.SmartEnterProcessorWithFixers;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.groovy.lang.completion.smartEnter.GroovySmartEnterProcessor;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrSynchronizedStatement;
/**
* @author Max Medvedev
*/
public class GrSynchronizedFixer extends SmartEnterProcessorWithFixers.Fixer<GroovySmartEnterProcessor> {
public void apply(@NotNull Editor editor, @NotNull GroovySmartEnterProcessor processor, @NotNull PsiElement psiElement) {
GrSynchronizedStatement synchronizedStatement = PsiTreeUtil.getParentOfType(psiElement, GrSynchronizedStatement.class);
if (synchronizedStatement == null || synchronizedStatement.getBody() != null) return;
if (!PsiTreeUtil.isAncestor(synchronizedStatement.getMonitor(), psiElement, false)) return;
final Document doc = editor.getDocument();
PsiElement eltToInsertAfter = synchronizedStatement.getRParenth();
@@ -41,6 +40,7 @@ public class GrSynchronizedFixer extends SmartEnterProcessorWithFixers.Fixer<Gro
eltToInsertAfter = synchronizedStatement.getMonitor();
text = "){\n}";
}
doc.insertString(eltToInsertAfter.getTextRange().getEndOffset(), text);
}
}
}