-
-
Notifications
You must be signed in to change notification settings - Fork 138
/
Copy pathRouteUrlAnnotationCompletionProvider.java
26 lines (23 loc) · 1.51 KB
/
RouteUrlAnnotationCompletionProvider.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package fr.adrienbrault.idea.symfony2plugin.routing.annotation;
import de.espend.idea.php.annotation.extension.PhpAnnotationCompletionProvider;
import de.espend.idea.php.annotation.extension.parameter.AnnotationCompletionProviderParameter;
import de.espend.idea.php.annotation.extension.parameter.AnnotationPropertyParameter;
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
import fr.adrienbrault.idea.symfony2plugin.routing.RouteHelper;
import fr.adrienbrault.idea.symfony2plugin.util.PhpElementsUtil;
/**
* "@Route("/foobar1")"
*
* @author Daniel Espendiller <[email protected]>
*/
public class RouteUrlAnnotationCompletionProvider implements PhpAnnotationCompletionProvider {
@Override
public void getPropertyValueCompletions(AnnotationPropertyParameter annotationPropertyParameter, AnnotationCompletionProviderParameter annotationCompletionProviderParameter) {
if (!Symfony2ProjectComponent.isEnabled(annotationPropertyParameter.getProject()) || !PhpElementsUtil.isInstanceOf(annotationPropertyParameter.getPhpClass(), "\\Symfony\\Component\\Routing\\Annotation\\Route", "\\Symfony\\Component\\Routing\\Attribute\\Route")) {
return;
}
if (annotationPropertyParameter.getType() == AnnotationPropertyParameter.Type.DEFAULT || "path".equals(annotationPropertyParameter.getPropertyName())) {
annotationCompletionProviderParameter.getResult().addAllElements(RouteHelper.getRoutesPathLookupElements(annotationPropertyParameter.getProject()));
}
}
}