From b6b8cd73ff90de642018b9d90c1a3c680f6b737a Mon Sep 17 00:00:00 2001 From: dchandler Date: Sat, 26 Oct 2002 17:40:51 +0000 Subject: [PATCH] Moved JskadKeyboard-related code into separate files; made many things public. --- source/org/thdl/tib/input/Jskad.java | 170 ------------------ source/org/thdl/tib/input/JskadKeyboard.java | 117 ++++++++++++ .../thdl/tib/input/JskadKeyboardFactory.java | 48 +++++ .../thdl/tib/input/JskadKeyboardManager.java | 84 +++++++++ 4 files changed, 249 insertions(+), 170 deletions(-) create mode 100644 source/org/thdl/tib/input/JskadKeyboard.java create mode 100644 source/org/thdl/tib/input/JskadKeyboardFactory.java create mode 100644 source/org/thdl/tib/input/JskadKeyboardManager.java diff --git a/source/org/thdl/tib/input/Jskad.java b/source/org/thdl/tib/input/Jskad.java index f42d6d6..04e881c 100644 --- a/source/org/thdl/tib/input/Jskad.java +++ b/source/org/thdl/tib/input/Jskad.java @@ -958,173 +958,3 @@ public class Jskad extends JPanel implements DocumentListener { } } } - -/** A JskadKeyboard is the high-level view of a Tibetan-input keyboard - that Jskad has. Each keyboard is associated with a .ini file - (except for the built-in, extended Wylie keyboard), an RTF - document for end users, and a short identifying string. */ -class JskadKeyboard { - /** Cached RTFPane displaying the contents of the .rtf "quick - reference" file associated with this keyboard. */ - private RTFPane keybdRTFPane = null; - - /* the .rtf file named here better be included in the jar in the - same directory as 'Jskad.class': */ - /** an optional RTF document */ - private String keybdQuickRefFile; - - /** a short identifying string */ - private String keybdId; - - /** the name of the .ini file for this keyboard */ - private String keybdIniFile; - - /** the associated .ini file, which is read in only when needed - and only once */ - private URL tibKeybdURL = null; - - /** Creates a new JskadKeyboard. - * @param identifyingString a short string used in the GUI to - * identify this keyboard - * @param dotIniResourceName the name of the .ini file used to - * initialize this keyboard, or null for the built-in extended - * Wylie keyboard - * @param RTFResourceName the optional name of the .rtf file that - * gives users a quick reference to this keyboard (null if no - * such file is available) */ - public JskadKeyboard(String identifyingString, - String dotIniResourceName, - String RTFResourceName) { - keybdId = identifyingString; - keybdIniFile = dotIniResourceName; - keybdQuickRefFile = RTFResourceName; - } - - /** Returns an RTFPane displaying the contents of the "Quick - * Reference" .rtf file associated with this keyboard, or null if - * no such file is associated with this keyboard. */ - public RTFPane getQuickRefPane() { - if (!hasQuickRefFile()) - return null; - if (keybdRTFPane == null) { - try { - keybdRTFPane = new RTFPane(Jskad.class, keybdQuickRefFile); - } catch (Exception e) { - e.printStackTrace(System.err); - throw new ThdlLazyException(e); /* FIXME--handle this better. */ - } - } - return keybdRTFPane; - } - - /** Returns true iff there is a "Quick Reference" document - associated with this keyboard. */ - public boolean hasQuickRefFile() { - return (keybdQuickRefFile != null); - } - - /** Returns the short identifying string associated with this - * keyboard. */ - public String getIdentifyingString() { - return keybdId; - } - - /** Activates this keyboard for the given DuffPane. - * @param dp the DuffPane for which this keyboard will be made - * the active keyboard */ - public void activate(DuffPane dp) { - if (keybdIniFile != null) { - URL tibKeybdURL - = TibetanMachineWeb.class.getResource(keybdIniFile); - if (null == tibKeybdURL) - throw new Error("Cannot load the keyboard initialization resource " - + keybdIniFile); - dp.registerKeyboard(tibKeybdURL); - } else { - dp.registerKeyboard(); - } - } -} - - /** Determines which Tibetan keyboards Jskad supports. Adding a - new one is as easy as adding 3 lines of text here. */ - -class JskadKeyboardFactory { - static JskadKeyboard[] getAllAvailableJskadKeyboards() { - return new JskadKeyboard[] { - new JskadKeyboard("Extended Wylie Keyboard", - null, - "Wylie_keyboard.rtf"), - new JskadKeyboard("TCC Keyboard #1", - "tcc_keyboard_1.ini", - "TCC_keyboard_1.rtf"), - new JskadKeyboard("TCC Keyboard #2", - "tcc_keyboard_2.ini", - "TCC_keyboard_2.rtf"), - new JskadKeyboard("Sambhota Keymap One", - "sambhota_keyboard_1.ini", - "Sambhota_keymap_one.rtf"), - new JskadKeyboard("Asian Classics Input Project (ACIP) Keyboard", - "acip_keyboard.ini", - null) - }; - } -} - -/** A JskadKeyboardManager maintains a list of JskadKeyboards. */ -class JskadKeyboardManager { - /** A Vector of JskadKeyboards. Users will see the first - * keyboards most prominently. */ - private Vector keybds; - - /** Creates a manager without any keyboards in it, even the - * built-in extended Wylie keyboard. */ - JskadKeyboardManager() { - keybds = new Vector(5); - } - - /** Creates a manager with the specified keyboards in it. The - * keyboard at index 0 will be the most prominent in the user's - * eyes. */ - JskadKeyboardManager(JskadKeyboard keyboards[]) - throws NullPointerException - { - this(); - for (int i = 0; i < keyboards.length; i++) { - addKeyboard(keyboards[i]); - } - } - - /** Adds a JskadKeyboard to this manager. It will be the least - * prominent in the user's eyes of any yet added. */ - void addKeyboard(JskadKeyboard keybd) - throws NullPointerException - { - if (null == keybd) - throw new NullPointerException(); - keybds.add((Object)keybd); - } - - /** Returns the JskadKeyboard at the zero-based index. */ - JskadKeyboard elementAt(int index) - throws ArrayIndexOutOfBoundsException - { - return (JskadKeyboard)keybds.elementAt(index); - } - - /** Returns the number of JskadKeyboards being managed. */ - int size() { - return keybds.size(); - } - - /** Returns an array of the identifying strings associated with - * all managed keyboards. */ - - String[] getIdentifyingStrings() { - String x[] = new String[size()]; - for (int i = 0; i < size(); i++) { - x[i] = elementAt(i).getIdentifyingString(); - } - return x; - } -} diff --git a/source/org/thdl/tib/input/JskadKeyboard.java b/source/org/thdl/tib/input/JskadKeyboard.java new file mode 100644 index 0000000..a9c371d --- /dev/null +++ b/source/org/thdl/tib/input/JskadKeyboard.java @@ -0,0 +1,117 @@ +/* +The contents of this file are subject to the THDL Open Community License +Version 1.0 (the "License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License on the THDL web site +(http://www.thdl.org/). + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +License for the specific terms governing rights and limitations under the +License. + +The Initial Developer of this software is the Tibetan and Himalayan Digital +Library (THDL). Portions created by the THDL are Copyright 2001 THDL. +All Rights Reserved. + +Contributor(s): ______________________________________. +*/ + +package org.thdl.tib.input; + +import java.util.Vector; +import java.net.URL; + +import org.thdl.util.RTFPane; +import org.thdl.util.ThdlLazyException; +import org.thdl.tib.text.TibetanMachineWeb; +import org.thdl.tib.input.DuffPane; + +/** A JskadKeyboard is the high-level view of a Tibetan-input keyboard + that Jskad has. Each keyboard is associated with a .ini file + (except for the built-in, extended Wylie keyboard), an RTF + document for end users, and a short identifying string. + + @author David Chandler + */ +public class JskadKeyboard { + /** Cached RTFPane displaying the contents of the .rtf "quick + reference" file associated with this keyboard. */ + private RTFPane keybdRTFPane = null; + + /* the .rtf file named here better be included in the jar in the + same directory as 'Jskad.class': */ + /** an optional RTF document */ + private String keybdQuickRefFile; + + /** a short identifying string */ + private String keybdId; + + /** the name of the .ini file for this keyboard */ + private String keybdIniFile; + + /** the associated .ini file, which is read in only when needed + and only once */ + private URL tibKeybdURL = null; + + /** Creates a new JskadKeyboard. + * @param identifyingString a short string used in the GUI to + * identify this keyboard + * @param dotIniResourceName the name of the .ini file used to + * initialize this keyboard, or null for the built-in extended + * Wylie keyboard + * @param RTFResourceName the optional name of the .rtf file that + * gives users a quick reference to this keyboard (null if no + * such file is available) */ + public JskadKeyboard(String identifyingString, + String dotIniResourceName, + String RTFResourceName) { + keybdId = identifyingString; + keybdIniFile = dotIniResourceName; + keybdQuickRefFile = RTFResourceName; + } + + /** Returns an RTFPane displaying the contents of the "Quick + * Reference" .rtf file associated with this keyboard, or null if + * no such file is associated with this keyboard. */ + public RTFPane getQuickRefPane() { + if (!hasQuickRefFile()) + return null; + if (keybdRTFPane == null) { + try { + keybdRTFPane = new RTFPane(Jskad.class, keybdQuickRefFile); + } catch (Exception e) { + e.printStackTrace(System.err); + throw new ThdlLazyException(e); /* FIXME--handle this better. */ + } + } + return keybdRTFPane; + } + + /** Returns true iff there is a "Quick Reference" document + associated with this keyboard. */ + public boolean hasQuickRefFile() { + return (keybdQuickRefFile != null); + } + + /** Returns the short identifying string associated with this + * keyboard. */ + public String getIdentifyingString() { + return keybdId; + } + + /** Activates this keyboard for the given DuffPane. + * @param dp the DuffPane for which this keyboard will be made + * the active keyboard */ + public void activate(DuffPane dp) { + if (keybdIniFile != null) { + URL tibKeybdURL + = TibetanMachineWeb.class.getResource(keybdIniFile); + if (null == tibKeybdURL) + throw new Error("Cannot load the keyboard initialization resource " + + keybdIniFile); + dp.registerKeyboard(tibKeybdURL); + } else { + dp.registerKeyboard(); + } + } +} diff --git a/source/org/thdl/tib/input/JskadKeyboardFactory.java b/source/org/thdl/tib/input/JskadKeyboardFactory.java new file mode 100644 index 0000000..a7527d1 --- /dev/null +++ b/source/org/thdl/tib/input/JskadKeyboardFactory.java @@ -0,0 +1,48 @@ +/* +The contents of this file are subject to the THDL Open Community License +Version 1.0 (the "License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License on the THDL web site +(http://www.thdl.org/). + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +License for the specific terms governing rights and limitations under the +License. + +The Initial Developer of this software is the Tibetan and Himalayan Digital +Library (THDL). Portions created by the THDL are Copyright 2001 THDL. +All Rights Reserved. + +Contributor(s): ______________________________________. +*/ + +package org.thdl.tib.input; + +import org.thdl.tib.input.JskadKeyboard; + +/** A JskadKeyboardFactory determines which Tibetan keyboards Jskad + supports. Adding a new one is as easy as adding 3 lines of text + to this class's source code. +*/ +public class JskadKeyboardFactory { + public static JskadKeyboard[] getAllAvailableJskadKeyboards() { + return new JskadKeyboard[] { + new JskadKeyboard("Extended Wylie Keyboard", + null, + "Wylie_keyboard.rtf"), + new JskadKeyboard("TCC Keyboard #1", + "tcc_keyboard_1.ini", + "TCC_keyboard_1.rtf"), + new JskadKeyboard("TCC Keyboard #2", + "tcc_keyboard_2.ini", + "TCC_keyboard_2.rtf"), + new JskadKeyboard("Sambhota Keymap One", + "sambhota_keyboard_1.ini", + "Sambhota_keymap_one.rtf"), + new JskadKeyboard("Asian Classics Input Project (ACIP) Keyboard", + "acip_keyboard.ini", + null) + }; + } +} + diff --git a/source/org/thdl/tib/input/JskadKeyboardManager.java b/source/org/thdl/tib/input/JskadKeyboardManager.java new file mode 100644 index 0000000..d06ff8b --- /dev/null +++ b/source/org/thdl/tib/input/JskadKeyboardManager.java @@ -0,0 +1,84 @@ +/* +The contents of this file are subject to the THDL Open Community License +Version 1.0 (the "License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License on the THDL web site +(http://www.thdl.org/). + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +License for the specific terms governing rights and limitations under the +License. + +The Initial Developer of this software is the Tibetan and Himalayan Digital +Library (THDL). Portions created by the THDL are Copyright 2001 THDL. +All Rights Reserved. + +Contributor(s): ______________________________________. +*/ + +package org.thdl.tib.input; + +import java.util.Vector; + +import org.thdl.tib.input.JskadKeyboard; + +/** A JskadKeyboardManager maintains a list of JskadKeyboards. + + @author David Chandler +*/ +public class JskadKeyboardManager { + /** A Vector of JskadKeyboards. Users will see the first + * keyboards most prominently. */ + private Vector keybds; + + /** Creates a manager without any keyboards in it, even the + * built-in extended Wylie keyboard. */ + public JskadKeyboardManager() { + keybds = new Vector(5); + } + + /** Creates a manager with the specified keyboards in it. The + * keyboard at index 0 will be the most prominent in the user's + * eyes. */ + public JskadKeyboardManager(JskadKeyboard keyboards[]) + throws NullPointerException + { + this(); + for (int i = 0; i < keyboards.length; i++) { + addKeyboard(keyboards[i]); + } + } + + /** Adds a JskadKeyboard to this manager. It will be the least + * prominent in the user's eyes of any yet added. */ + public void addKeyboard(JskadKeyboard keybd) + throws NullPointerException + { + if (null == keybd) + throw new NullPointerException(); + keybds.add((Object)keybd); + } + + /** Returns the JskadKeyboard at the zero-based index. */ + public JskadKeyboard elementAt(int index) + throws ArrayIndexOutOfBoundsException + { + return (JskadKeyboard)keybds.elementAt(index); + } + + /** Returns the number of JskadKeyboards being managed. */ + public int size() { + return keybds.size(); + } + + /** Returns an array of the identifying strings associated with + * all managed keyboards. */ + + public String[] getIdentifyingStrings() { + String x[] = new String[size()]; + for (int i = 0; i < size(); i++) { + x[i] = elementAt(i).getIdentifyingString(); + } + return x; + } +}