blob: 51ff373b3eeb656891663f51a9121dad19cc14c6 [file]
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.plugins.gradle.service.resolve
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator.generateType
import com.intellij.ide.presentation.Presentation
import com.intellij.openapi.util.Key
import com.intellij.psi.OriginInfoAwareElement
import com.intellij.psi.PsiElement
import com.intellij.util.lazyPub
import icons.ExternalSystemIcons
import org.jetbrains.plugins.gradle.settings.GradleExtensionsSettings.GradleTask
import org.jetbrains.plugins.groovy.dsl.holders.NonCodeMembersHolder.DOCUMENTATION
import org.jetbrains.plugins.groovy.lang.resolve.api.LazyTypeProperty
import javax.swing.Icon
@Presentation(typeName = "Gradle Task")
class GradleTaskProperty(
val task: GradleTask,
context: PsiElement
) : LazyTypeProperty(task.name, task.typeFqn, context),
OriginInfoAwareElement {
override fun getIcon(flags: Int): Icon? = ExternalSystemIcons.Task
override fun getOriginInfo(): String? = "task"
private val doc by lazyPub {
val result = StringBuilder()
result.append("<PRE>")
generateType(result, propertyType, myContext, true)
result.append(" " + task.name)
result.append("</PRE>")
task.description?.let(result::append)
result.toString()
}
override fun <T : Any?> getUserData(key: Key<T>): T? {
if (key == DOCUMENTATION) {
@Suppress("UNCHECKED_CAST")
return doc as T
}
return super.getUserData(key)
}
override fun toString(): String = "Gradle Task: $name"
}