1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
// BreakIterator.java - Iterate over logical breaks in text.
/* Copyright (C) 1999 Cygnus Solutions
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.text;
import java.io.Serializable;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
/**
* @author Tom Tromey <tromey@cygnus.com>
* @date March 19, 1999
*/
/* Written using "Java Class Libraries", 2nd edition, plus online
* API docs for JDK 1.2 beta from http://www.javasoft.com.
* Status: Believed complete and correct to 1.1.
*/
public abstract class BreakIterator implements Cloneable, Serializable
{
// The value was discovered by writing a test program.
public static final int DONE = -1;
protected BreakIterator ()
{
}
public abstract int current ();
public abstract int first ();
public abstract int following (int pos);
public static synchronized Locale[] getAvailableLocales ()
{
// FIXME.
return null;
}
private static BreakIterator getInstance (String type, Locale loc)
{
String className;
try
{
ResourceBundle res
= ResourceBundle.getBundle("gnu.gcj.text.LocaleData", loc);
className = res.getString(type);
}
catch (MissingResourceException x)
{
return null;
}
try
{
Class k = Class.forName(className);
return (BreakIterator) k.newInstance();
}
catch (ClassNotFoundException x1)
{
return null;
}
catch (InstantiationException x2)
{
return null;
}
catch (IllegalAccessException x3)
{
return null;
}
}
public static BreakIterator getCharacterInstance ()
{
return getCharacterInstance (Locale.getDefault());
}
public static BreakIterator getCharacterInstance (Locale loc)
{
BreakIterator r = getInstance ("CharacterIterator", loc);
if (r == null)
r = new gnu.gcj.text.CharacterBreakIterator ();
return r;
}
public static BreakIterator getLineInstance ()
{
return getLineInstance (Locale.getDefault());
}
public static BreakIterator getLineInstance (Locale loc)
{
BreakIterator r = getInstance ("LineIterator", loc);
if (r == null)
r = new gnu.gcj.text.LineBreakIterator ();
return r;
}
public static BreakIterator getSentenceInstance ()
{
return getSentenceInstance (Locale.getDefault());
}
public static BreakIterator getSentenceInstance (Locale loc)
{
BreakIterator r = getInstance ("SentenceIterator", loc);
if (r == null)
r = new gnu.gcj.text.SentenceBreakIterator ();
return r;
}
public abstract CharacterIterator getText ();
public static BreakIterator getWordInstance ()
{
return getWordInstance (Locale.getDefault());
}
public static BreakIterator getWordInstance (Locale loc)
{
BreakIterator r = getInstance ("WordIterator", loc);
if (r == null)
r = new gnu.gcj.text.WordBreakIterator ();
return r;
}
public boolean isBoundary (int pos)
{
if (pos == 0)
return true;
return following (pos - 1) == pos;
}
public abstract int last ();
public abstract int next ();
public abstract int next (int n);
public int preceding (int pos)
{
if (following (pos) == DONE)
last ();
while (previous () >= pos)
;
return current ();
}
public abstract int previous ();
public void setText (String newText)
{
setText (new StringCharacterIterator (newText));
}
public abstract void setText (CharacterIterator newText);
}
|