reformat code, optimize imports
This commit is contained in:
committed by
Yan Zhulanow
parent
2f97e7fadb
commit
395959bf21
+18
-17
@@ -33,7 +33,6 @@ import com.intellij.openapi.project.Project
|
||||
import java.util.concurrent.ConcurrentLinkedQueue
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.testFramework.LightVirtualFile
|
||||
import com.intellij.openapi.vfs.VirtualFileSystem
|
||||
import com.intellij.psi.PsiManager
|
||||
import java.io.FileInputStream
|
||||
import org.xml.sax.helpers.DefaultHandler
|
||||
@@ -44,20 +43,17 @@ import com.intellij.psi.util.PsiModificationTracker
|
||||
import com.intellij.psi.impl.PsiModificationTrackerImpl
|
||||
import java.util.Queue
|
||||
import com.intellij.psi.PsiFile
|
||||
import org.xml.sax.InputSource
|
||||
import java.io.ByteArrayInputStream
|
||||
import com.intellij.openapi.diagnostic.Log
|
||||
import org.xml.sax.SAXException
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.psi.PsiElement
|
||||
|
||||
abstract class AndroidUIXmlParser {
|
||||
|
||||
inner class NoUIXMLsFound: Exception("No android UI xmls found in $searchPath")
|
||||
class NoAndroidManifestFound: Exception("No android manifest file found in project root")
|
||||
inner class NoUIXMLsFound : Exception("No android UI xmls found in $searchPath")
|
||||
class NoAndroidManifestFound : Exception("No android manifest file found in project root")
|
||||
class ManifestParsingFailed
|
||||
|
||||
enum class CacheAction { HIT; MISS }
|
||||
enum class CacheAction { HIT; MISS
|
||||
}
|
||||
|
||||
val androidImports = arrayListOf("android.app.Activity",
|
||||
"android.view.View",
|
||||
@@ -105,11 +101,13 @@ abstract class AndroidUIXmlParser {
|
||||
psiFile.putUserData(ANDROID_USER_PACKAGE, androidAppPackage)
|
||||
lastCachedPsi = psiFile
|
||||
psiFile
|
||||
} catch (e: Exception) {
|
||||
}
|
||||
catch (e: Exception) {
|
||||
invalidateCaches()
|
||||
null
|
||||
}
|
||||
} else lastCachedPsi
|
||||
}
|
||||
else lastCachedPsi
|
||||
}
|
||||
|
||||
private fun isAndroidUIXml(file: File): Boolean {
|
||||
@@ -128,7 +126,8 @@ abstract class AndroidUIXmlParser {
|
||||
if (!path.exists()) continue;
|
||||
if (path.isFile() && isAndroidUIXml(path)) {
|
||||
res.add(path)
|
||||
} else if (path.isDirectory()) {
|
||||
}
|
||||
else if (path.isDirectory()) {
|
||||
res.addAll(searchForUIXml(path.listFiles()?.toArrayList()))
|
||||
}
|
||||
}
|
||||
@@ -190,7 +189,7 @@ abstract class AndroidUIXmlParser {
|
||||
val fileManager = VirtualFileManager.getInstance()
|
||||
val watchDir = fileManager.findFileByUrl("file://" + searchPath)
|
||||
val psiManager = PsiManager.getInstance(project)
|
||||
return watchDir?.getChildren()?.toArrayList()?.map { psiManager.findFile(it) } ?.mapNotNull { it } ?: ArrayList(0)
|
||||
return watchDir?.getChildren()?.toArrayList()?.map { psiManager.findFile(it) }?.mapNotNull { it } ?: ArrayList(0)
|
||||
}
|
||||
|
||||
protected fun populateQueue(project: Project) {
|
||||
@@ -210,11 +209,13 @@ abstract class AndroidUIXmlParser {
|
||||
_package = attributes.toMap()["package"] ?: ""
|
||||
}
|
||||
})
|
||||
} catch (e: Exception) {
|
||||
}
|
||||
catch (e: Exception) {
|
||||
throw e
|
||||
}
|
||||
return AndroidManifest(_package)
|
||||
} catch (e: Exception) {
|
||||
}
|
||||
catch (e: Exception) {
|
||||
throw NoAndroidManifestFound()
|
||||
}
|
||||
}
|
||||
@@ -223,9 +224,9 @@ abstract class AndroidUIXmlParser {
|
||||
for (id in ids) {
|
||||
val body = arrayListOf("return findViewById(0) as ${id.className}")
|
||||
kw.writeImmutableExtensionProperty(receiver = "Activity",
|
||||
name = id.id,
|
||||
retType = id.className,
|
||||
getterBody = body )
|
||||
name = id.id,
|
||||
retType = id.className,
|
||||
getterBody = body)
|
||||
}
|
||||
return kw.output()
|
||||
}
|
||||
|
||||
+3
-13
@@ -16,13 +16,12 @@
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.android
|
||||
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiElement
|
||||
|
||||
trait AndroidResource
|
||||
|
||||
class AndroidID(val rawID: String): AndroidResource {
|
||||
class AndroidID(val rawID: String) : AndroidResource {
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
return other is AndroidID && this.rawID == other.rawID
|
||||
@@ -35,20 +34,11 @@ class AndroidID(val rawID: String): AndroidResource {
|
||||
}
|
||||
}
|
||||
|
||||
class AndroidWidget(val id: String, val className: String): AndroidResource
|
||||
class AndroidWidget(val id: String, val className: String) : AndroidResource
|
||||
|
||||
class AndroidManifest(val _package: String): AndroidResource
|
||||
|
||||
//fun isAndroidSyntheticFile(f: VirtualFile?): Boolean {
|
||||
// if (f?.getName() == AndroidConst.SYNTHETIC_FILENAME) {
|
||||
// val userData = f?.getUserData(AndroidConst.ANDROID_SYNTHETIC);
|
||||
// return (userData != null && userData.equals("OK"))
|
||||
// }
|
||||
// return false
|
||||
//}
|
||||
class AndroidManifest(val _package: String) : AndroidResource
|
||||
|
||||
fun isAndroidSyntheticFile(f: PsiFile?): Boolean {
|
||||
// return isAndroidSyntheticFile(f?.getVirtualFile())
|
||||
if (f?.getName() == AndroidConst.SYNTHETIC_FILENAME) {
|
||||
val userData = f?.getUserData(AndroidConst.ANDROID_SYNTHETIC);
|
||||
return (userData != null && userData.equals("OK"))
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ import org.xml.sax.helpers.DefaultHandler
|
||||
import org.xml.sax.Attributes
|
||||
import java.util.HashMap
|
||||
|
||||
class AndroidXmlHandler(val elementCallback: (String, String)-> Unit): DefaultHandler() {
|
||||
class AndroidXmlHandler(val elementCallback: (String, String) -> Unit) : DefaultHandler() {
|
||||
|
||||
override fun startDocument() {
|
||||
super<DefaultHandler>.startDocument()
|
||||
@@ -46,7 +46,7 @@ class AndroidXmlHandler(val elementCallback: (String, String)-> Unit): DefaultHa
|
||||
|
||||
public fun Attributes.toMap(): HashMap<String, String> {
|
||||
val res = HashMap<String, String>()
|
||||
for (index in 0..getLength()-1) {
|
||||
for (index in 0..getLength() - 1) {
|
||||
val attrName = getLocalName(index)!!
|
||||
val attrVal = getValue(index)!!
|
||||
res[attrName] = attrVal
|
||||
|
||||
+3
-7
@@ -16,17 +16,12 @@
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.android
|
||||
|
||||
import com.intellij.openapi.vfs.VirtualFileManager
|
||||
import java.util.ArrayList
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiFile
|
||||
import java.io.ByteArrayInputStream
|
||||
import org.xml.sax.InputSource
|
||||
import javax.xml.parsers.SAXParser
|
||||
import javax.xml.parsers.SAXParserFactory
|
||||
import com.intellij.psi.PsiElement
|
||||
|
||||
class CliAndroidUIXmlParser(val project: Project, override val searchPath: String?): AndroidUIXmlParser() {
|
||||
class CliAndroidUIXmlParser(val project: Project, override val searchPath: String?) : AndroidUIXmlParser() {
|
||||
|
||||
override var androidAppPackage: String = ""
|
||||
|
||||
@@ -42,7 +37,8 @@ class CliAndroidUIXmlParser(val project: Project, override val searchPath: Strin
|
||||
try {
|
||||
saxParser.parse(file.getVirtualFile()?.getInputStream()!!, handler)
|
||||
return produceKotlinProperties(KotlinStringWriter(), ids).toString()
|
||||
} catch (e: Throwable) {
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
LOG.error(e)
|
||||
return ""
|
||||
}
|
||||
|
||||
+2
-1
@@ -62,7 +62,8 @@ class KotlinStringWriter : KotlinWriter {
|
||||
}
|
||||
body.decIndent()
|
||||
body.writeln("}")
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
body.writeNoIndent("=")
|
||||
body.writeNoIndent(getterBody.join("").replace("return", ""))
|
||||
body.newLine()
|
||||
|
||||
@@ -20,15 +20,11 @@ import com.intellij.codeInsight.navigation.actions.GotoDeclarationHandler
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.actionSystem.DataContext
|
||||
import org.jetbrains.jet.lang.psi.JetProperty
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import org.jetbrains.jet.lang.resolve.android.AndroidUIXmlParser
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.psi.PsiReferenceExpression
|
||||
import com.intellij.psi.PsiIdentifier
|
||||
import com.intellij.psi.impl.source.tree.LeafPsiElement
|
||||
|
||||
public class AndroidGotoDeclarationHandler: GotoDeclarationHandler {
|
||||
public class AndroidGotoDeclarationHandler : GotoDeclarationHandler {
|
||||
override fun getGotoDeclarationTargets(sourceElement: PsiElement?, offset: Int, editor: Editor?): Array<PsiElement>? {
|
||||
if (sourceElement is LeafPsiElement) {
|
||||
val parser = ServiceManager.getService(sourceElement.getProject(), javaClass<AndroidUIXmlParser>())
|
||||
@@ -37,7 +33,8 @@ public class AndroidGotoDeclarationHandler: GotoDeclarationHandler {
|
||||
return array(psiElement)
|
||||
}
|
||||
else return null
|
||||
} else return null
|
||||
}
|
||||
else return null
|
||||
}
|
||||
|
||||
override fun getActionText(context: DataContext?): String? {
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.xml.XmlElement
|
||||
import com.intellij.psi.xml.XmlTag
|
||||
|
||||
class AndroidXmlVisitor(val elementCallback: (String, String)-> Unit): XmlElementVisitor() {
|
||||
class AndroidXmlVisitor(val elementCallback: (String, String) -> Unit) : XmlElementVisitor() {
|
||||
|
||||
override fun visitElement(element: PsiElement) {
|
||||
element.acceptChildren(this)
|
||||
|
||||
@@ -18,10 +18,7 @@ package org.jetbrains.jet.plugin.android
|
||||
|
||||
import org.jetbrains.jet.lang.resolve.android.AndroidUIXmlParser
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFileManager
|
||||
import java.util.ArrayList
|
||||
import com.intellij.openapi.vfs.VirtualFileAdapter
|
||||
import com.intellij.openapi.vfs.VirtualFileEvent
|
||||
import com.intellij.psi.PsiFile
|
||||
import org.jetbrains.jet.lang.resolve.android.AndroidWidget
|
||||
import org.jetbrains.jet.lang.resolve.android.KotlinStringWriter
|
||||
@@ -30,9 +27,8 @@ import com.intellij.psi.XmlElementVisitor
|
||||
import com.intellij.psi.xml.XmlTag
|
||||
import com.intellij.psi.PsiElement
|
||||
import java.util.HashMap
|
||||
import com.intellij.psi.xml.XmlAttribute
|
||||
|
||||
class IDEAndroidUIXmlParser(val project: Project): AndroidUIXmlParser() {
|
||||
class IDEAndroidUIXmlParser(val project: Project) : AndroidUIXmlParser() {
|
||||
override val searchPath: String? = project.getBasePath() + "/res/layout/"
|
||||
override var androidAppPackage: String = ""
|
||||
|
||||
@@ -74,7 +70,7 @@ class IDEAndroidUIXmlParser(val project: Project): AndroidUIXmlParser() {
|
||||
|
||||
override fun parseSingleFileImpl(file: PsiFile): String {
|
||||
val ids: MutableCollection<AndroidWidget> = ArrayList()
|
||||
file.accept(AndroidXmlVisitor({ id, wClass -> ids.add(AndroidWidget(id, wClass))}))
|
||||
file.accept(AndroidXmlVisitor({ id, wClass -> ids.add(AndroidWidget(id, wClass)) }))
|
||||
return produceKotlinProperties(KotlinStringWriter(), ids).toString()
|
||||
}
|
||||
|
||||
@@ -89,7 +85,7 @@ class IDEAndroidUIXmlParser(val project: Project): AndroidUIXmlParser() {
|
||||
val idPrefix = "@+id/"
|
||||
val attribute = tag?.getAttribute("android:id")
|
||||
if (attribute != null && attribute.getValue() == idPrefix + oldName) {
|
||||
allRenames[XmlAttributeValueWrapper(attribute.getValueElement()!!)] = idPrefix+newName
|
||||
allRenames[XmlAttributeValueWrapper(attribute.getValueElement()!!)] = idPrefix + newName
|
||||
}
|
||||
tag?.acceptChildren(this)
|
||||
}
|
||||
|
||||
@@ -30,13 +30,9 @@ import com.intellij.psi.scope.PsiScopeProcessor;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiElementProcessor;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.xml.XmlAttribute;
|
||||
import com.intellij.psi.xml.XmlAttributeValue;
|
||||
import com.intellij.psi.xml.XmlTag;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.xml.DomElement;
|
||||
import com.intellij.util.xml.DomManager;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -384,25 +380,14 @@ public class XmlAttributeValueWrapper implements XmlAttributeValue, PsiNamedElem
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
String value = myWrappee.getValue();
|
||||
return ((NavigationItem) myWrappee).getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public PsiElement setName(@NonNls @NotNull String name) throws IncorrectOperationException {
|
||||
//if (AndroidResourceUtil.isIdDeclaration(myWrappee)) {
|
||||
XmlAttribute attribute = (XmlAttribute) myWrappee.getParent();
|
||||
attribute.setValue(name);
|
||||
//}
|
||||
//else {
|
||||
// // then it is a value resource
|
||||
// XmlTag tag = PsiTreeUtil.getParentOfType(myWrappee, XmlTag.class);
|
||||
// DomElement domElement = DomManager.getDomManager(getProject()).getDomElement(tag);
|
||||
// assert domElement instanceof ResourceElement;
|
||||
// ResourceElement resElement = (ResourceElement) domElement;
|
||||
// resElement.getName().setValue(name);
|
||||
//}
|
||||
XmlAttribute attribute = (XmlAttribute) myWrappee.getParent();
|
||||
attribute.setValue(name);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user