reformat code, optimize imports

This commit is contained in:
Mikhail Mutcianko
2014-07-31 12:28:33 +04:00
committed by Yan Zhulanow
parent 2f97e7fadb
commit 395959bf21
9 changed files with 37 additions and 71 deletions
@@ -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()
}
@@ -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"))
@@ -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
@@ -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 ""
}
@@ -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;
}