Updated comments so that Javadoc 1.4 warnings went away.
This commit is contained in:
parent
3ad36a3f8e
commit
10d86fc3b7
3 changed files with 2562 additions and 2500 deletions
|
@ -25,9 +25,13 @@ import java.awt.font.*;
|
|||
import java.awt.event.*;
|
||||
import javax.swing.*;
|
||||
import javax.swing.text.*;
|
||||
|
||||
import java.lang.*;
|
||||
import org.thdl.tib.text.*;
|
||||
|
||||
import java.io.*;
|
||||
import javax.swing.text.rtf.*;
|
||||
|
||||
/**
|
||||
* Enables input of Tibetan text
|
||||
* using Tibetan Computer Company's free cross-platform TibetanMachineWeb fonts.
|
||||
|
@ -184,7 +188,7 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
* current entry/edit/deletion position.
|
||||
*/
|
||||
private Caret caret;
|
||||
private StyledEditorKit editorKit;
|
||||
// private StyledEditorKit editorKit;
|
||||
private StyleContext styleContext;
|
||||
private Style rootStyle;
|
||||
private boolean skipUpdate = false;
|
||||
|
@ -194,57 +198,75 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
private int romanFontSize;
|
||||
private MutableAttributeSet romanAttributeSet;
|
||||
|
||||
public Clipboard rtfBoard;
|
||||
public DataFlavor rtfFlavor;
|
||||
public RTFEditorKit rtfEd = null;
|
||||
|
||||
public DuffPane() {
|
||||
this(new StyledEditorKit());
|
||||
setupKeyboard();
|
||||
setupEditor();
|
||||
// this(new StyledEditorKit());
|
||||
}
|
||||
|
||||
public DuffPane(TibetanKeyboard keyboard) {
|
||||
this(new StyledEditorKit(), keyboard);
|
||||
TibetanMachineWeb.setKeyboard(keyboard);
|
||||
setupKeyboard();
|
||||
setupEditor();
|
||||
// this(new StyledEditorKit(), keyboard);
|
||||
}
|
||||
|
||||
public DuffPane(java.net.URL keyboardURL) {
|
||||
this(new StyledEditorKit(), keyboardURL);
|
||||
}
|
||||
|
||||
public DuffPane(StyledEditorKit styledEditorKit) {
|
||||
setupKeyboard();
|
||||
setupEditor(styledEditorKit);
|
||||
}
|
||||
|
||||
public DuffPane(StyledEditorKit styledEditorKit, TibetanKeyboard keyboard) {
|
||||
TibetanMachineWeb.setKeyboard(keyboard);
|
||||
setupKeyboard();
|
||||
setupEditor(styledEditorKit);
|
||||
}
|
||||
|
||||
public DuffPane(StyledEditorKit styledEditorKit, java.net.URL keyboardURL) {
|
||||
TibetanMachineWeb.setKeyboard(keyboardURL);
|
||||
setupKeyboard();
|
||||
setupEditor();
|
||||
// this(new StyledEditorKit(), keyboardURL);
|
||||
}
|
||||
|
||||
/*
|
||||
public DuffPane() {
|
||||
setupKeyboard();
|
||||
setupEditor(styledEditorKit);
|
||||
}
|
||||
|
||||
public DuffPane(TibetanKeyboard keyboard) {
|
||||
TibetanMachineWeb.setKeyboard(keyboard);
|
||||
setupKeyboard();
|
||||
setupEditor();
|
||||
}
|
||||
|
||||
public DuffPane(java.net.URL keyboardURL) {
|
||||
TibetanMachineWeb.setKeyboard(keyboardURL);
|
||||
setupKeyboard();
|
||||
setupEditor();
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* This method sets up the editor, assigns fonts and point sizes,
|
||||
* sets the document, the caret, and adds key and focus listeners.
|
||||
*
|
||||
* @param sek the StyledEditorKit for the editing window
|
||||
*/
|
||||
private void setupEditor(StyledEditorKit sek) {
|
||||
public void setupEditor() {
|
||||
rtfBoard = getToolkit().getSystemClipboard();
|
||||
rtfFlavor = new DataFlavor("text/rtf", "Rich Text Format");
|
||||
rtfEd = new RTFEditorKit();
|
||||
setEditorKit(rtfEd);
|
||||
styleContext = new StyleContext();
|
||||
|
||||
doc = new TibetanDocument(styleContext);
|
||||
doc.setTibetanFontSize(36);
|
||||
setDocument(doc);
|
||||
|
||||
Style defaultStyle = styleContext.getStyle(StyleContext.DEFAULT_STYLE);
|
||||
StyleConstants.setFontFamily(defaultStyle, "TibetanMachineWeb");
|
||||
StyleConstants.setFontSize(defaultStyle, 36);
|
||||
|
||||
romanFontFamily = "Serif";
|
||||
romanFontSize = 14;
|
||||
setRomanAttributeSet(romanFontFamily, romanFontSize);
|
||||
|
||||
editorKit = sek;
|
||||
setEditorKit(editorKit);
|
||||
styleContext = new StyleContext();
|
||||
|
||||
Style defaultStyle = styleContext.getStyle(StyleContext.DEFAULT_STYLE);
|
||||
rootStyle = styleContext.addStyle("RootStyle", defaultStyle);
|
||||
StyleConstants.setFontFamily(rootStyle, "TibetanMachineWeb");
|
||||
StyleConstants.setFontSize(rootStyle, 36);
|
||||
setLogicalStyle(rootStyle);
|
||||
|
||||
newDocument();
|
||||
// newDocument();
|
||||
caret = getCaret();
|
||||
|
||||
addKeyListener(this);
|
||||
|
@ -258,7 +280,7 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
* respect to stacking, and concerning the differences between
|
||||
* Tibetan and Sanskrit; and then it initializes the input method.
|
||||
*/
|
||||
private void setupKeyboard() {
|
||||
public void setupKeyboard() {
|
||||
if (TibetanMachineWeb.hasTibetanStackingKey()) {
|
||||
if (TibetanMachineWeb.hasSanskritStackingKey()) {
|
||||
isDefinitelyTibetan_default = false;
|
||||
|
@ -308,12 +330,11 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
}
|
||||
|
||||
/**
|
||||
* Registers a keyboard, and sets it as
|
||||
* the active keyboard. * Unpredictable behavior will result
|
||||
* if you set the keyboard in {@link org.thdl.tib.text.TibetanMachineWeb TibetanMachineWeb}
|
||||
* but don't register it in here.
|
||||
* @param keyboardURL the URL of the keyboard you want to install
|
||||
*/
|
||||
* Registers a keyboard, and sets it as the active keyboard.
|
||||
* Unpredictable behavior will result if you set the keyboard in {@link
|
||||
* org.thdl.tib.text.TibetanMachineWeb TibetanMachineWeb} but don't
|
||||
* register it in here.
|
||||
* @param keyboardURL the URL of the keyboard you want to install */
|
||||
public void registerKeyboard(java.net.URL keyboardURL) {
|
||||
TibetanMachineWeb.setKeyboard(keyboardURL);
|
||||
setupKeyboard();
|
||||
|
@ -336,10 +357,15 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
* Clears the current document.
|
||||
*/
|
||||
public void newDocument() {
|
||||
styleContext = new StyleContext();
|
||||
|
||||
doc = new TibetanDocument(styleContext);
|
||||
doc.setTibetanFontSize(36);
|
||||
setDocument(doc);
|
||||
setLogicalStyle(rootStyle);
|
||||
|
||||
Style defaultStyle = styleContext.getStyle(StyleContext.DEFAULT_STYLE);
|
||||
StyleConstants.setFontFamily(defaultStyle, "TibetanMachineWeb");
|
||||
StyleConstants.setFontSize(defaultStyle, 36);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -636,7 +662,7 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
|
||||
/**
|
||||
* Prints ACHEN together with the vowel v. When using the Wylie
|
||||
* keyboard, or any other keyboard in which {@link thdl.tibetan.text.TibetanMachineWeb#isAChenRequiredBeforeVowel() isAChenRequiredBeforeVowel()}
|
||||
* keyboard, or any other keyboard in which {@link org.thdl.tib.text.TibetanMachineWeb#isAChenRequiredBeforeVowel() isAChenRequiredBeforeVowel()}
|
||||
* is false, this method is called frequently.
|
||||
*
|
||||
* @param v the vowel (in Wylie) which you want to print with ACHEN
|
||||
|
@ -718,6 +744,57 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
initKeyboard();
|
||||
}
|
||||
|
||||
class RTFSelection implements ClipboardOwner, Transferable {
|
||||
DataFlavor[] supportedFlavor;
|
||||
ByteArrayOutputStream rtfOut;
|
||||
String plainText;
|
||||
|
||||
RTFSelection(StyledDocument doc, int offset, int length) {
|
||||
supportedFlavor = new DataFlavor[2];
|
||||
supportedFlavor[0] = rtfFlavor;
|
||||
supportedFlavor[1] = DataFlavor.stringFlavor;
|
||||
try {
|
||||
//construct new document that contains only portion of text you want to copy
|
||||
//this workaround is due to bug 4129911, which will not be fixed (see below after source code)
|
||||
StyledDocument newDoc = new DefaultStyledDocument();
|
||||
for (int i=offset; i<offset+length; i++) {
|
||||
try {
|
||||
String s = doc.getText(i,1);
|
||||
AttributeSet as = doc.getCharacterElement(i).getAttributes();
|
||||
newDoc.insertString(i-offset, s, as);
|
||||
} catch (BadLocationException ble) {
|
||||
ble.printStackTrace();
|
||||
}
|
||||
}
|
||||
rtfOut = new ByteArrayOutputStream();
|
||||
rtfEd.write(rtfOut, newDoc, 0, newDoc.getLength()); //last two parameters ignored, see bug below
|
||||
plainText = getText(offset, length);
|
||||
} catch (BadLocationException ble) {
|
||||
ble.printStackTrace();
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
}
|
||||
}
|
||||
public void lostOwnership(Clipboard clipboard, Transferable contents) {
|
||||
}
|
||||
public Object getTransferData(DataFlavor flavor) {
|
||||
if (flavor.equals(rtfFlavor))
|
||||
return new ByteArrayInputStream(rtfOut.toByteArray());
|
||||
if (flavor.equals(DataFlavor.stringFlavor))
|
||||
return plainText;
|
||||
return null;
|
||||
}
|
||||
public DataFlavor[] getTransferDataFlavors() {
|
||||
return supportedFlavor;
|
||||
}
|
||||
public boolean isDataFlavorSupported(DataFlavor flavor) {
|
||||
for (int i=0; i<supportedFlavor.length; i++)
|
||||
if (flavor.equals(supportedFlavor[i]))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cuts or copies the specified portion of this object's document
|
||||
* to the system clipboard. What is cut/copied is Wylie text -
|
||||
|
@ -731,56 +808,22 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
* false if it is 'copy'
|
||||
*/
|
||||
public void copy(int start, int end, boolean remove) {
|
||||
if (start < end) {
|
||||
java.util.List dcs = new ArrayList();
|
||||
|
||||
int p1 = start;
|
||||
int p2 = end;
|
||||
if (p1 != p2) {
|
||||
RTFSelection rtfSelection = new RTFSelection((StyledDocument)getDocument(), p1, p2-p1);
|
||||
try {
|
||||
AttributeSet attr;
|
||||
String fontName;
|
||||
int fontNum;
|
||||
DuffCode dc;
|
||||
char ch;
|
||||
|
||||
int i = start;
|
||||
|
||||
while (i < end+1) {
|
||||
attr = doc.getCharacterElement(i).getAttributes();
|
||||
fontName = StyleConstants.getFontFamily(attr);
|
||||
|
||||
if ((0 == (fontNum = TibetanMachineWeb.getTMWFontNumber(fontName))) || i==end) {
|
||||
if (i != start) {
|
||||
DuffCode[] dc_array = new DuffCode[0];
|
||||
dc_array = (DuffCode[])dcs.toArray(dc_array);
|
||||
StringSelection data = new StringSelection(TibetanDocument.getWylie(dc_array));
|
||||
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
|
||||
clipboard.setContents(data, data);
|
||||
if (remove) {
|
||||
doc.remove(start, i-start);
|
||||
setSelectionEnd(start);
|
||||
}
|
||||
else {
|
||||
setSelectionStart(start);
|
||||
setSelectionEnd(i);
|
||||
}
|
||||
return;
|
||||
}
|
||||
else {
|
||||
setSelectionEnd(start);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
ch = doc.getText(i,1).charAt(0);
|
||||
dc = new DuffCode(fontNum, ch);
|
||||
dcs.add(dc);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
catch (BadLocationException ble) {
|
||||
ble.printStackTrace();
|
||||
rtfBoard.setContents(rtfSelection, rtfSelection);
|
||||
} catch (IllegalStateException ise) {
|
||||
ise.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (remove)
|
||||
try {
|
||||
getDocument().remove(p1, p2-p1);
|
||||
} catch (BadLocationException ble) {
|
||||
ble.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -793,21 +836,39 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
* appear.
|
||||
* @param offset the position in the document you want to paste to
|
||||
*/
|
||||
public void paste(int offset) {
|
||||
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
|
||||
Transferable data = clipboard.getContents(this);
|
||||
public void paste(int offset) {
|
||||
try {
|
||||
Transferable contents = rtfBoard.getContents(this);
|
||||
if (contents.isDataFlavorSupported(rtfFlavor)) {
|
||||
InputStream in = (InputStream)contents.getTransferData(rtfFlavor);
|
||||
int p1 = offset;
|
||||
|
||||
String s = null;
|
||||
try {
|
||||
s = (String)(data.getTransferData(DataFlavor.stringFlavor));
|
||||
//construct new document that contains only portion of text you want to paste
|
||||
StyledDocument sd = new DefaultStyledDocument();
|
||||
rtfEd.read(in, sd, 0);
|
||||
for (int i=0; i<sd.getLength()-1; i++) { //getLength()-1 so that final newline is not included in paste
|
||||
try {
|
||||
String s = sd.getText(i,1);
|
||||
AttributeSet as = sd.getCharacterElement(i).getAttributes();
|
||||
doc.insertString(p1+i, s, as);
|
||||
} catch (BadLocationException ble) {
|
||||
ble.printStackTrace();
|
||||
}
|
||||
}
|
||||
} else if (contents.isDataFlavorSupported(DataFlavor.stringFlavor)) {
|
||||
String s = (String)contents.getTransferData(DataFlavor.stringFlavor);
|
||||
replaceSelection(s);
|
||||
}
|
||||
catch (Exception e) {
|
||||
s = data.toString();
|
||||
}
|
||||
|
||||
if (s != null)
|
||||
toTibetanMachineWeb(s, offset);
|
||||
} catch (UnsupportedFlavorException ufe) {
|
||||
ufe.printStackTrace();
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
} catch (IllegalStateException ise) {
|
||||
ise.printStackTrace();
|
||||
} catch (BadLocationException ble) {
|
||||
ble.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables cutting and pasting of Tibetan text.
|
||||
|
@ -1298,8 +1359,21 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
*/
|
||||
public void toTibetanMachineWeb(String wylie, int offset) {
|
||||
try {
|
||||
TibetanDocument.DuffData[] dd = TibetanDocument.getTibetanMachineWeb(wylie);
|
||||
doc.insertDuff(offset, dd);
|
||||
StringTokenizer sTok = new StringTokenizer(wylie, "\n\t", true);
|
||||
while (sTok.hasMoreTokens()) {
|
||||
String next = sTok.nextToken();
|
||||
if (next.equals("\n") || next.equals("\t")) {
|
||||
try {
|
||||
doc.insertString(offset, next, null);
|
||||
offset++;
|
||||
} catch (BadLocationException ble) {
|
||||
ble.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
TibetanDocument.DuffData[] dd = TibetanDocument.getTibetanMachineWeb(next);
|
||||
offset = doc.insertDuff(offset, dd);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (InvalidWylieException iwe) {
|
||||
JOptionPane.showMessageDialog(this,
|
||||
|
@ -1307,7 +1381,6 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
"beginning from:\n " + iwe.getCulpritInContext() + "\n" +
|
||||
"The culprit is probably the character '"+iwe.getCulprit()+"'.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1373,4 +1446,5 @@ public class DuffPane extends JTextPane implements KeyListener, FocusListener {
|
|||
ble.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -31,8 +31,9 @@ import java.io.Serializable;
|
|||
/** Used by DictionaryTable to display a Tibetan word or phrase
|
||||
(in either Roman or Tibetan script) in a single cell.
|
||||
|
||||
This THDL version does not include DictionaryTable.
|
||||
|
||||
@author Andrés Montano Pellegrini
|
||||
@see DictionaryTable
|
||||
*/
|
||||
public class DuffCellRenderer extends DuffPane implements TableCellRenderer, Serializable
|
||||
{
|
||||
|
|
|
@ -503,12 +503,18 @@ public static SimpleAttributeSet getAttributeSet(int font) {
|
|||
* ENTER), false if not
|
||||
*/
|
||||
public static boolean isFormatting(char c) {
|
||||
if (c < 32 || c > 126)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
/*
|
||||
if ( c == KeyEvent.VK_TAB
|
||||
|| c == KeyEvent.VK_ENTER)
|
||||
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -618,16 +624,13 @@ public static boolean isWylieVowel(String s) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Is this Wylie valid as a leftmost character
|
||||
* in a Tibetan syllable? For example, in the
|
||||
* syllable 'brgyad', 'b' is the leftmost
|
||||
* character. Valid leftmost characters include
|
||||
* g, d, b, and m.
|
||||
* Returns true iff this Wylie is valid as a leftmost character in a
|
||||
* Tibetan syllable. For example, in the syllable 'brgyad', 'b' is the
|
||||
* leftmost character. Valid leftmost characters include g, d, b, and
|
||||
* m.
|
||||
* @param s the (Wylie) string to be checked
|
||||
* @return true if s is a possible leftmost
|
||||
* character in a Tibetan syllable, false
|
||||
* if not.
|
||||
*/
|
||||
* @return true if s is a possible leftmost character in a Tibetan
|
||||
* syllable, false if not. */
|
||||
public static boolean isWylieLeft(String s) {
|
||||
if (keyboard != null)
|
||||
s = keyboard.getWylieForChar(s);
|
||||
|
@ -639,16 +642,13 @@ public static boolean isWylieLeft(String s) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Is this Wylie valid as a right (post-vowel)
|
||||
* character in a Tibetan syllable? For example,
|
||||
* in the syllable 'lags', 'g' is in the right
|
||||
* character position. Valid right characters
|
||||
* include g, ng, d, n, b, m, r, l, s, ', and T.
|
||||
* Returns true iff this Wylie is valid as a right (post-vowel)
|
||||
* character in a Tibetan syllable. For example, in the syllable
|
||||
* 'lags', 'g' is in the right character position. Valid right
|
||||
* characters include g, ng, d, n, b, m, r, l, s, ', and T.
|
||||
* @param s the (Wylie) string to be checked
|
||||
* @return true if s is a possible right
|
||||
* character in a Tibetan syllable, false
|
||||
* if not.
|
||||
*/
|
||||
* @return true if s is a possible right character in a Tibetan
|
||||
* syllable, false if not. */
|
||||
public static boolean isWylieRight(String s) {
|
||||
if (keyboard != null)
|
||||
s = keyboard.getWylieForChar(s);
|
||||
|
@ -660,13 +660,11 @@ public static boolean isWylieRight(String s) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Is this Wylie valid as a leftmost character
|
||||
* in a Tibetan syllable?
|
||||
* Returns true iff this Wylie is valid as a leftmost character in a
|
||||
* Tibetan syllable.
|
||||
* @param s the string to be checked
|
||||
* @return true if s is a possible leftmost
|
||||
* character in a Tibetan syllable, false
|
||||
* if not.
|
||||
*/
|
||||
* @return true if s is a possible leftmost character in a Tibetan
|
||||
* syllable, false if not. */
|
||||
public static boolean isWylieFarRight(String s) {
|
||||
if (keyboard != null)
|
||||
s = keyboard.getWylieForChar(s);
|
||||
|
@ -1002,11 +1000,10 @@ public static Map getBinduMap() {
|
|||
}
|
||||
|
||||
/**
|
||||
* Does the keyboard have a disambiguating key?
|
||||
* @return true if the installed keyboard has a
|
||||
* disambiguating key, false if not
|
||||
* @see TibetanKeyboard
|
||||
*/
|
||||
* Returns true iff the keyboard has a disambiguating key.
|
||||
* @return true if the installed keyboard has a disambiguating key,
|
||||
* false if not
|
||||
* @see TibetanKeyboard */
|
||||
public static boolean hasDisambiguatingKey() {
|
||||
return hasDisambiguatingKey;
|
||||
}
|
||||
|
@ -1022,31 +1019,28 @@ public static char getDisambiguatingKey() {
|
|||
}
|
||||
|
||||
/**
|
||||
* Does the keyboard have a Sanksrit stacking key?
|
||||
* @return true if a stacking key is required
|
||||
* to type Sanskrit stacks, false if not
|
||||
* @see TibetanKeyboard
|
||||
*/
|
||||
* Returns true iff the keyboard has a Sanksrit stacking key.
|
||||
* @return true if a stacking key is required to type Sanskrit stacks,
|
||||
* false if not
|
||||
* @see TibetanKeyboard */
|
||||
public static boolean hasSanskritStackingKey() {
|
||||
return hasSanskritStackingKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* Does the keyboard have a Tibetan stacking key?
|
||||
* @return true if a stacking key is required to
|
||||
* type Tibetan stacks, false if not
|
||||
* @see TibetanKeyboard
|
||||
*/
|
||||
* Returns true iff the keyboard has a Tibetan stacking key.
|
||||
* @return true if a stacking key is required to type Tibetan stacks,
|
||||
* false if not
|
||||
* @see TibetanKeyboard */
|
||||
public static boolean hasTibetanStackingKey() {
|
||||
return hasTibetanStackingKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is stacking medial?
|
||||
* @return true if the stacking key is medial,
|
||||
* false if not, or if there is no stacking key
|
||||
* @see TibetanKeyboard
|
||||
*/
|
||||
* Returns true iff stacking is medial.
|
||||
* @return true if the stacking key is medial, false if not, or if
|
||||
* there is no stacking key
|
||||
* @see TibetanKeyboard */
|
||||
public static boolean isStackingMedial() {
|
||||
return isStackingMedial;
|
||||
}
|
||||
|
@ -1062,34 +1056,30 @@ public static char getStackingKey() {
|
|||
}
|
||||
|
||||
/**
|
||||
* Is achen required before vowels?
|
||||
* @return true if you have to type achen first
|
||||
* before you can get a vowel with achen, false
|
||||
* if you can just type the vowel by itself
|
||||
* (as in Wylie)
|
||||
* @see TibetanKeyboard
|
||||
*/
|
||||
* Returns true iff achen is required before vowels.
|
||||
* @return true if you have to type achen first before you can get a
|
||||
* vowel with achen, false if you can just type the vowel by itself (as
|
||||
* in Wylie)
|
||||
* @see TibetanKeyboard */
|
||||
public static boolean isAChenRequiredBeforeVowel() {
|
||||
return isAChenRequiredBeforeVowel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is achung treated as a consonant?
|
||||
* @return true if a-chung is considered a consonant
|
||||
* for the purposes of stacking, false if not
|
||||
* (as in Wylie)
|
||||
* @see TibetanKeyboard
|
||||
*/
|
||||
* Returns true iff achung is treated as a consonant.
|
||||
* @return true if a-chung is considered a consonant for the purposes
|
||||
* of stacking, false if not (as in Wylie)
|
||||
* @see TibetanKeyboard */
|
||||
public static boolean isAChungConsonant() {
|
||||
return isAChungConsonant;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is there a key for the invisible 'a' vowel in this keyboard?
|
||||
* @return true if the installed keyboard has a
|
||||
* dummy a vowel, false if not
|
||||
* @see TibetanKeyboard
|
||||
*/
|
||||
* Returns true iff there is a key for the invisible 'a' vowel in this
|
||||
* keyboard.
|
||||
* @return true if the installed keyboard has a dummy a vowel, false if
|
||||
* not
|
||||
* @see TibetanKeyboard */
|
||||
public static boolean hasAVowel() {
|
||||
return hasAVowel;
|
||||
}
|
||||
|
@ -1105,13 +1095,10 @@ public static String getAVowel() {
|
|||
}
|
||||
|
||||
/**
|
||||
* Is this glyph a top (superscript) vowel?
|
||||
* @param a DuffCode representing a TibetanMachineWeb
|
||||
* glyph
|
||||
* @return true if the glyph is a top-hanging
|
||||
* (superscript) vowel (i, u, e, o, ai, or ao)
|
||||
* and false if not
|
||||
*/
|
||||
* Returns true iff this glyph is a top (superscript) vowel.
|
||||
* @param a DuffCode representing a TibetanMachineWeb glyph
|
||||
* @return true if the glyph is a top-hanging (superscript) vowel (i,
|
||||
* u, e, o, ai, or ao) and false if not */
|
||||
public static boolean isTopVowel(DuffCode dc) {
|
||||
String wylie = getWylieForGlyph(dc);
|
||||
if (top_vowels.contains(wylie))
|
||||
|
|
Loading…
Reference in a new issue