Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ ideaVersion=2021.3
sinceIdeaVersion=
# see https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#intellij-extension-type for list of accepted types
ideaType=IC
platformPlugins=properties,java
platformPlugins=properties,java,org.intellij.groovy
intellijPublishToken=
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package io.jenkins.stapler.idea.facets.groovy;

import com.intellij.psi.PsiFile;
import org.jetbrains.plugins.groovy.GroovyFileType;
import org.kohsuke.stapler.idea.extension.JavaStructureViewExtension;

public class GroovyViewPredicate implements JavaStructureViewExtension.StaplerViewPredicate {
@Override
public boolean test(PsiFile psiFile) {
return psiFile.getFileType() == GroovyFileType.GROOVY_FILE_TYPE;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package io.jenkins.stapler.idea.facets.jelly;

import com.intellij.psi.PsiFile;
import org.kohsuke.stapler.idea.extension.JavaStructureViewExtension;
import org.kohsuke.stapler.idea.language.JellyFileType;

public class JellyViewPredicate implements JavaStructureViewExtension.StaplerViewPredicate {
@Override
public boolean test(PsiFile psiFile) {
return psiFile.getFileType() == JellyFileType.INSTANCE;
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
package org.kohsuke.stapler.idea.extension;

import com.intellij.ide.structureView.StructureViewTreeElement;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiPackage;
import org.kohsuke.stapler.idea.psi.JellyFile;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;

/**
* Additional jelly files in java structure view
Expand All @@ -19,6 +20,10 @@
*/
public class JavaStructureViewExtension extends AbstractStructureViewExtension {

public interface StaplerViewPredicate extends Predicate<PsiFile> {
ExtensionPointName<Predicate<PsiFile>> EP_NAME =
ExtensionPointName.create("Stapler plugin for IntelliJ IDEA.staplerViewPredicate");
}
@Override
public Class<? extends PsiElement> getType() {
return PsiClass.class;
Expand All @@ -32,9 +37,10 @@ public StructureViewTreeElement[] getChildren(PsiElement parent) {
PsiPackage psiPackage = JavaPsiFacade.getInstance(parent.getProject())
.findPackage(qualifiedClassName);
if (psiPackage != null) {
Predicate<PsiFile> isView = StaplerViewPredicate.EP_NAME.extensions().reduce(Predicate::or).orElseGet(() -> psiFile -> false);
PsiFile[] maybeViewFiles = psiPackage.getFiles(getCurrentScope(parent));
for (PsiFile file : maybeViewFiles) {
if (file instanceof JellyFile) {
if (isView.test(file)) {
files.add(new LeafPsiStructureViewTreeElement(file));
}
}
Expand Down
5 changes: 5 additions & 0 deletions src/main/resources/META-INF/jenkins-groovy.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<idea-plugin>
<extensions defaultExtensionNs="Stapler plugin for IntelliJ IDEA">
<staplerViewPredicate implementation="io.jenkins.stapler.idea.facets.groovy.GroovyViewPredicate" />
</extensions>
</idea-plugin>
9 changes: 9 additions & 0 deletions src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@
<!-- <version>1.8</version>-->
<!-- <idea-version since-build="110.00"/>-->

<extensionPoints>
<extensionPoint name="staplerViewPredicate" interface="org.kohsuke.stapler.idea.extension.JavaStructureViewExtension$StaplerViewPredicate"/>
</extensionPoints>

<extensions defaultExtensionNs="Stapler plugin for IntelliJ IDEA">
<staplerViewPredicate implementation="io.jenkins.stapler.idea.facets.jelly.JellyViewPredicate" />
</extensions>

<extensions defaultExtensionNs="com.intellij">
<!--
REFERENCE:
Expand Down Expand Up @@ -137,5 +145,6 @@
<depends>com.intellij.properties</depends>
<!-- this is needed for language injection -->
<!--<depends>org.intellij.intelliLang</depends>-->
<depends optional="true" config-file="jenkins-groovy.xml">org.intellij.groovy</depends>

</idea-plugin>