From 29714cde66ba06b7c8ea2495792bbd8d2f84943b Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 21 Jan 2005 11:21:19 +0300 Subject: [PATCH] F4 in FileStructureDialog now closes the dialog as it should --- .../ide/commander/CommanderPanel.java | 23 +++++++------- .../ide/util/FileStructureDialog.java | 30 ++++++++++--------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/source/com/intellij/ide/commander/CommanderPanel.java b/source/com/intellij/ide/commander/CommanderPanel.java index 17fce765d546..d08f6011ce12 100644 --- a/source/com/intellij/ide/commander/CommanderPanel.java +++ b/source/com/intellij/ide/commander/CommanderPanel.java @@ -208,14 +208,8 @@ public class CommanderPanel extends JPanel { final AbstractTreeNode element = getSelectedNode(); if (element.getChildren().size() == 0) { if (!shouldDrillDownOnEmptyElement(element.getValue())) { - Object selectedValue = getSelectedValue(); - if (selectedValue instanceof Navigatable && ((Navigatable)selectedValue).canNavigate()) { - ((Navigatable)selectedValue).navigate(true); - onNavigatePerformed(); - return; - } else { - return; - } + navigateSelectedElement(); + return; } } @@ -227,6 +221,15 @@ public class CommanderPanel extends JPanel { updateHistory(true); } + public boolean navigateSelectedElement() { + final Object selectedValue = getSelectedValue(); + if (selectedValue instanceof Navigatable && ((Navigatable)selectedValue).canNavigate()) { + ((Navigatable)selectedValue).navigate(true); + return true; + } + return false; + } + protected boolean shouldDrillDownOnEmptyElement(final Object value) { return true; } @@ -236,10 +239,6 @@ public class CommanderPanel extends JPanel { return selectedIndices.length == 1 && selectedIndices[0] == 0 && (myModel.getElementAt(selectedIndices[0]) instanceof String); } - protected void onNavigatePerformed() { - - } - public final void setBuilder(final AbstractListBuilder builder) { myBuilder = builder; removeAll(); diff --git a/source/com/intellij/ide/util/FileStructureDialog.java b/source/com/intellij/ide/util/FileStructureDialog.java index 7592690b4515..db3b79df0d1d 100644 --- a/source/com/intellij/ide/util/FileStructureDialog.java +++ b/source/com/intellij/ide/util/FileStructureDialog.java @@ -60,16 +60,12 @@ public class FileStructureDialog extends DialogWrapper { if (elementAtCursor != null) { if (elementAtCursor instanceof PsiClass) { - myCommanderPanel.getBuilder().enterElement(elementAtCursor, ((PsiClass)elementAtCursor).getContainingFile().getVirtualFile()); + myCommanderPanel.getBuilder().enterElement(elementAtCursor, elementAtCursor.getContainingFile().getVirtualFile()); } else { myCommanderPanel.getBuilder().selectElement(elementAtCursor); } } - - AnAction editSourceAction = ActionManager.getInstance().getAction(IdeActions.ACTION_EDIT_SOURCE); - editSourceAction.registerCustomShortcutSet(editSourceAction.getShortcutSet(), myCommanderPanel); - } protected Border createContentPaneBorder(){ @@ -157,12 +153,15 @@ public class FileStructureDialog extends DialogWrapper { }); myCommanderPanel.setTitlePanelVisible(false); - //ShortcutSet shortcutSet = ActionManager.getInstance().getAction(IdeActions.ACTION_EDIT_SOURCE).getShortcutSet(); - //new AnAction() { - // public void actionPerformed(AnActionEvent e){ - // myCommanderPanel.performEditSourceAction(); - // } - //}.registerCustomShortcutSet(shortcutSet, myCommanderPanel); + new AnAction() { + public void actionPerformed(AnActionEvent e) { + final boolean succeeded = myCommanderPanel.navigateSelectedElement(); + if (succeeded) { + unregisterCustomShortcutSet(myCommanderPanel); + } + } + }.registerCustomShortcutSet(ActionManager.getInstance().getAction(IdeActions.ACTION_EDIT_SOURCE).getShortcutSet(), myCommanderPanel); + myCommanderPanel.setPreferredSize(new Dimension(400,500)); JPanel panel = new JPanel(new GridBagLayout()); @@ -227,11 +226,14 @@ public class FileStructureDialog extends DialogWrapper { } }); - } - protected void onNavigatePerformed() { - close(CANCEL_EXIT_CODE); + public boolean navigateSelectedElement() { + final boolean succeeded = super.navigateSelectedElement(); + if (succeeded) { + close(CANCEL_EXIT_CODE); + } + return succeeded; } public Object getData(String dataId) {