tests for inline introduce field

This commit is contained in:
anna
2011-03-17 17:29:38 +01:00
parent 7d892b0870
commit 084c70b827
12 changed files with 367 additions and 7 deletions
@@ -191,6 +191,22 @@ public class InplaceIntroduceFieldPopup {
});
}
public void setReplaceAllOccurrences(boolean replaceAllOccurrences) {
myIntroduceFieldPanel.setReplaceAllOccurrences(replaceAllOccurrences);
}
public void setCreateFinal(boolean createFinal) {
myIntroduceFieldPanel.setCreateFinal(createFinal);
}
public void setInitializeInFieldDeclaration() {
myIntroduceFieldPanel.setInitializeInFieldDeclaration();
}
public void setVisibility(String visibility) {
myIntroduceFieldPanel.setVisibility(visibility);
}
class FieldInplaceIntroducer extends AbstractInplaceIntroducer {
private RangeMarker myFieldRangeStart;
@@ -343,13 +359,14 @@ public class InplaceIntroduceFieldPopup {
new WriteCommandAction(myProject) {
@Override
protected void run(Result result) throws Throwable {
final Document document = myEditor.getDocument();
PsiDocumentManager.getInstance(getProject()).commitDocument(document);
final PsiVariable variable = getVariable();
LOG.assertTrue(variable != null);
final PsiModifierList modifierList = variable.getModifierList();
LOG.assertTrue(modifierList != null);
int textOffset = modifierList.getTextOffset();
final Document document = myEditor.getDocument();
String visibility = myIntroduceFieldPanel.getFieldVisibility();
if (visibility == PsiModifier.PACKAGE_LOCAL) {
visibility = "";
@@ -369,10 +386,15 @@ public class InplaceIntroduceFieldPopup {
length = PsiModifier.PRIVATE.length();
}
final int startOffset = textOffset + Math.max(idx, 0);
final int endOffset = textOffset + (idx > -1 ? length : 0);
final int startOffset = textOffset + idx;
final int endOffset;
if (idx == -1) {
endOffset = startOffset;
} else {
endOffset = textOffset + length;
}
document.replaceString(startOffset, endOffset, visibility + (startOffset == endOffset ? " " : ""));
document.replaceString(startOffset, endOffset, visibility);
}
}.execute();
}
@@ -391,4 +391,22 @@ public class IntroduceFieldCentralPanel {
public void addFinalListener(ItemListener itemListener) {
myCbFinal.addItemListener(itemListener);
}
public void setReplaceAllOccurrences(boolean replaceAllOccurrences) {
if (myCbReplaceAll != null) {
myCbReplaceAll.setSelected(replaceAllOccurrences);
}
}
public void setCreateFinal(boolean createFinal) {
myCbFinal.setSelected(createFinal);
}
public void setInitializeInFieldDeclaration() {
myRbInFieldDeclaration.setSelected(true);
}
public void setVisibility(String visibility) {
myVisibilityPanel.setVisibility(visibility);
}
}
@@ -35,6 +35,7 @@ public class IntroduceFieldHandler extends BaseExpressionToFieldHandler {
public static final String REFACTORING_NAME = RefactoringBundle.message("introduce.field.title");
private static final MyOccurenceFilter MY_OCCURENCE_FILTER = new MyOccurenceFilter();
private InplaceIntroduceFieldPopup myInplaceIntroduceFieldPopup;
public IntroduceFieldHandler() {
super(false);
@@ -105,9 +106,10 @@ public class IntroduceFieldHandler extends BaseExpressionToFieldHandler {
final TypeSelectorManagerImpl typeSelectorManager = new TypeSelectorManagerImpl(project, type, containingMethod, expr, occurences);
if (editor != null && editor.getSettings().isVariableInplaceRenameEnabled() && ApplicationManagerEx.getApplicationEx().isInternal()) {
new InplaceIntroduceFieldPopup(localVariable, parentClass, declareStatic, currentMethodConstructor, occurences, expr, typeSelectorManager, editor,
allowInitInMethod, allowInitInMethodIfAll, anchorElement, anchorElementIfAll, createOccurenceManager(expr, parentClass))
.startTemplate();
myInplaceIntroduceFieldPopup =
new InplaceIntroduceFieldPopup(localVariable, parentClass, declareStatic, currentMethodConstructor, occurences, expr, typeSelectorManager, editor,
allowInitInMethod, allowInitInMethodIfAll, anchorElement, anchorElementIfAll, createOccurenceManager(expr, parentClass));
myInplaceIntroduceFieldPopup.startTemplate();
return null;
}
@@ -139,6 +141,10 @@ public class IntroduceFieldHandler extends BaseExpressionToFieldHandler {
dialog.getFieldType(), localVariable != null, (TargetDestination)null, false, false);
}
public InplaceIntroduceFieldPopup getInplaceIntroduceFieldPopup() {
return myInplaceIntroduceFieldPopup;
}
private static boolean isInSuperOrThis(PsiExpression occurence) {
return !NotInSuperCallOccurenceFilter.INSTANCE.isOK(occurence) || !NotInThisCallFilter.INSTANCE.isOK(occurence);
}