Index: EditorBracesMatching/src/org/netbeans/modules/editor/bracesmatching/ControlPanel.java =================================================================== RCS file: /cvs/contrib/EditorBracesMatching/src/org/netbeans/modules/editor/bracesmatching/ControlPanel.java,v retrieving revision 1.4 diff -u -u -r1.4 ControlPanel.java --- EditorBracesMatching/src/org/netbeans/modules/editor/bracesmatching/ControlPanel.java 20 May 2007 06:49:05 -0000 1.4 +++ EditorBracesMatching/src/org/netbeans/modules/editor/bracesmatching/ControlPanel.java 21 May 2007 22:14:55 -0000 @@ -25,8 +25,8 @@ public class ControlPanel extends javax.swing.JPanel { private static String [][] SEARCH_DIRECTIONS = new String [][] { - new String [] { MasterMatcher.D_BACKWARD, "Backward Only" }, //NOI18N - new String [] { MasterMatcher.D_FORWARD, "Forward Only" }, //NOI18N + new String [] { MasterMatcher.D_BACKWARD, "Backward" }, //NOI18N + new String [] { MasterMatcher.D_FORWARD, "Forward" }, //NOI18N new String [] { MasterMatcher.D_BOTH, "Both" }, //NOI18N }; Index: EditorBracesMatching/src/org/netbeans/modules/editor/bracesmatching/MasterMatcher.java =================================================================== RCS file: /cvs/contrib/EditorBracesMatching/src/org/netbeans/modules/editor/bracesmatching/MasterMatcher.java,v retrieving revision 1.9 diff -u -u -r1.9 MasterMatcher.java --- EditorBracesMatching/src/org/netbeans/modules/editor/bracesmatching/MasterMatcher.java 20 May 2007 06:49:06 -0000 1.9 +++ EditorBracesMatching/src/org/netbeans/modules/editor/bracesmatching/MasterMatcher.java 21 May 2007 22:14:55 -0000 @@ -401,17 +401,11 @@ BracesMatcher [] matcher = new BracesMatcher[1]; if (D_BACKWARD.equalsIgnoreCase(allowedDirection.toString())) { - if (B_BACKWARD.equalsIgnoreCase(caretBias.toString())) { - origin = findOrigin(factories, 0, true, matcher); - } else { - origin = findOrigin(factories, 1, true, matcher); - } + if((origin = findOrigin(B_BACKWARD, factories, matcher)) == null) + origin = findOrigin(B_FORWARD, factories, matcher); } else if (D_FORWARD.equalsIgnoreCase(allowedDirection.toString())) { - if (B_BACKWARD.equalsIgnoreCase(caretBias.toString())) { - origin = findOrigin(factories, -1, false, matcher); - } else { - origin = findOrigin(factories, 0, false, matcher); - } + if((origin = findOrigin(B_FORWARD, factories, matcher)) == null) + origin = findOrigin(B_BACKWARD, factories, matcher); } else { boolean firstBackward; int caretAdjustment; @@ -461,6 +455,28 @@ // We were interrupted, no results interrupted = true; } + } + + private int [] findOrigin( + String direction, + Collection factories, + BracesMatcher [] matcher + ) throws InterruptedException { + int[] origin = null; + if (D_BACKWARD == direction) { + if (B_BACKWARD.equalsIgnoreCase(caretBias.toString())) { + origin = findOrigin(factories, 0, true, matcher); + } else { + origin = findOrigin(factories, 1, true, matcher); + } + } else if (D_FORWARD == direction) { + if (B_BACKWARD.equalsIgnoreCase(caretBias.toString())) { + origin = findOrigin(factories, -1, false, matcher); + } else { + origin = findOrigin(factories, 0, false, matcher); + } + } + return origin; } private Collection findFactories() {