GotoRelatedFileAction for forms

This commit is contained in:
Dmitry Avdeev
2011-03-29 13:54:25 +04:00
parent d6cc802106
commit bc9e5a29a4
3 changed files with 108 additions and 0 deletions
@@ -0,0 +1,55 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.navigation;
import com.intellij.psi.NavigatablePsiElement;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
/**
* @author Dmitry Avdeev
*/
public class PsiGotoRelatedItem extends GotoRelatedItem {
private final NavigatablePsiElement myElement;
public PsiGotoRelatedItem(@NotNull NavigatablePsiElement element) {
myElement = element;
}
@Override
public void navigate() {
myElement.navigate(true);
}
@NotNull
@Override
public String getText() {
return myElement.getName();
}
@Override
public Icon getIcon() {
return myElement.getIcon(0);
}
@Override
public PsiFile getContainingFile() {
return myElement.getContainingFile();
}
}
@@ -111,6 +111,7 @@
<paletteItemProvider implementation="com.intellij.uiDesigner.palette.UIDesignerPaletteProvider"/>
<lang.foldingBuilder language="JAVA" implementationClass="com.intellij.uiDesigner.binding.GeneratedCodeFoldingBuilder"/>
<gotoRelatedProvider implementation="com.intellij.uiDesigner.binding.FormRelatedFilesProvider"/>
</extensions>
<project-components>
@@ -0,0 +1,52 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.uiDesigner.binding;
import com.intellij.navigation.GotoRelatedItem;
import com.intellij.navigation.GotoRelatedProvider;
import com.intellij.navigation.PsiGotoRelatedItem;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import java.util.Collections;
import java.util.List;
/**
* @author Dmitry Avdeev
*/
public class FormRelatedFilesProvider extends GotoRelatedProvider {
@NotNull
@Override
public List<GotoRelatedItem> getItems(PsiElement context) {
PsiClass psiClass = PsiTreeUtil.getParentOfType(context, PsiClass.class, false);
if (psiClass != null) {
List<PsiFile> forms = FormClassIndex.findFormsBoundToClass(psiClass);
return ContainerUtil.map(forms, new Function<PsiFile, GotoRelatedItem>() {
@Override
public GotoRelatedItem fun(PsiFile psiFile) {
return new PsiGotoRelatedItem(psiFile);
}
});
}
return Collections.emptyList();
}
}