fix compilation

This commit is contained in:
Dmitry Jemerov
2016-10-31 13:37:21 +01:00
parent ab5067a0d3
commit 594e2b6a77
2 changed files with 19 additions and 5 deletions
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.android.intention package org.jetbrains.kotlin.android.intention
import com.intellij.openapi.util.Key import com.intellij.openapi.util.Key
import com.intellij.openapi.vfs.VirtualFile
val CREATE_XML_RESOURCE_PARAMETERS_NAME_KEY = Key<String>("CREATE_XML_RESOURCE_PARAMETERS_NAME_KEY") val CREATE_XML_RESOURCE_PARAMETERS_NAME_KEY = Key<String>("CREATE_XML_RESOURCE_PARAMETERS_NAME_KEY")
@@ -24,4 +25,5 @@ val CREATE_XML_RESOURCE_PARAMETERS_NAME_KEY = Key<String>("CREATE_XML_RESOURCE_P
class CreateXmlResourceParameters(val name: String, class CreateXmlResourceParameters(val name: String,
val value: String, val value: String,
val fileName: String, val fileName: String,
val resourceDirectory: VirtualFile,
val directoryNames: List<String>) val directoryNames: List<String>)
@@ -26,12 +26,14 @@ import com.intellij.openapi.command.undo.UndoUtil
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
import com.intellij.openapi.module.Module import com.intellij.openapi.module.Module
import com.intellij.openapi.ui.Messages import com.intellij.openapi.ui.Messages
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.* import com.intellij.psi.*
import com.intellij.psi.util.PsiTreeUtil import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.android.actions.CreateXmlResourceDialog import org.jetbrains.android.actions.CreateXmlResourceDialog
import org.jetbrains.android.facet.AndroidFacet import org.jetbrains.android.facet.AndroidFacet
import org.jetbrains.android.util.AndroidBundle import org.jetbrains.android.util.AndroidBundle
import org.jetbrains.android.util.AndroidResourceUtil import org.jetbrains.android.util.AndroidResourceUtil
import org.jetbrains.android.util.AndroidUtils
import org.jetbrains.kotlin.builtins.isExtensionFunctionType import org.jetbrains.kotlin.builtins.isExtensionFunctionType
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.analyze
@@ -55,6 +57,7 @@ class KotlinAndroidAddStringResource : SelfTargetingIntention<KtLiteralStringTem
private val GET_STRING_METHOD = "getString" private val GET_STRING_METHOD = "getString"
private val EXTRACT_RESOURCE_DIALOG_TITLE = "Extract Resource" private val EXTRACT_RESOURCE_DIALOG_TITLE = "Extract Resource"
private val PACKAGE_NOT_FOUND_ERROR = "package.not.found.error" private val PACKAGE_NOT_FOUND_ERROR = "package.not.found.error"
private val RESOURCE_DIR_ERROR = "check.resource.dir.error"
} }
override fun isApplicableTo(element: KtLiteralStringTemplateEntry, caretOffset: Int): Boolean { override fun isApplicableTo(element: KtLiteralStringTemplateEntry, caretOffset: Int): Boolean {
@@ -86,9 +89,9 @@ class KotlinAndroidAddStringResource : SelfTargetingIntention<KtLiteralStringTem
return return
} }
val parameters = getCreateXmlResourceParameters(facet.module, element) ?: return val parameters = getCreateXmlResourceParameters(facet.module, element, file.virtualFile) ?: return
if (!AndroidResourceUtil.createValueResource(facet.module, parameters.name, ResourceType.STRING, if (!AndroidResourceUtil.createValueResource(project, parameters.resourceDirectory, parameters.name, ResourceType.STRING,
parameters.fileName, parameters.directoryNames, parameters.value)) { parameters.fileName, parameters.directoryNames, parameters.value)) {
return return
} }
@@ -98,13 +101,15 @@ class KotlinAndroidAddStringResource : SelfTargetingIntention<KtLiteralStringTem
UndoUtil.markPsiFileForUndo(file) UndoUtil.markPsiFileForUndo(file)
} }
private fun getCreateXmlResourceParameters(module: Module, element: KtLiteralStringTemplateEntry): CreateXmlResourceParameters? { private fun getCreateXmlResourceParameters(module: Module, element: KtLiteralStringTemplateEntry,
contextFile: VirtualFile): CreateXmlResourceParameters? {
val stringValue = element.text val stringValue = element.text
val showDialog = !ApplicationManager.getApplication().isUnitTestMode val showDialog = !ApplicationManager.getApplication().isUnitTestMode
val resourceName = element.getUserData(CREATE_XML_RESOURCE_PARAMETERS_NAME_KEY) val resourceName = element.getUserData(CREATE_XML_RESOURCE_PARAMETERS_NAME_KEY)
val dialog = CreateXmlResourceDialog(module, ResourceType.STRING, resourceName, stringValue, true) val dialog = CreateXmlResourceDialog(module, ResourceType.STRING, resourceName, stringValue, true, null, contextFile)
dialog.title = EXTRACT_RESOURCE_DIALOG_TITLE dialog.title = EXTRACT_RESOURCE_DIALOG_TITLE
if (showDialog) { if (showDialog) {
if (!dialog.showAndGet()) { if (!dialog.showAndGet()) {
@@ -115,9 +120,16 @@ class KotlinAndroidAddStringResource : SelfTargetingIntention<KtLiteralStringTem
dialog.close(0) dialog.close(0)
} }
val resourceDirectory = dialog.resourceDirectory
if (resourceDirectory == null) {
AndroidUtils.reportError(module.project, AndroidBundle.message(RESOURCE_DIR_ERROR, module))
return null
}
return CreateXmlResourceParameters(dialog.resourceName, return CreateXmlResourceParameters(dialog.resourceName,
dialog.value, dialog.value,
dialog.fileName, dialog.fileName,
resourceDirectory,
dialog.dirNames) dialog.dirNames)
} }