mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
allow to configure prefix/suffix for test/implementation (IDEA-86808/IDEA-161300)
This commit is contained in:
+52
-2
@@ -40,7 +40,7 @@
|
||||
<text resource-bundle="messages/ApplicationBundle" key="checkbox.prefer.longer.names"/>
|
||||
</properties>
|
||||
</component>
|
||||
<grid id="dc5b7" layout-manager="GridLayoutManager" row-count="5" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<grid id="dc5b7" layout-manager="GridLayoutManager" row-count="7" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="0" anchor="1" fill="3" indent="0" use-parent-layout="false"/>
|
||||
@@ -112,7 +112,9 @@
|
||||
<preferred-size width="60" height="-1"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<properties>
|
||||
<text value=""/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="16f1d" class="javax.swing.JTextField" binding="myFieldSuffixField">
|
||||
<constraints>
|
||||
@@ -162,6 +164,54 @@
|
||||
<text resource-bundle="messages/ApplicationBundle" key="label.name.prefix"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="551b5" class="javax.swing.JLabel">
|
||||
<constraints>
|
||||
<grid row="6" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="Test class:"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="51b03" class="javax.swing.JTextField" binding="myTestClassPrefix" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="6" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="150" height="-1"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
<component id="e547e" class="javax.swing.JTextField" binding="myTestClassSuffix" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="6" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="150" height="-1"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
<component id="49afe" class="javax.swing.JLabel">
|
||||
<constraints>
|
||||
<grid row="5" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="Subclass:"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="fd25f" class="javax.swing.JTextField" binding="mySubclassPrefix" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="5" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="150" height="-1"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
<component id="ed80d" class="javax.swing.JTextField" binding="mySubclassSuffix" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="5" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="150" height="-1"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
</children>
|
||||
|
||||
+16
@@ -69,6 +69,10 @@ public class CodeStyleGenerationConfigurable implements CodeStyleConfigurable {
|
||||
private JBCheckBox myReplaceInstanceOfCb;
|
||||
private JBCheckBox myReplaceCastCb;
|
||||
private JBCheckBox myReplaceNullCheckCb;
|
||||
private JTextField myTestClassPrefix;
|
||||
private JTextField myTestClassSuffix;
|
||||
private JTextField mySubclassPrefix;
|
||||
private JTextField mySubclassSuffix;
|
||||
private CommenterForm myCommenterForm;
|
||||
private SortedListModel<String> myRepeatAnnotationsModel;
|
||||
|
||||
@@ -110,11 +114,15 @@ public class CodeStyleGenerationConfigurable implements CodeStyleConfigurable {
|
||||
myStaticFieldPrefixField.setText(javaSettings.STATIC_FIELD_NAME_PREFIX);
|
||||
myParameterPrefixField.setText(javaSettings.PARAMETER_NAME_PREFIX);
|
||||
myLocalVariablePrefixField.setText(javaSettings.LOCAL_VARIABLE_NAME_PREFIX);
|
||||
mySubclassPrefix.setText(javaSettings.SUBCLASS_NAME_PREFIX);
|
||||
myTestClassPrefix.setText(javaSettings.TEST_NAME_PREFIX);
|
||||
|
||||
myFieldSuffixField.setText(javaSettings.FIELD_NAME_SUFFIX);
|
||||
myStaticFieldSuffixField.setText(javaSettings.STATIC_FIELD_NAME_SUFFIX);
|
||||
myParameterSuffixField.setText(javaSettings.PARAMETER_NAME_SUFFIX);
|
||||
myLocalVariableSuffixField.setText(javaSettings.LOCAL_VARIABLE_NAME_SUFFIX);
|
||||
mySubclassSuffix.setText(javaSettings.SUBCLASS_NAME_SUFFIX);
|
||||
myTestClassSuffix.setText(javaSettings.TEST_NAME_SUFFIX);
|
||||
|
||||
myCbGenerateFinalLocals.setSelected(javaSettings.GENERATE_FINAL_LOCALS);
|
||||
myCbGenerateFinalParameters.setSelected(javaSettings.GENERATE_FINAL_PARAMETERS);
|
||||
@@ -145,11 +153,15 @@ public class CodeStyleGenerationConfigurable implements CodeStyleConfigurable {
|
||||
javaSettings.STATIC_FIELD_NAME_PREFIX = setPrefixSuffix(myStaticFieldPrefixField.getText(), true);
|
||||
javaSettings.PARAMETER_NAME_PREFIX = setPrefixSuffix(myParameterPrefixField.getText(), true);
|
||||
javaSettings.LOCAL_VARIABLE_NAME_PREFIX = setPrefixSuffix(myLocalVariablePrefixField.getText(), true);
|
||||
javaSettings.SUBCLASS_NAME_PREFIX = setPrefixSuffix(mySubclassPrefix.getText(), true);
|
||||
javaSettings.TEST_NAME_PREFIX = setPrefixSuffix(myTestClassPrefix.getText(), true);
|
||||
|
||||
javaSettings.FIELD_NAME_SUFFIX = setPrefixSuffix(myFieldSuffixField.getText(), false);
|
||||
javaSettings.STATIC_FIELD_NAME_SUFFIX = setPrefixSuffix(myStaticFieldSuffixField.getText(), false);
|
||||
javaSettings.PARAMETER_NAME_SUFFIX = setPrefixSuffix(myParameterSuffixField.getText(), false);
|
||||
javaSettings.LOCAL_VARIABLE_NAME_SUFFIX = setPrefixSuffix(myLocalVariableSuffixField.getText(), false);
|
||||
javaSettings.SUBCLASS_NAME_SUFFIX = setPrefixSuffix(mySubclassSuffix.getText(), false);
|
||||
javaSettings.TEST_NAME_SUFFIX = setPrefixSuffix(myTestClassSuffix.getText(), false);
|
||||
|
||||
javaSettings.GENERATE_FINAL_LOCALS = myCbGenerateFinalLocals.isSelected();
|
||||
javaSettings.GENERATE_FINAL_PARAMETERS = myCbGenerateFinalParameters.isSelected();
|
||||
@@ -194,11 +206,15 @@ public class CodeStyleGenerationConfigurable implements CodeStyleConfigurable {
|
||||
isModified |= isModified(myStaticFieldPrefixField, javaSettings.STATIC_FIELD_NAME_PREFIX);
|
||||
isModified |= isModified(myParameterPrefixField, javaSettings.PARAMETER_NAME_PREFIX);
|
||||
isModified |= isModified(myLocalVariablePrefixField, javaSettings.LOCAL_VARIABLE_NAME_PREFIX);
|
||||
isModified |= isModified(mySubclassPrefix, javaSettings.SUBCLASS_NAME_PREFIX);
|
||||
isModified |= isModified(myTestClassPrefix, javaSettings.TEST_NAME_PREFIX);
|
||||
|
||||
isModified |= isModified(myFieldSuffixField, javaSettings.FIELD_NAME_SUFFIX);
|
||||
isModified |= isModified(myStaticFieldSuffixField, javaSettings.STATIC_FIELD_NAME_SUFFIX);
|
||||
isModified |= isModified(myParameterSuffixField, javaSettings.PARAMETER_NAME_SUFFIX);
|
||||
isModified |= isModified(myLocalVariableSuffixField, javaSettings.LOCAL_VARIABLE_NAME_SUFFIX);
|
||||
isModified |= isModified(mySubclassSuffix, javaSettings.SUBCLASS_NAME_SUFFIX);
|
||||
isModified |= isModified(myTestClassSuffix, javaSettings.TEST_NAME_SUFFIX);
|
||||
|
||||
isModified |= isModified(myCbGenerateFinalLocals, javaSettings.GENERATE_FINAL_LOCALS);
|
||||
isModified |= isModified(myCbGenerateFinalParameters, javaSettings.GENERATE_FINAL_PARAMETERS);
|
||||
|
||||
+15
-4
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.intellij.codeInsight.intention.impl;
|
||||
|
||||
import com.intellij.application.options.CodeStyle;
|
||||
import com.intellij.codeInsight.CodeInsightBundle;
|
||||
import com.intellij.codeInsight.CodeInsightUtil;
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
@@ -48,13 +49,13 @@ import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -64,7 +65,6 @@ import java.util.List;
|
||||
public class CreateSubclassAction extends BaseIntentionAction {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.intention.impl.ImplementAbstractClassAction");
|
||||
private String myText = CodeInsightBundle.message("intention.implement.abstract.class.default.text");
|
||||
@NonNls private static final String IMPL_SUFFIX = "Impl";
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
@@ -163,7 +163,8 @@ public class CreateSubclassAction extends BaseIntentionAction {
|
||||
LOG.assertTrue(containingClass != null);
|
||||
|
||||
final PsiTypeParameterList oldTypeParameterList = aClass.getTypeParameterList();
|
||||
PsiClass classFromText = JavaPsiFacade.getElementFactory(aClass.getProject()).createClass(aClass.getName() + IMPL_SUFFIX);
|
||||
PsiClass classFromText = JavaPsiFacade.getElementFactory(aClass.getProject()).createClass(
|
||||
suggestTargetClassName(aClass));
|
||||
classFromText = (PsiClass)containingClass.addAfter(classFromText, aClass);
|
||||
startTemplate(oldTypeParameterList, aClass.getProject(), aClass, classFromText, true);
|
||||
}
|
||||
@@ -179,12 +180,17 @@ public class CreateSubclassAction extends BaseIntentionAction {
|
||||
|
||||
@Nullable
|
||||
public static CreateClassDialog chooseSubclassToCreate(PsiClass psiClass) {
|
||||
return chooseSubclassToCreate(psiClass, suggestTargetClassName(psiClass));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static CreateClassDialog chooseSubclassToCreate(PsiClass psiClass, final String targetClassName) {
|
||||
final PsiDirectory sourceDir = psiClass.getContainingFile().getContainingDirectory();
|
||||
ProjectFileIndex fileIndex = ProjectRootManager.getInstance(psiClass.getProject()).getFileIndex();
|
||||
final PsiPackage aPackage = sourceDir != null ? JavaDirectoryService.getInstance().getPackage(sourceDir) : null;
|
||||
final CreateClassDialog dialog = new CreateClassDialog(
|
||||
psiClass.getProject(), getTitle(psiClass),
|
||||
psiClass.getName() + IMPL_SUFFIX,
|
||||
targetClassName,
|
||||
aPackage != null ? aPackage.getQualifiedName() : "",
|
||||
CreateClassKind.CLASS, true, ModuleUtilCore.findModuleForPsiElement(psiClass)) {
|
||||
@Override
|
||||
@@ -205,6 +211,11 @@ public class CreateSubclassAction extends BaseIntentionAction {
|
||||
return dialog;
|
||||
}
|
||||
|
||||
public static String suggestTargetClassName(PsiClass psiClass) {
|
||||
JavaCodeStyleSettings javaSettings = CodeStyle.getSettings(psiClass.getProject()).getCustomSettings(JavaCodeStyleSettings.class);
|
||||
return javaSettings.SUBCLASS_NAME_PREFIX + psiClass.getName() + javaSettings.SUBCLASS_NAME_SUFFIX;
|
||||
}
|
||||
|
||||
public static PsiClass createSubclass(final PsiClass psiClass, final PsiDirectory targetDirectory, final String className) {
|
||||
return createSubclass(psiClass, targetDirectory, className, true);
|
||||
}
|
||||
|
||||
@@ -37,11 +37,15 @@ public class JavaCodeStyleSettings extends CustomCodeStyleSettings implements Im
|
||||
public String STATIC_FIELD_NAME_PREFIX = "";
|
||||
public String PARAMETER_NAME_PREFIX = "";
|
||||
public String LOCAL_VARIABLE_NAME_PREFIX = "";
|
||||
public String TEST_NAME_PREFIX = "";
|
||||
public String SUBCLASS_NAME_PREFIX = "";
|
||||
|
||||
public String FIELD_NAME_SUFFIX = "";
|
||||
public String STATIC_FIELD_NAME_SUFFIX = "";
|
||||
public String PARAMETER_NAME_SUFFIX = "";
|
||||
public String LOCAL_VARIABLE_NAME_SUFFIX = "";
|
||||
public String TEST_NAME_SUFFIX = "Test";
|
||||
public String SUBCLASS_NAME_SUFFIX = "Impl";
|
||||
|
||||
public boolean PREFER_LONGER_NAMES = true;
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package com.intellij.testIntegration.createTest;
|
||||
|
||||
import com.intellij.CommonBundle;
|
||||
import com.intellij.application.options.CodeStyle;
|
||||
import com.intellij.codeInsight.CodeInsightBundle;
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.OrderEntryFix;
|
||||
import com.intellij.icons.AllIcons;
|
||||
@@ -47,6 +48,7 @@ import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
|
||||
import com.intellij.refactoring.PackageWrapper;
|
||||
import com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesUtil;
|
||||
import com.intellij.refactoring.ui.MemberSelectionTable;
|
||||
@@ -119,7 +121,10 @@ public class CreateTestDialog extends DialogWrapper {
|
||||
}
|
||||
|
||||
protected String suggestTestClassName(PsiClass targetClass) {
|
||||
return targetClass.getName() + "Test";
|
||||
JavaCodeStyleSettings customSettings = CodeStyle.getSettings(myProject).getCustomSettings(JavaCodeStyleSettings.class);
|
||||
String prefix = customSettings.TEST_NAME_PREFIX;
|
||||
String suffix = customSettings.TEST_NAME_SUFFIX;
|
||||
return prefix + targetClass.getName() + suffix;
|
||||
}
|
||||
|
||||
private boolean isSuperclassSelectedManually() {
|
||||
|
||||
Reference in New Issue
Block a user