//---------------------------------------------------------------------------- // COMPONENT NAME: LPEX Editor // // © Copyright IBM Corporation 2008 // All Rights Reserved. // // DESCRIPTION: // ComposeHebrewAction - sample user-defined action (composeHebrew) //---------------------------------------------------------------------------- package com.ibm.lpex.samples; import com.ibm.lpex.core.LpexAction; import com.ibm.lpex.core.LpexCommand; import com.ibm.lpex.core.LpexStringTokenizer; import com.ibm.lpex.core.LpexView; /** * Sample action <b>composeHebrew</b> - enter Hebrew characters. * Use this action to enter Hebrew characters into a document using * a non-Hebrew keyboard. For example, enter alef by typing a. * The mapping table used is a quirky, very rough transliteration. * * <p>Here is the ComposeHebrewAction * <a href="doc-files/ComposeHebrewAction.java.html">source code</a>.</p> * * <p>To run this sample: * <ul> * <li>Define this user action via an editor preference page, where available, * or from the editor command line: * <pre>set actionClass.composeHebrew com.ibm.lpex.samples.ComposeHebrewAction</pre></li> * <li>Run it from the editor command line: * <pre>action composeHebrew</pre> * or associate it with a key (here, <b>Alt+F1</b> in the text and command area): * <pre>set keyAction.a-f1.t.c composeHebrew</pre></li> * </ul></p> * See the <a href="doc-files/ComposeHebrewAction.java.html#line47">source code</a> * for the character mapping. To see these characters in the document, you may need * a Hebrew-locale or Unicode font installed on your system. The document must be * saved to an encoding which supports Hebrew characters. * * @see com.ibm.lpex.samples All the samples */ public class ComposeHebrewAction extends ComposeAction { private static final String[] _composeHebrew = /*-----------------------------------------------------------*/ /* Hebrew characters supported and their compose sequences */ /*-----------------------------------------------------------*/ // Hebrew letter Latin // ============= ===== {"\u05D0", "a", // alef a "\u05E2", "A", // ayin A "\u05D1", "b", // bet b "\u05D1", "B", // bet B "\u05DB", "c", // kaf c "\u05DA", "C", // final kaf C "\u05D3", "d", // dalet d "\u05D3", "D", // dalet D "\u05D0", "e", // alef e "\u05D0", "E", // alef E "\u05E4", "f", // pe f "\u05E3", "F", // final pe F "\u05D2", "g", // gimel g "\u05D2", "G", // gimel G "\u05D4", "h", // he h "\u05D7", "H", // het H "\u05D9", "i", // yod i "\u05D9", "I", // yod I "\u05D9", "j", // yod j "\u05D9", "J", // yod J "\u05DB", "k", // kaf k "\u05DA", "K", // final kaf K "\u05DC", "l", // lamed l "\u05DC", "L", // lamed L "\u05DE", "m", // mem m "\u05DD", "M", // final mem M "\u05E0", "n", // nun n "\u05DF", "N", // final nun N "\u05D5", "o", // vav o "\u05D5", "O", // vav O "\u05E4", "p", // pe p "\u05E3", "P", // final pe P "\u05E7", "q", // qof q "\u05E7", "Q", // qof Q "\u05E8", "r", // resh r "\u05E8", "R", // resh R "\u05E1", "s", // samekh s "\u05E1", "S", // samekh S "\u05EA", "t", // tav t "\u05D8", "T", // tet T "\u05D5", "u", // vav u "\u05D5", "U", // vav U "\u05D5", "v", // vav v "\u05D5", "V", // vav V "\u05E9", "w", // shin w "\u05E9", "W", // shin W "\u05D7", "x", // het x "\u05D7", "X", // het X "\u05E6", "y", // tsadi y "\u05E5", "Y", // final tsadi Y "\u05D6", "z", // zayin z "\u05D6", "Z", // zayin Z // Hebrew point compose sequence "\\","\\\\", // ============ ================ "\u05B7", "\\a", // patah BACKSLASH (\) + a "\u05B7", "\\-", // patah BACKSLASH (\) + MINUS (-) "\u05B8", "\\A", // qamats [gadol] BACKSLASH (\) + A "\u05B8", "\\t", // qamats [gadol] BACKSLASH (\) + t "\u05B8", "\\T", // qamats [gadol] BACKSLASH (\) + T "\u05BC", "\\d", // dagesh (shuruq) BACKSLASH (\) + d "\u05BC", "\\D", // dagesh (shuruq) BACKSLASH (\) + D "\u05B5", "\\e", // tsere BACKSLASH (\) + e "\u05B6", "\\E", // segol BACKSLASH (\) + E "\u05B4", "\\i", // hiriq BACKSLASH (\) + i "\u05B4", "\\I", // hiriq BACKSLASH (\) + I "\u05B4", "\\.", // hiriq BACKSLASH (\) + PERIOD (.) "\u05B9", "\\o", // holam BACKSLASH (\) + o "\u05BA", "\\O", // holam haser for vav BACKSLASH (\) + O "\u05BB", "\\u", // qubuts BACKSLASH (\) + u "\u05BB", "\\U", // qubuts BACKSLASH (\) + U "\u05C1", "\\w", // shin dot BACKSLASH (\) + w "\u05C2", "\\W", // sin dot BACKSLASH (\) + W "\u05B0", "\\:", // shva BACKSLASH (\) + COLON (:) "\u05B0", "\\;" // shva BACKSLASH (\) + SEMICOLON (;) }; // NOTES: points usually modify the preceding letter; the escaped backslash allows // to enter normal backslashes in the sequence text (it's found before all others). /** * Command to map regular Latin characters to Hebrew characters. Called by the * <b>input</b> editor command when prompting for the sequence to 'transliterate'. */ public static LpexCommand composeHebrewCommand = new LpexCommand() { public boolean doCommand(LpexView lpexView, String parameters) { return doComposeCommand(lpexView, parameters, _composeHebrew, "composeHebrew", true); } }; /** * Runs the action. * Prompts the user for a sequence to 'transliterate', then enters the (mapped * Hebrew) character(s) into the document. Uses the <b>input</b> default editor * command, and the <b>composeHebrew</b> command defined in here. */ public void doAction(LpexView lpexView) { // ensure command to handle composition is defined in the view this action runs if (lpexView.command("composeHebrew") != composeHebrewCommand) { lpexView.defineCommand("composeHebrew", composeHebrewCommand); } // prompt user for the text, insert 'transliterated' result promptForCompose(lpexView, "composeHebrew"); } }