1 // BreakIterator.java - Iterate over logical breaks in text.
3 /* Copyright (C) 1999 Cygnus Solutions
5 This file is part of libgcj.
7 This software is copyrighted work licensed under the terms of the
8 Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
13 import java
.io
.Serializable
;
14 import java
.util
.Locale
;
15 import java
.util
.MissingResourceException
;
16 import java
.util
.ResourceBundle
;
19 * @author Tom Tromey <tromey@cygnus.com>
20 * @date March 19, 1999
22 /* Written using "Java Class Libraries", 2nd edition, plus online
23 * API docs for JDK 1.2 beta from http://www.javasoft.com.
24 * Status: Believed complete and correct to 1.1.
27 public abstract class BreakIterator
implements Cloneable
, Serializable
29 // The value was discovered by writing a test program.
30 public static final int DONE
= -1;
32 protected BreakIterator ()
36 public abstract int current ();
37 public abstract int first ();
38 public abstract int following (int pos
);
40 public static synchronized Locale
[] getAvailableLocales ()
46 private static BreakIterator
getInstance (String type
, Locale loc
)
52 = ResourceBundle
.getBundle("gnu.gcj.text.LocaleData", loc
);
53 className
= res
.getString(type
);
55 catch (MissingResourceException x
)
61 Class k
= Class
.forName(className
);
62 return (BreakIterator
) k
.newInstance();
64 catch (ClassNotFoundException x1
)
68 catch (InstantiationException x2
)
72 catch (IllegalAccessException x3
)
78 public static BreakIterator
getCharacterInstance ()
80 return getCharacterInstance (Locale
.getDefault());
83 public static BreakIterator
getCharacterInstance (Locale loc
)
85 BreakIterator r
= getInstance ("CharacterIterator", loc
);
87 r
= new gnu
.gcj
.text
.CharacterBreakIterator ();
91 public static BreakIterator
getLineInstance ()
93 return getLineInstance (Locale
.getDefault());
96 public static BreakIterator
getLineInstance (Locale loc
)
98 BreakIterator r
= getInstance ("LineIterator", loc
);
100 r
= new gnu
.gcj
.text
.LineBreakIterator ();
104 public static BreakIterator
getSentenceInstance ()
106 return getSentenceInstance (Locale
.getDefault());
109 public static BreakIterator
getSentenceInstance (Locale loc
)
111 BreakIterator r
= getInstance ("SentenceIterator", loc
);
113 r
= new gnu
.gcj
.text
.SentenceBreakIterator ();
117 public abstract CharacterIterator
getText ();
119 public static BreakIterator
getWordInstance ()
121 return getWordInstance (Locale
.getDefault());
124 public static BreakIterator
getWordInstance (Locale loc
)
126 BreakIterator r
= getInstance ("WordIterator", loc
);
128 r
= new gnu
.gcj
.text
.WordBreakIterator ();
132 public boolean isBoundary (int pos
)
136 return following (pos
- 1) == pos
;
139 public abstract int last ();
140 public abstract int next ();
141 public abstract int next (int n
);
143 public int preceding (int pos
)
145 if (following (pos
) == DONE
)
147 while (previous () >= pos
)
152 public abstract int previous ();
154 public void setText (String newText
)
156 setText (new StringCharacterIterator (newText
));
159 public abstract void setText (CharacterIterator newText
);