IDEA-117077 Can't remove files from Recent Files

(cherry picked from commit cfbafa02c82118e31846dfd8308257d9f8b1e014)
This commit is contained in:
Konstantin Bulenkov
2013-11-26 15:57:10 +01:00
parent ee2e304070
commit fb583bf844
@@ -661,48 +661,67 @@ public class Switcher extends AnAction implements DumbAware {
}
private void closeTabOrToolWindow() {
final Object value = getSelectedList().getSelectedValue();
if (value instanceof FileInfo) {
final FileInfo info = (FileInfo)value;
final VirtualFile virtualFile = info.first;
final FileEditorManagerImpl editorManager = ((FileEditorManagerImpl)FileEditorManager.getInstance(project));
final JList jList = getSelectedList();
final EditorWindow wnd = findAppropriateWindow(info);
if (wnd == null) {
editorManager.closeFile(virtualFile, false, false);
} else {
editorManager.closeFile(virtualFile, wnd, false);
}
final int selectedIndex = jList.getSelectedIndex();
final IdeFocusManager focusManager = IdeFocusManager.getInstance(project);
myAlarm.addRequest(new Runnable() {
@Override
public void run() {
focusManager.requestFocus(SwitcherPanel.this, true);
final int[] selected = getSelectedList().getSelectedIndices();
Arrays.sort(selected);
int selectedIndex = 0;
for (int i = selected.length - 1; i>=0; i--) {
selectedIndex = selected[i];
Object value = getSelectedList().getModel().getElementAt(selectedIndex);
if (value instanceof FileInfo) {
final FileInfo info = (FileInfo)value;
final VirtualFile virtualFile = info.first;
final FileEditorManagerImpl editorManager = ((FileEditorManagerImpl)FileEditorManager.getInstance(project));
final JList jList = getSelectedList();
final EditorWindow wnd = findAppropriateWindow(info);
if (wnd == null) {
editorManager.closeFile(virtualFile, false, false);
}
else {
editorManager.closeFile(virtualFile, wnd, false);
}
final IdeFocusManager focusManager = IdeFocusManager.getInstance(project);
myAlarm.cancelAllRequests();
myAlarm.addRequest(new Runnable() {
@Override
public void run() {
focusManager.requestFocus(SwitcherPanel.this, true);
}
}, 300);
if (jList.getModel().getSize() == 1) {
goLeft();
removeElementAt(jList, selectedIndex);
this.remove(jList);
this.remove(separator);
final Dimension size = toolWindows.getSize();
myPopup.setSize(new Dimension(size.width, myPopup.getSize().height));
}
else {
removeElementAt(jList, selectedIndex);
jList.setSize(jList.getPreferredSize());
}
if (isPinnedMode()) {
EditorHistoryManager.getInstance(project).removeFile(virtualFile);
}
}, 300);
if (jList.getModel().getSize() == 1) {
goLeft();
removeElementAt(jList, selectedIndex);
this.remove(jList);
this.remove(separator);
final Dimension size = toolWindows.getSize();
myPopup.setSize(new Dimension(size.width, myPopup.getSize().height));
} else {
goForward();
removeElementAt(jList, selectedIndex);
jList.setSize(jList.getPreferredSize());
}
pack();
} else if (value instanceof ToolWindow) {
final ToolWindow toolWindow = (ToolWindow)value;
if (twManager instanceof ToolWindowManagerImpl) {
ToolWindowManagerImpl manager = (ToolWindowManagerImpl)twManager;
manager.hideToolWindow(ids.get(toolWindow), false, false);
} else {
toolWindow.hide(null);
else if (value instanceof ToolWindow) {
final ToolWindow toolWindow = (ToolWindow)value;
if (twManager instanceof ToolWindowManagerImpl) {
ToolWindowManagerImpl manager = (ToolWindowManagerImpl)twManager;
manager.hideToolWindow(ids.get(toolWindow), false, false);
}
else {
toolWindow.hide(null);
}
}
}
pack();
myPopup.getContent().revalidate();
myPopup.getContent().repaint();
if (getSelectedList().getModel().getSize() > selectedIndex) {
getSelectedList().setSelectedIndex(selectedIndex);
getSelectedList().ensureIndexIsVisible(selectedIndex);
}
}
private static void removeElementAt(JList jList, int index) {