< prev index next >

core/JemmyCore/src/org/jemmy/input/RegexCaretDirection.java

Print this page




  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 package org.jemmy.input;
  26 
  27 import java.util.regex.Matcher;
  28 import java.util.regex.Pattern;
  29 import org.jemmy.JemmyException;
  30 import org.jemmy.interfaces.CaretOwner;
  31 import org.jemmy.interfaces.Text;
  32 
  33 /**
  34  *
  35  * @author shura
  36  */
  37 public class RegexCaretDirection extends CaretImpl.DirectionToPosition {
  38 
  39     /**
  40      *
  41      */
  42     public static final String REGEX_FLAGS = "";
  43 
  44     String regex;
  45     boolean front;
  46     int index;
  47     Text text;
  48     int flags;
  49 
  50     /**
  51      *
  52      * @param text
  53      * @param caretOwner
  54      * @param regex
  55      * @param flags
  56      * @param front
  57      * @param index
  58      */
  59     public RegexCaretDirection(Text text, CaretOwner caretOwner, String regex, int flags, boolean front, int index) {
  60         super(caretOwner, 0);
  61         this.text = text;
  62         this.regex = regex;
  63         this.flags = flags;
  64         this.front = front;
  65         this.index = index;
  66         if (index < 0) {
  67             throw new JemmyException("Index must be >=0 but is " + index, regex);
  68         }
  69     }
  70 
  71     /**
  72      *
  73      * @return
  74      */
  75     @Override
  76     protected double position() {
  77         return position(text, regex, flags, front, index);
  78     }
  79 
  80     /**
  81      *
  82      * @param text
  83      * @param regex
  84      * @param flags
  85      * @param front
  86      * @param index
  87      * @return
  88      */
  89     public static int position(Text text, String regex, int flags, boolean front, int index) {
  90         Matcher matcher = Pattern.compile(regex, flags).matcher(text.text());
  91         for (int i = 0; i <= index; i++) {
  92             if (!matcher.find()) {
  93                 throw new JemmyException(index + "'s occurance of \"" + regex + "\" not found.", text);
  94             }
  95         }
  96         return front ? matcher.start() : matcher.end();
  97     }
  98 }


  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 package org.jemmy.input;
  26 
  27 import java.util.regex.Matcher;
  28 import java.util.regex.Pattern;
  29 import org.jemmy.JemmyException;
  30 import org.jemmy.interfaces.CaretOwner;
  31 import org.jemmy.interfaces.Text;
  32 
  33 /**
  34  *
  35  * @author shura
  36  */
  37 public class RegexCaretDirection extends CaretImpl.DirectionToPosition {
  38 



  39     public static final String REGEX_FLAGS = "";
  40 
  41     String regex;
  42     boolean front;
  43     int index;
  44     Text text;
  45     int flags;
  46 









  47     public RegexCaretDirection(Text text, CaretOwner caretOwner, String regex, int flags, boolean front, int index) {
  48         super(caretOwner, 0);
  49         this.text = text;
  50         this.regex = regex;
  51         this.flags = flags;
  52         this.front = front;
  53         this.index = index;
  54         if (index < 0) {
  55             throw new JemmyException("Index must be >=0 but is " + index, regex);
  56         }
  57     }
  58 




  59     @Override
  60     protected double position() {
  61         return position(text, regex, flags, front, index);
  62     }
  63 









  64     public static int position(Text text, String regex, int flags, boolean front, int index) {
  65         Matcher matcher = Pattern.compile(regex, flags).matcher(text.text());
  66         for (int i = 0; i <= index; i++) {
  67             if (!matcher.find()) {
  68                 throw new JemmyException(index + "'s occurance of \"" + regex + "\" not found.", text);
  69             }
  70         }
  71         return front ? matcher.start() : matcher.end();
  72     }
  73 }
< prev index next >