/* * Copyright 2013 Guidewire Software, Inc. */ package gw.plugin.ij.intentions; import com.intellij.codeInsight.CodeInsightUtilBase; import com.intellij.codeInspection.LocalQuickFixAndIntentionActionOnPsiElement; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiIdentifier; import gw.plugin.ij.lang.psi.impl.GosuBaseElementImpl; import gw.plugin.ij.lang.psi.util.GosuPsiParseUtil; import gw.plugin.ij.util.GosuBundle; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class CaseMismatchRelativeTypeQuickFix extends LocalQuickFixAndIntentionActionOnPsiElement { private String _correctName; public CaseMismatchRelativeTypeQuickFix( PsiElement id, String correctName ) { super( id ); _correctName = correctName; } @Override public void invoke( @NotNull Project project, @NotNull PsiFile file, @Nullable("is null when called from inspection") Editor editor, @NotNull PsiElement startElement, @NotNull PsiElement endElement ) { if( !CodeInsightUtilBase.prepareFileForWrite( startElement.getContainingFile() ) ) { return; } PsiElement psiIdentifier = GosuPsiParseUtil.parseRelativeTypeLiteral( _correctName, startElement ).getFirstChild(); if( !(startElement instanceof PsiIdentifier) ) { startElement = GosuBaseElementImpl.findElement( startElement, PsiIdentifier.class ); } startElement.replace( psiIdentifier ); } @NotNull @Override public String getText() { return GosuBundle.message( "inspection.case.mismatch" ); } @NotNull @Override public String getFamilyName() { return GosuBundle.message( "inspection.group.name.case.mismatch.issues" ); } }