IDEA-19061 Integrate the Rearranger-plugin into core-IDE

Utility methods grouping
This commit is contained in:
Denis.Zhdanov
2012-09-19 23:18:40 +04:00
parent 68e444d49f
commit 0f05c7a385
3 changed files with 56 additions and 13 deletions
@@ -15,20 +15,31 @@
*/
package com.intellij.psi.codeStyle.arrangement;
import com.intellij.psi.PsiMethod;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
/**
* @author Denis Zhdanov
* @since 9/19/12 6:41 PM
*/
public class JavaArrangementMethodDependencyInfo {
// TODO den add doc
public void registerDependency(@NotNull PsiMethod baseMethod,
@NotNull JavaElementArrangementEntry baseMethodEntry,
@NotNull PsiMethod dependentMethod)
{
@NotNull private final List<JavaElementArrangementEntry> getDependentMethods = new ArrayList<JavaElementArrangementEntry>();
@NotNull private final JavaElementArrangementEntry myAnchorMethod;
public JavaArrangementMethodDependencyInfo(@NotNull JavaElementArrangementEntry method) {
myAnchorMethod = method;
}
@NotNull
public List<JavaElementArrangementEntry> getGetDependentMethods() {
return getDependentMethods;
}
@NotNull
public JavaElementArrangementEntry getAnchorMethod() {
return myAnchorMethod;
}
}
@@ -16,6 +16,7 @@
package com.intellij.psi.codeStyle.arrangement;
import com.intellij.openapi.util.Pair;
import com.intellij.psi.PsiMethod;
import org.jetbrains.annotations.NotNull;
import java.util.*;
@@ -28,6 +29,9 @@ public class JavaArrangementParseInfo {
@NotNull private final List<JavaElementArrangementEntry> myEntries = new ArrayList<JavaElementArrangementEntry>();
@NotNull private final List<JavaArrangementMethodDependencyInfo> myMethodDependencyRoots
= new ArrayList<JavaArrangementMethodDependencyInfo>();
@NotNull private final Map<Pair<String/* property name */, String/* class name */>, JavaArrangementPropertyInfo> myProperties
= new HashMap<Pair<String, String>, JavaArrangementPropertyInfo>();
@@ -39,22 +43,28 @@ public class JavaArrangementParseInfo {
public void addEntry(@NotNull JavaElementArrangementEntry entry) {
myEntries.add(entry);
}
@NotNull
public Collection<JavaArrangementPropertyInfo> getProperties() {
return myProperties.values();
}
// TODO den add doc
@NotNull
public List<JavaArrangementMethodDependencyInfo> getMethodDependencyRoots() {
return myMethodDependencyRoots;
}
public void registerGetter(@NotNull String propertyName, @NotNull String className, @NotNull JavaElementArrangementEntry entry) {
getInfo(propertyName, className).setGetter(entry);
getPropertyInfo(propertyName, className).setGetter(entry);
}
public void registerSetter(@NotNull String propertyName, @NotNull String className, @NotNull JavaElementArrangementEntry entry) {
getInfo(propertyName, className).setSetter(entry);
getPropertyInfo(propertyName, className).setSetter(entry);
}
@NotNull
private JavaArrangementPropertyInfo getInfo(@NotNull String propertyName, @NotNull String className) {
private JavaArrangementPropertyInfo getPropertyInfo(@NotNull String propertyName, @NotNull String className) {
Pair<String, String> key = Pair.create(propertyName, className);
JavaArrangementPropertyInfo propertyInfo = myProperties.get(key);
if (propertyInfo == null) {
@@ -62,4 +72,12 @@ public class JavaArrangementParseInfo {
}
return propertyInfo;
}
// TODO den add doc
public void registerDependency(@NotNull PsiMethod baseMethod,
@NotNull JavaElementArrangementEntry baseMethodEntry,
@NotNull PsiMethod dependentMethod)
{
// TODO den implement
}
}
@@ -204,7 +204,21 @@ public class JavaRearranger implements Rearranger<JavaElementArrangementEntry>,
}
private static void setupUtilityMethods(@NotNull JavaArrangementParseInfo info, @NotNull ArrangementEntryOrderType orderType) {
if (orderType == ArrangementEntryOrderType.DEPTH_FIRST) {
JavaElementArrangementEntry base = null;
for (JavaArrangementMethodDependencyInfo rootInfo : info.getMethodDependencyRoots()) {
if (base != null) {
rootInfo.getAnchorMethod().addDependency(base);
}
base = setupDepthFirstDependency(rootInfo.getAnchorMethod());
}
}
}
@NotNull
private static JavaElementArrangementEntry setupDepthFirstDependency(@NotNull JavaElementArrangementEntry base) {
// TODO den implement
return base;
}
private static void setupOverriddenMethods(JavaArrangementParseInfo info) {