diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java index fc8898d08bd3..54b3e4a82196 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java @@ -74,7 +74,9 @@ import javax.swing.border.Border; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; /** * User: anna @@ -237,7 +239,7 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner { public void select() { updateModel(); updateList(); - + if (!myList.isEmpty()) { myModel.setSelectedIndex(myList.size() - 1); IdeFocusManager.getInstance(myProject).requestFocus(this, true); @@ -563,7 +565,7 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner { private void navigateInsideBar(final Object object) { myModel.updateModel(object); updateList(); - + myModel.setSelectedIndex(myList.size() - 1); if (myHint != null) { @@ -646,6 +648,18 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner { return element != null && element.isValid() ? new PsiElement[]{element} : null; } + if (dataId.equals(DataConstants.VIRTUAL_FILE_ARRAY)) { + PsiElement[] psiElements = (PsiElement[])getData(DataConstants.PSI_ELEMENT_ARRAY); + if (psiElements == null) return null; + Set files = new LinkedHashSet(); + for (PsiElement element : psiElements) { + if (element instanceof PsiFileSystemItem) { + files.add(((PsiFileSystemItem)element).getVirtualFile()); + } + } + return files.size() > 0 ? files.toArray(new VirtualFile[files.size()]) : null; + } + if (dataId.equals(DataConstants.CONTEXT_COMPONENT)) { return this; } diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java index 749ad5357c18..d2231fe2f1dc 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java @@ -970,6 +970,17 @@ public final class ProjectViewImpl extends ProjectView implements PersistentStat PsiElement[] elements = currentProjectViewPane.getSelectedPSIElements(); return elements.length == 0 ? null : elements; } + if (DataConstants.VIRTUAL_FILE_ARRAY.equals(dataId)) { + PsiElement[] psiElements = (PsiElement[])getData(DataConstants.PSI_ELEMENT_ARRAY); + if (psiElements == null) return null; + Set files = new LinkedHashSet(); + for (PsiElement element : psiElements) { + if (element instanceof PsiFileSystemItem) { + files.add(((PsiFileSystemItem)element).getVirtualFile()); + } + } + return files.size() > 0 ? files.toArray(new VirtualFile[files.size()]) : null; + } if (DataConstantsEx.TARGET_PSI_ELEMENT.equals(dataId)) { return null; }