diff --git a/plugins/android/src/org/jetbrains/android/dom/converters/ViewClassConverter.java b/plugins/android/src/org/jetbrains/android/dom/converters/ViewClassConverter.java index c399ab0f38db..cb914ce0b069 100644 --- a/plugins/android/src/org/jetbrains/android/dom/converters/ViewClassConverter.java +++ b/plugins/android/src/org/jetbrains/android/dom/converters/ViewClassConverter.java @@ -16,86 +16,13 @@ package org.jetbrains.android.dom.converters; -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.util.Computable; -import com.intellij.psi.JavaPsiFacade; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiClassOwner; -import com.intellij.psi.PsiElement; -import com.intellij.util.containers.HashSet; -import com.intellij.util.xml.ConvertContext; -import com.intellij.util.xml.ResolvingConverter; -import org.jetbrains.android.facet.AndroidFacet; -import org.jetbrains.android.facet.SimpleClassMapConstructor; import org.jetbrains.android.util.AndroidUtils; -import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Collection; -import java.util.Collections; -import java.util.Map; /** - * Created by IntelliJ IDEA. - * User: Eugene.Kudelevsky - * Date: 23.06.2009 - * Time: 18:48:18 - * To change this template use File | Settings | File Templates. + * @author Eugene.Kudelevsky */ -public class ViewClassConverter extends ResolvingConverter { - @Nullable - private static Map getViewClassMap(ConvertContext context) { - AndroidFacet facet = AndroidFacet.getInstance(context); - if (facet != null) { - return facet.getClassMap(AndroidUtils.VIEW_CLASS_NAME, SimpleClassMapConstructor.getInstance()); - } - return null; +public class ViewClassConverter extends PackageClassConverter { + public ViewClassConverter() { + super(AndroidUtils.VIEW_CLASS_NAME); } - - @NotNull - public Collection getVariants(ConvertContext context) { - Map viewClassMap = getViewClassMap(context); - if (viewClassMap != null) { - return new HashSet(viewClassMap.values()); - } - return Collections.emptyList(); - } - - public PsiClass fromString(@Nullable @NonNls String s, ConvertContext context) { - if (s == null) return null; - final AndroidFacet facet = AndroidFacet.getInstance(context); - if (facet != null) { - s = s.replace('$', '.'); - - final String className = s; - final JavaPsiFacade facade = JavaPsiFacade.getInstance(facet.getModule().getProject()); - - return ApplicationManager.getApplication().runReadAction(new Computable() { - @Nullable - public PsiClass compute() { - return facade.findClass(className, facet.getModule().getModuleWithDependenciesAndLibrariesScope(true)); - } - }); - } - return null; - } - - @Nullable - private static String getClassName(@NotNull PsiClass c) { - PsiElement parent = c.getParent(); - if (parent instanceof PsiClassOwner) { - PsiClassOwner owner = (PsiClassOwner)parent; - String packageName = owner.getPackageName(); - return packageName + '.' + c.getName(); - } - else if (parent instanceof PsiClass) { - return getClassName((PsiClass)parent) + '$' + c.getName(); - } - return null; - } - - public String toString(@Nullable PsiClass psiClass, ConvertContext context) { - return psiClass != null ? getClassName(psiClass) : null; - } -} +} \ No newline at end of file diff --git a/plugins/android/testData/rename/layout_widget.xml b/plugins/android/testData/rename/layout_widget.xml index 8362c5e1fb03..13406d596c54 100644 --- a/plugins/android/testData/rename/layout_widget.xml +++ b/plugins/android/testData/rename/layout_widget.xml @@ -1,4 +1,7 @@ -idget xmlns:android="http://schemas.android.com/apk/res/android"> - - \ No newline at end of file + + idget xmlns:android="http://schemas.android.com/apk/res/android"> + + + + \ No newline at end of file diff --git a/plugins/android/testData/rename/layout_widget1.xml b/plugins/android/testData/rename/layout_widget1.xml index 93dcdbc0af98..d883b5b35f80 100644 --- a/plugins/android/testData/rename/layout_widget1.xml +++ b/plugins/android/testData/rename/layout_widget1.xml @@ -1,4 +1,7 @@ -2.MyWidget xmlns:android="http://schemas.android.com/apk/res/android"> - - \ No newline at end of file + + 2.MyWidget xmlns:android="http://schemas.android.com/apk/res/android"> + + + + \ No newline at end of file diff --git a/plugins/android/testData/rename/layout_widget1_after.xml b/plugins/android/testData/rename/layout_widget1_after.xml index d3cf65399976..7e6548074252 100644 --- a/plugins/android/testData/rename/layout_widget1_after.xml +++ b/plugins/android/testData/rename/layout_widget1_after.xml @@ -1,4 +1,7 @@ - - - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/plugins/android/testData/rename/layout_widget2.xml b/plugins/android/testData/rename/layout_widget2.xml index 93dcdbc0af98..d883b5b35f80 100644 --- a/plugins/android/testData/rename/layout_widget2.xml +++ b/plugins/android/testData/rename/layout_widget2.xml @@ -1,4 +1,7 @@ -2.MyWidget xmlns:android="http://schemas.android.com/apk/res/android"> - - \ No newline at end of file + + 2.MyWidget xmlns:android="http://schemas.android.com/apk/res/android"> + + + + \ No newline at end of file diff --git a/plugins/android/testData/rename/layout_widget2_after.xml b/plugins/android/testData/rename/layout_widget2_after.xml index f53eb9377136..68c95c19150a 100644 --- a/plugins/android/testData/rename/layout_widget2_after.xml +++ b/plugins/android/testData/rename/layout_widget2_after.xml @@ -1,4 +1,7 @@ - - - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/plugins/android/testData/rename/layout_widget3.xml b/plugins/android/testData/rename/layout_widget3.xml new file mode 100644 index 000000000000..8362c5e1fb03 --- /dev/null +++ b/plugins/android/testData/rename/layout_widget3.xml @@ -0,0 +1,4 @@ + +idget xmlns:android="http://schemas.android.com/apk/res/android"> + + \ No newline at end of file diff --git a/plugins/android/testData/rename/layout_widget3_after.xml b/plugins/android/testData/rename/layout_widget3_after.xml new file mode 100644 index 000000000000..95a0074fb87c --- /dev/null +++ b/plugins/android/testData/rename/layout_widget3_after.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/plugins/android/testData/rename/layout_widget_after.xml b/plugins/android/testData/rename/layout_widget_after.xml index 95a0074fb87c..b884e31e4375 100644 --- a/plugins/android/testData/rename/layout_widget_after.xml +++ b/plugins/android/testData/rename/layout_widget_after.xml @@ -1,4 +1,7 @@ - - - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/plugins/android/testSrc/org/jetbrains/android/AndroidRenameTest.java b/plugins/android/testSrc/org/jetbrains/android/AndroidRenameTest.java index 0731670ec1fe..a397c7ad7583 100644 --- a/plugins/android/testSrc/org/jetbrains/android/AndroidRenameTest.java +++ b/plugins/android/testSrc/org/jetbrains/android/AndroidRenameTest.java @@ -339,6 +339,15 @@ public class AndroidRenameTest extends AndroidTestCase { myFixture.checkResultByFile(BASE_PATH + "layout_widget_after.xml"); } + public void testRenameWidget1() throws Throwable { + createManifest(); + myFixture.copyFileToProject(BASE_PATH + "MyWidget.java", "src/p1/p2/MyWidget.java"); + VirtualFile file = myFixture.copyFileToProject(BASE_PATH + "layout_widget.xml", "res/layout/layout_widget.xml"); + myFixture.configureFromExistingVirtualFile(file); + checkAndRename("MyWidget1"); + myFixture.checkResultByFile(BASE_PATH + "layout_widget_after.xml"); + } + public void testRenameWidgetPackage1() throws Throwable { createManifest(); myFixture.copyFileToProject(BASE_PATH + "MyWidget.java", "src/p1/p2/MyWidget.java");