mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
F4 in FileStructureDialog now closes the dialog as it should
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user