in src/com/intellij/idea/plugin/hybris/execution/lineMarker/RefreshProjectRunLineMarkerContributor.kt [39:64]
override fun getInfo(element: PsiElement): Info? {
if (element !is XmlToken || element.tokenType != XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN) return null
val xmlAttributeValue = PsiTreeUtil.getParentOfType(element, XmlAttributeValue::class.java) ?: return null
val xmlFile = element.containingFile as? XmlFile ?: return null
if (xmlAttributeValue.value == HybrisConstants.EXTENSION_NAME_PLATFORM) return null
val descriptor = ProjectSettingsComponent.getInstance(xmlFile.project).getAvailableExtensions()[xmlAttributeValue.value]
?: return null
if (descriptor.type != ModuleDescriptorType.OOTB && descriptor.type != ModuleDescriptorType.CUSTOM) return null
val parentTagName = PsiTreeUtil.getParentOfType(xmlAttributeValue, XmlTag::class.java)?.localName
?: return null
val domManager = DomManager.getDomManager(xmlFile.project)
val module = xmlFile.project.modules
.find { it.yExtensionName() == xmlAttributeValue.value }
if (module != null) return null
if ((parentTagName == Extension.REQUIRES_EXTENSION && domManager.getFileElement(xmlFile, ExtensionInfo::class.java) != null)
|| (parentTagName == Extensions.EXTENSION && domManager.getFileElement(xmlFile, Hybrisconfig::class.java) != null)) {
val action = ActionManager.getInstance().getAction("File.yRefresh") ?: return null
return Info(HybrisIcons.Actions.FORCE_REFRESH, arrayOf(action)) { action.templateText }
}
return null
}