IDEADEV-40762: correct getData(VIRTUAL_FILE_ARRAY) for content roots of the modules

This commit is contained in:
Maxim Shafirov
2009-10-08 18:44:34 +04:00
parent a35afb71e6
commit e4edbaf6a5
2 changed files with 27 additions and 2 deletions
@@ -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<VirtualFile> files = new LinkedHashSet<VirtualFile>();
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;
}
@@ -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<VirtualFile> files = new LinkedHashSet<VirtualFile>();
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;
}