package fr.adrienbrault.idea.symfony2plugin.codeInsight.caret.overlay.util; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.project.Project; import com.jetbrains.php.PhpPresentationUtil; import com.jetbrains.php.lang.psi.elements.Method; import com.jetbrains.php.lang.psi.elements.Parameter; import com.jetbrains.php.lang.psi.elements.PhpClass; import fr.adrienbrault.idea.symfony2plugin.codeInsight.caret.overlay.CaretTextOverlay; import fr.adrienbrault.idea.symfony2plugin.codeInsight.caret.overlay.CaretTextOverlayElement; import fr.adrienbrault.idea.symfony2plugin.util.dict.ServiceUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class CaretTextOverlayUtil { private static final ExtensionPointName<CaretTextOverlay> EXTENSIONS = new ExtensionPointName<>( "fr.adrienbrault.idea.symfony2plugin.extension.CaretTextOverlay" ); public static CaretTextOverlay[] getExtensions() { return EXTENSIONS.getExtensions(); } @Nullable public static CaretTextOverlayElement getCaretTextOverlayForServiceConstructor(@NotNull Project project, @NotNull String serviceName) { PhpClass serviceClass = ServiceUtil.getResolvedClassDefinition(project, serviceName); if(serviceClass == null) { return null; } return getCaretTextOverlayForConstructor(serviceClass); } @Nullable public static CaretTextOverlayElement getCaretTextOverlayForConstructor(@NotNull PhpClass phpClass) { Method constructor = phpClass.getConstructor(); if(constructor == null) { return null; } Parameter[] parameters = constructor.getParameters(); if(parameters.length == 0) { return null; } return new CaretTextOverlayElement(PhpPresentationUtil.formatParameters(null, parameters).toString()); } }