From: <ez...@us...> - 2007-01-30 17:04:50
|
Revision: 8802 http://svn.sourceforge.net/jedit/?rev=8802&view=rev Author: ezust Date: 2007-01-30 09:04:48 -0800 (Tue, 30 Jan 2007) Log Message: ----------- [ 1646058 ] Improve keyboard interaction in HyperSearch Results ( k_satoda ) Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/search/HyperSearchResults.java Modified: jEdit/trunk/org/gjt/sp/jedit/search/HyperSearchResults.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/search/HyperSearchResults.java 2007-01-30 15:26:39 UTC (rev 8801) +++ jEdit/trunk/org/gjt/sp/jedit/search/HyperSearchResults.java 2007-01-30 17:04:48 UTC (rev 8802) @@ -326,10 +326,45 @@ throw new IllegalArgumentException("Bad mode: " + mode); } - ((HyperSearchNode)value).goTo(pane); + n.goTo(pane); } } //}}} + //{{{ removeSelectedNode() method + private void removeSelectedNode() + { + TreePath path = resultTree.getSelectionPath(); + if(path == null) + return; + + MutableTreeNode value = (MutableTreeNode)path + .getLastPathComponent(); + + // Adjust selection so that repeating some removals + // behave naturally. + TreePath parentPath = path.getParentPath(); + if(parentPath.getPathCount() > 0) + { + MutableTreeNode parent = (MutableTreeNode)parentPath + .getLastPathComponent(); + int removingIndex = parent.getIndex(value); + int nextIndex = removingIndex + 1; + if(nextIndex < parent.getChildCount()) + { + TreeNode next = parent.getChildAt(nextIndex); + resultTree.setSelectionPath( + parentPath.pathByAddingChild(next)); + } + else + { + resultTree.setSelectionPath(parentPath); + } + } + + HyperSearchOperationNode.removeNodeFromCache(value); + resultTreeModel.removeNodeFromParent(value); + } //}}} + //}}} //{{{ ActionHandler class @@ -366,8 +401,9 @@ { public void keyPressed(KeyEvent evt) { - if(evt.getKeyCode() == KeyEvent.VK_ENTER) + switch(evt.getKeyCode()) { + case KeyEvent.VK_SPACE: goToSelectedNode(M_OPEN); // fuck me dead @@ -380,6 +416,17 @@ }); evt.consume(); + break; + case KeyEvent.VK_ENTER: + goToSelectedNode(M_OPEN); + evt.consume(); + break; + case KeyEvent.VK_DELETE: + removeSelectedNode(); + evt.consume(); + break; + default: + break; } } } //}}} @@ -404,10 +451,6 @@ else { goToSelectedNode(M_OPEN); - - view.toFront(); - view.requestFocus(); - view.getTextArea().requestFocus(); } } //}}} @@ -477,14 +520,7 @@ public void actionPerformed(ActionEvent evt) { - TreePath path = resultTree.getSelectionPath(); - if(path == null) - return; - - MutableTreeNode value = (MutableTreeNode)path - .getLastPathComponent(); - HyperSearchOperationNode.removeNodeFromCache(value); - resultTreeModel.removeNodeFromParent(value); + removeSelectedNode(); } }//}}} @@ -527,7 +563,6 @@ SearchDialog.showSearchDialog(view,null,SearchDialog.DIRECTORY); } }//}}} - //{{{ ExpandChildTreeNodesAction class class ExpandChildTreeNodesAction extends AbstractAction @@ -570,7 +605,6 @@ //{{{ TreeDisplayAction class class TreeDisplayAction extends AbstractAction { - //{{{ actionPerformed method public void actionPerformed(ActionEvent evt) { JCheckBoxMenuItem menuItem = (JCheckBoxMenuItem) evt.getSource(); @@ -613,6 +647,7 @@ } }//}}} + //{{{ expandAllNodes() method public void expandAllNodes(DefaultMutableTreeNode node) { @@ -623,7 +658,7 @@ return true; } }); - } + } //}}} //{{{ GoToNodeAction class class GoToNodeAction extends AbstractAction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |