mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Select in target for favorites
This commit is contained in:
+10
-1
@@ -52,7 +52,11 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.util.PsiUtilBase;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.ui.treeStructure.actions.CollapseAllAction;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.EditSourceOnDoubleClickHandler;
|
||||
import com.intellij.util.EditSourceOnEnterKeyHandler;
|
||||
import com.intellij.util.IconUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -68,6 +72,10 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author anna
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
public class FavoritesTreeViewPanel extends JPanel implements DataProvider {
|
||||
private final FavoritesTreeStructure myFavoritesTreeStructure;
|
||||
private FavoritesViewTreeBuilder myBuilder;
|
||||
@@ -167,6 +175,7 @@ public class FavoritesTreeViewPanel extends JPanel implements DataProvider {
|
||||
return CustomShortcutSet.fromString("DELETE");
|
||||
}
|
||||
})
|
||||
.addExtraAction(AnActionButton.fromAction(new CollapseAllAction(myTree)))
|
||||
.setLineBorder(0, 0, 0, 0)
|
||||
.createPanel();
|
||||
panel.setBorder(IdeBorderFactory.createEmptyBorder(0));
|
||||
|
||||
+74
-12
@@ -16,19 +16,26 @@
|
||||
|
||||
package com.intellij.ide.favoritesTreeView;
|
||||
|
||||
import com.intellij.ide.SelectInContext;
|
||||
import com.intellij.ide.SelectInManager;
|
||||
import com.intellij.ide.StandardTargetWeights;
|
||||
import com.intellij.ide.impl.ProjectViewSelectInTarget;
|
||||
import com.intellij.ide.impl.SelectInTargetPsiWrapper;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.ActionCallback;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiFileSystemItem;
|
||||
import com.intellij.openapi.wm.ToolWindow;
|
||||
import com.intellij.openapi.wm.ToolWindowId;
|
||||
import com.intellij.openapi.wm.ToolWindowManager;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiUtilBase;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* User: anna
|
||||
* Date: Feb 25, 2005
|
||||
* @author anna
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
public class FavoritesViewSelectInTarget extends ProjectViewSelectInTarget {
|
||||
public class FavoritesViewSelectInTarget extends SelectInTargetPsiWrapper {
|
||||
public FavoritesViewSelectInTarget(final Project project) {
|
||||
super(project);
|
||||
}
|
||||
@@ -37,8 +44,68 @@ public class FavoritesViewSelectInTarget extends ProjectViewSelectInTarget {
|
||||
return SelectInManager.FAVORITES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getToolWindowId() {
|
||||
return SelectInManager.FAVORITES;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void select(Object selector, VirtualFile virtualFile, boolean requestFocus) {
|
||||
select(myProject, selector, null, null, virtualFile, requestFocus);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void select(PsiElement element, boolean requestFocus) {
|
||||
PsiElement toSelect = null;
|
||||
if (element instanceof PsiFile || element instanceof PsiDirectory) {
|
||||
toSelect = element;
|
||||
}
|
||||
else {
|
||||
final PsiFile containingFile = element.getContainingFile();
|
||||
if (containingFile == null) return;
|
||||
final FileViewProvider viewProvider = containingFile.getViewProvider();
|
||||
toSelect = viewProvider.getPsi(viewProvider.getBaseLanguage());
|
||||
}
|
||||
if (toSelect == null) return;
|
||||
PsiElement originalElement = toSelect.getOriginalElement();
|
||||
final VirtualFile virtualFile = PsiUtilBase.getVirtualFile(originalElement);
|
||||
select(originalElement, virtualFile, requestFocus);
|
||||
}
|
||||
|
||||
public static ActionCallback select(@NotNull Project project,
|
||||
final Object toSelect,
|
||||
@Nullable final String viewId,
|
||||
@Nullable final String subviewId,
|
||||
final VirtualFile virtualFile,
|
||||
final boolean requestFocus) {
|
||||
final ActionCallback result = new ActionCallback();
|
||||
|
||||
ToolWindowManager windowManager=ToolWindowManager.getInstance(project);
|
||||
final ToolWindow favoritesToolWindow = windowManager.getToolWindow(ToolWindowId.FAVORITES_VIEW);
|
||||
|
||||
if (favoritesToolWindow != null) {
|
||||
final FavoritesTreeViewPanel panel = UIUtil.findComponentOfType(favoritesToolWindow.getComponent(), FavoritesTreeViewPanel.class);
|
||||
|
||||
if (panel != null) {
|
||||
final Runnable runnable = new Runnable() {
|
||||
public void run() {
|
||||
panel.selectElement(toSelect, virtualFile, requestFocus);
|
||||
result.setDone();
|
||||
}
|
||||
};
|
||||
|
||||
if (requestFocus) {
|
||||
favoritesToolWindow.activate(runnable, false);
|
||||
} else {
|
||||
favoritesToolWindow.show(runnable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
protected boolean canSelect(final PsiFileSystemItem file) {
|
||||
if (!super.canSelect(file)) return false;
|
||||
return findSuitableFavoritesList(file.getVirtualFile(), myProject, null) != null;
|
||||
}
|
||||
|
||||
@@ -63,9 +130,4 @@ public class FavoritesViewSelectInTarget extends ProjectViewSelectInTarget {
|
||||
protected boolean canWorkWithCustomObjects() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isSubIdSelectable(String subId, SelectInContext context) {
|
||||
final FavoritesManager favoritesManager = FavoritesManager.getInstance(myProject);
|
||||
return favoritesManager.contains(subId, context.getVirtualFile());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -457,6 +457,7 @@
|
||||
<selectInTarget implementation="com.intellij.ide.navigationToolbar.SelectInNavBarTarget"/>
|
||||
<selectInTarget implementation="com.intellij.ide.impl.StructureViewSelectInTarget"/>
|
||||
<selectInTarget implementation="com.intellij.ide.impl.ProjectViewSelectInExplorerTarget"/>
|
||||
<selectInTarget implementation="com.intellij.ide.favoritesTreeView.FavoritesViewSelectInTarget"/>
|
||||
|
||||
<elementLookupRenderer implementation="com.intellij.codeInsight.template.impl.TemplateLookupRenderer"/>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user