Lookup XML attribute using the property (for a particular layout)

This commit is contained in:
Yan Zhulanow
2015-03-20 22:20:28 +03:00
parent a4dc6870dc
commit 0a96c2c148
7 changed files with 53 additions and 36 deletions
@@ -21,7 +21,8 @@ import com.intellij.openapi.util.Key
public object AndroidConst {
val ANDROID_USER_PACKAGE: Key<String> = Key.create<String>("ANDROID_USER_PACKAGE")
val SYNTHETIC_FILENAME: String = "ANDROIDXML"
val SYNTHETIC_PACKAGE: String = "kotlinx.android.synthetic."
val SYNTHETIC_PACKAGE: String = "kotlinx.android.synthetic"
val SYNTHETIC_PACKAGE_PATH_LENGTH = SYNTHETIC_PACKAGE.count { it == '.' } + 1
val ANDROID_NAMESPACE: String = "android"
val ID_ATTRIBUTE_NO_NAMESPACE: String = "id"
@@ -26,12 +26,13 @@ import com.intellij.openapi.vfs.*
import com.intellij.openapi.components.*
import com.intellij.openapi.extensions.*
import com.intellij.openapi.module.*
import org.jetbrains.kotlin.psi.JetProperty
public abstract class AndroidResourceManager(val project: Project) {
public abstract val androidModuleInfo: AndroidModuleInfo?
public open fun idToXmlAttribute(id: String): PsiElement? = null
public open fun propertyToXmlAttribute(property: JetProperty): PsiElement? = null
public fun getLayoutXmlFiles(): Map<String, List<PsiFile>> {
val info = androidModuleInfo
@@ -84,7 +84,7 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) {
public fun parse(generateCommonFiles: Boolean = true): List<String> {
val commonFiles = if (generateCommonFiles) {
val clearCacheFile = renderLayoutFile("kotlinx.android.synthetic") {} +
val clearCacheFile = renderLayoutFile(AndroidConst.SYNTHETIC_PACKAGE) {} +
renderClearCacheFunction("Activity") + renderClearCacheFunction("Fragment")
listOf(clearCacheFile, FLEXIBLE_TYPE_FILE)
} else listOf()
@@ -132,7 +132,7 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) {
}
private fun PsiFile.genSyntheticPackageName(): String {
return AndroidConst.SYNTHETIC_PACKAGE + getName().substringBefore('.')
return AndroidConst.SYNTHETIC_PACKAGE + "." + getName().substringBefore('.')
}
private fun KotlinStringWriter.writeSyntheticProperty(receiver: String, widget: AndroidWidget, stubCall: String) {