Extracted generatedOverridingMembers() method in OverrideImplementMethodsHandler.
This commit is contained in:
+22
-18
@@ -67,10 +67,9 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
|||||||
|
|
||||||
protected abstract Set<CallableMemberDescriptor> collectMethodsToGenerate(MutableClassDescriptor descriptor);
|
protected abstract Set<CallableMemberDescriptor> collectMethodsToGenerate(MutableClassDescriptor descriptor);
|
||||||
|
|
||||||
public static void generateMethods(Project project,
|
public static void generateMethods(Editor editor,
|
||||||
Editor editor,
|
JetClassOrObject classOrObject,
|
||||||
JetClassOrObject classOrObject,
|
List<DescriptorClassMember> selectedElements) {
|
||||||
List<DescriptorClassMember> selectedElements) {
|
|
||||||
final JetClassBody body = classOrObject.getBody();
|
final JetClassBody body = classOrObject.getBody();
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
return;
|
return;
|
||||||
@@ -82,17 +81,8 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (DescriptorClassMember selectedElement : selectedElements) {
|
for (JetElement element : generateOverridingMembers(selectedElements, (JetFile)classOrObject.getContainingFile(), false)) {
|
||||||
final DeclarationDescriptor descriptor = selectedElement.getDescriptor();
|
afterAnchor = body.addAfter(element, afterAnchor);
|
||||||
JetFile containingFile = (JetFile)classOrObject.getContainingFile();
|
|
||||||
if (descriptor instanceof SimpleFunctionDescriptor) {
|
|
||||||
JetElement target = overrideFunction(project, containingFile, (SimpleFunctionDescriptor)descriptor);
|
|
||||||
afterAnchor = body.addAfter(target, afterAnchor);
|
|
||||||
}
|
|
||||||
else if (descriptor instanceof PropertyDescriptor) {
|
|
||||||
JetElement target = overrideProperty(project, containingFile, (PropertyDescriptor)descriptor);
|
|
||||||
afterAnchor = body.addAfter(target, afterAnchor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,7 +109,21 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
|||||||
return afterAnchor;
|
return afterAnchor;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static JetElement overrideProperty(Project project, JetFile file, PropertyDescriptor descriptor) {
|
private static List<JetElement> generateOverridingMembers(List<DescriptorClassMember> selectedElements, JetFile file, boolean fqNames) {
|
||||||
|
List<JetElement> overridingMembers = new ArrayList<JetElement>();
|
||||||
|
for (DescriptorClassMember selectedElement : selectedElements) {
|
||||||
|
final DeclarationDescriptor descriptor = selectedElement.getDescriptor();
|
||||||
|
if (descriptor instanceof SimpleFunctionDescriptor) {
|
||||||
|
overridingMembers.add(overrideFunction(file.getProject(), file, (SimpleFunctionDescriptor)descriptor, fqNames));
|
||||||
|
}
|
||||||
|
else if (descriptor instanceof PropertyDescriptor) {
|
||||||
|
overridingMembers.add(overrideProperty(file.getProject(), file, (PropertyDescriptor)descriptor, fqNames));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return overridingMembers;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static JetElement overrideProperty(Project project, JetFile file, PropertyDescriptor descriptor, boolean fqNames) {
|
||||||
StringBuilder bodyBuilder = new StringBuilder();
|
StringBuilder bodyBuilder = new StringBuilder();
|
||||||
bodyBuilder.append(displayableVisibility(descriptor)).append("override ");
|
bodyBuilder.append(displayableVisibility(descriptor)).append("override ");
|
||||||
if (descriptor.isVar()) {
|
if (descriptor.isVar()) {
|
||||||
@@ -141,7 +145,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
|||||||
return JetPsiFactory.createProperty(project, bodyBuilder.toString());
|
return JetPsiFactory.createProperty(project, bodyBuilder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static JetElement overrideFunction(Project project, JetFile file, SimpleFunctionDescriptor descriptor) {
|
private static JetElement overrideFunction(Project project, JetFile file, SimpleFunctionDescriptor descriptor, boolean fqNames) {
|
||||||
StringBuilder bodyBuilder = new StringBuilder();
|
StringBuilder bodyBuilder = new StringBuilder();
|
||||||
bodyBuilder.append(displayableVisibility(descriptor));
|
bodyBuilder.append(displayableVisibility(descriptor));
|
||||||
bodyBuilder.append("override fun ");
|
bodyBuilder.append("override fun ");
|
||||||
@@ -303,7 +307,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
|||||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
generateMethods(project, editor, classOrObject, selectedElements);
|
generateMethods(editor, classOrObject, selectedElements);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase {
|
|||||||
@Override
|
@Override
|
||||||
protected void run(Result result) throws Throwable {
|
protected void run(Result result) throws Throwable {
|
||||||
OverrideImplementMethodsHandler.generateMethods(
|
OverrideImplementMethodsHandler.generateMethods(
|
||||||
myFixture.getProject(), myFixture.getEditor(), classOrObject,
|
myFixture.getEditor(), classOrObject,
|
||||||
OverrideImplementMethodsHandler.membersFromDescriptors(Collections.singletonList(singleToOverride)));
|
OverrideImplementMethodsHandler.membersFromDescriptors(Collections.singletonList(singleToOverride)));
|
||||||
}
|
}
|
||||||
}.execute();
|
}.execute();
|
||||||
@@ -233,7 +233,7 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase {
|
|||||||
@Override
|
@Override
|
||||||
protected void run(Result result) throws Throwable {
|
protected void run(Result result) throws Throwable {
|
||||||
OverrideImplementMethodsHandler.generateMethods(
|
OverrideImplementMethodsHandler.generateMethods(
|
||||||
myFixture.getProject(), myFixture.getEditor(), classOrObject,
|
myFixture.getEditor(), classOrObject,
|
||||||
OverrideImplementMethodsHandler.membersFromDescriptors(descriptorsList));
|
OverrideImplementMethodsHandler.membersFromDescriptors(descriptorsList));
|
||||||
}
|
}
|
||||||
}.execute();
|
}.execute();
|
||||||
|
|||||||
Reference in New Issue
Block a user