From 244a9d1370ab039c1aa2f158e27f0acc8c14b415 Mon Sep 17 00:00:00 2001 From: dchandler Date: Wed, 14 Apr 2004 05:12:00 +0000 Subject: [PATCH] TiblEdit's diacritics panel now works -- dia.dat has been added to the repository and to TiblEdit's jar. --- build.xml | 5 + source/org/thdl/tib/bibl/DiacriticPanel.java | 398 ++++++++++--------- source/org/thdl/tib/bibl/TibConstants.java | 2 +- source/org/thdl/tib/bibl/dia.dat | 102 +++++ source/org/thdl/tib/bibl/package.html | 9 +- 5 files changed, 318 insertions(+), 198 deletions(-) create mode 100644 source/org/thdl/tib/bibl/dia.dat diff --git a/build.xml b/build.xml index 9b10a85..d4325f5 100644 --- a/build.xml +++ b/build.xml @@ -1109,6 +1109,11 @@ Contributor(s): ______________________________________. + + + + + diff --git a/source/org/thdl/tib/bibl/DiacriticPanel.java b/source/org/thdl/tib/bibl/DiacriticPanel.java index c0508c2..c970cc4 100644 --- a/source/org/thdl/tib/bibl/DiacriticPanel.java +++ b/source/org/thdl/tib/bibl/DiacriticPanel.java @@ -29,7 +29,9 @@ import java.awt.event.MouseEvent; import java.io.File; import java.io.FileReader; import java.io.BufferedReader; +import java.io.InputStreamReader; import java.io.IOException; +import java.net.URL; import javax.swing.SwingConstants; import javax.swing.JLabel; import javax.swing.JPanel; @@ -42,222 +44,232 @@ import javax.swing.border.EmptyBorder; import javax.swing.border.LineBorder; import javax.swing.text.*; - /** - *

- * This class creates a panel that displays all the relevant diacritic characters used in Asian Studies. - * In the context of TibEdit, it's constructor takes a TibFrame which is its parent. When the mouse is clicked - * on any diacritic character displayed in DiacriticPanel, it inserts that character at the cursor of the - * TibFrame's {@link TextPane}. All characters are, of course, in Unicode. The file that is the list of diacrtics - * is dia.dat in the /bin/ directory. It is a flat file list of the hexadecimal codes for the Unicode diacritics. - * These are read and converted into characters by DiacriticPanel and they are displayed in the order they are read. - * Thus, to reorder, modify, or add diacritics, one needs only to make the appropriate changes to the dia.dat file. - *

- * - * @author Than Garson, Tibetan and Himalayan Digital Library - */ + /** + *

This class creates a panel that displays all the relevant + * diacritic characters used in Asian Studies. In the context of + * TiblEdit, its constructor takes a TibFrame which is its + * parent. When the mouse is clicked on any diacritic character + * displayed in DiacriticPanel, it inserts that character at the + * cursor of the TibFrame's {@link TextPane}. All characters are, + * of course, in Unicode. The file that is the list of diacritics + * is dia.dat in the same directory as this class's class file. It + * is a flat file list of the hexadecimal codes for the Unicode + * diacritics. These are read and converted into characters by + * DiacriticPanel and they are displayed in the order they are + * read. Thus, to reorder, modify, or add diacritics, one needs + * only to make the appropriate changes to the dia.dat file.

+ * + * @author Than Garson, Tibetan and Himalayan Digital Library */ public class DiacriticPanel extends JPanel implements TibConstants { - // Attributes - protected TibFrame frame; - protected JTextComponent jtc; - private TiblEdit controller; - //private StringTokenizer dataSplitter; - private char chosenChar; - private boolean hasPicked; - private boolean isGeneral; + // Attributes + protected TibFrame frame; + protected JTextComponent jtc; + private TiblEdit controller; + //private StringTokenizer dataSplitter; + private char chosenChar; + private boolean hasPicked; // DLC FIXME: unused + private boolean isGeneral; - /** - * Sets the panel's layout, size, and background, and reads in the diacritic data. - */ - private void init() - { - // Creating content panel to use for frame's content & initialize + /** + * Sets the panel's layout, size, and background, and reads in the diacritic data. + */ + private void init() + { + // Creating content panel to use for frame's content & initialize - //JPanel charPanel = new JPanel(new BorderLayout()); - setLayout(new GridLayout(0,3)); - setSize(new Dimension(100,450)); - setBackground(Color.white); + //JPanel charPanel = new JPanel(new BorderLayout()); + setLayout(new GridLayout(0,3)); + setSize(new Dimension(100,450)); + setBackground(Color.white); - // Split the data, create individual line labels - try { - BufferedReader br = new BufferedReader(new FileReader(new File(DEFAULT_DIRECTORY + DIA_DATA))); - String line = br.readLine(); - while(line != null) { - char diaChar = (char)Long.parseLong(line.trim(),16); - String diaStr = Character.toString(diaChar); - JLabel diaLab = getDiaLabel(diaStr); - this.add(diaLab); - line = br.readLine(); - } - br.close(); - } catch (IOException ioe) { - System.out.println("An IOE caught: " + ioe.getMessage()); - ioe.printStackTrace(); - } - } + // Split the data, create individual line labels + try { + URL url = DiacriticPanel.class.getResource(DIA_DATA); + if (url == null) { + System.err.println("Cannot find " + DIA_DATA + "; aborting."); + System.exit(1); + } + InputStreamReader isr = new InputStreamReader(url.openStream()); + BufferedReader br = new BufferedReader(isr); + String line = br.readLine(); + while(line != null) { + char diaChar = (char)Long.parseLong(line.trim(),16); + String diaStr = Character.toString(diaChar); + JLabel diaLab = getDiaLabel(diaStr); + this.add(diaLab); + line = br.readLine(); + } + br.close(); + } catch (IOException ioe) { + System.out.println("An IOE caught: " + ioe.getMessage()); + ioe.printStackTrace(); + org.thdl.util.ThdlDebug.noteIffyCode(); + } + } - // Accessors - /** - * This method takes a character, which is actually a String variable and creates a label - * with a border and a margin with the supplied character string as the - * centered text. Adds a MouseListener that is a {@link DiacriticPanel.TiblEditMouseAdapter}. It is called by the {@link #init} method. - * - * @param ch - A string variable that is the character associated with this label/button. - * - * @return JLabel - the label created. - */ - public JLabel getDiaLabel(String ch) - { - JLabel lab = new JLabel(ch); - lab.setFont(DEFAULT_FONT); - lab.setHorizontalAlignment(SwingConstants.CENTER); - lab.setBorder(new CompoundBorder(new LineBorder(Color.black),BorderFactory.createEmptyBorder(2,2,2,2))); - if(isGeneral) { - lab.addMouseListener(new GenMouseAdapter()); - } else { - lab.addMouseListener(new TiblEditMouseAdapter()); - } - return lab; + // Accessors + /** + * This method takes a character, which is actually a String variable and creates a label + * with a border and a margin with the supplied character string as the + * centered text. Adds a MouseListener that is a {@link DiacriticPanel.TiblEditMouseAdapter}. It is called by the {@link #init} method. + * + * @param ch - A string variable that is the character associated with this label/button. + * + * @return JLabel - the label created. + */ + public JLabel getDiaLabel(String ch) + { + JLabel lab = new JLabel(ch); + lab.setFont(DEFAULT_FONT); + lab.setHorizontalAlignment(SwingConstants.CENTER); + lab.setBorder(new CompoundBorder(new LineBorder(Color.black),BorderFactory.createEmptyBorder(2,2,2,2))); + if(isGeneral) { + lab.addMouseListener(new GenMouseAdapter()); + } else { + lab.addMouseListener(new TiblEditMouseAdapter()); + } + return lab; - } - public void setChosenChar(char aChar) - { - chosenChar = aChar; - hasPicked = true; - } + } + public void setChosenChar(char aChar) + { + chosenChar = aChar; + hasPicked = true; + } - public char getChosenChar() - { - char rValue = chosenChar; - chosenChar = ' '; - hasPicked = false; - return rValue; - } + public char getChosenChar() + { + char rValue = chosenChar; + chosenChar = ' '; + hasPicked = false; + return rValue; + } - public void setController(TiblEdit te) - { - controller = te; - } + public void setController(TiblEdit te) + { + controller = te; + } - public TiblEdit getController() - { - return controller; - } + public TiblEdit getController() + { + return controller; + } - public void setFrame(TibFrame tf) - { - frame = tf; - } + public void setFrame(TibFrame tf) + { + frame = tf; + } - public JFrame getFrame() - { - return frame; - } + public JFrame getFrame() + { + return frame; + } - public void setJTC(JTextComponent jtextc) - { - jtc = jtextc; - } + public void setJTC(JTextComponent jtextc) + { + jtc = jtextc; + } - public JTextComponent getJTC() - { - return jtc; - } + public JTextComponent getJTC() + { + return jtc; + } - // Constructors + // Constructors - public DiacriticPanel(boolean isGen, Container cont) - { - super(); - isGeneral = isGen; - if(cont instanceof TibFrame) { - setFrame((TibFrame)cont); - } else if(cont instanceof JTextComponent) { - setJTC((JTextComponent)cont); - } + public DiacriticPanel(boolean isGen, Container cont) + { + super(); + isGeneral = isGen; + if(cont instanceof TibFrame) { + setFrame((TibFrame)cont); + } else if(cont instanceof JTextComponent) { + setJTC((JTextComponent)cont); + } - init(); - hasPicked = false; - } + init(); + hasPicked = false; + } - public DiacriticPanel(TibFrame tf) - { - this(false,tf); - setFrame(tf); - setController(tf.getController()); - } + public DiacriticPanel(TibFrame tf) + { + this(false,tf); + setFrame(tf); + setController(tf.getController()); + } - public DiacriticPanel(JTextComponent jtc) - { - this(true,jtc); - } + public DiacriticPanel(JTextComponent jtc) + { + this(true,jtc); + } - // Inner Classes - // The Mouse Adapter - /** - *

- * This inner class is a MouseAdapter that implements "mousePressed". It is added to a label with a diacritic - * so that when that label is clicked, the corresponding Unicode diacritic character is inserted in the - * open document, a {@link TextPane}, at the cursor. - *

- */ + // Inner Classes + // The Mouse Adapter + /** + *

+ * This inner class is a MouseAdapter that implements "mousePressed". It is added to a label with a diacritic + * so that when that label is clicked, the corresponding Unicode diacritic character is inserted in the + * open document, a {@link TextPane}, at the cursor. + *

+ */ - private class TiblEditMouseAdapter extends MouseAdapter - { - /** - *

- * This version of mousePressed. Takes the {@link TibFrame} supplied with the DiacriticPanel's constructor - * and gets its {@link TextPane}. It then inserts the Unicode diacritic character from the source - * label at the cursor of this text pane. - *

- */ - public void mousePressed(MouseEvent me) - { - TextPane tp = frame.getTextPane(); - if(tp.isEditable()) { - JLabel source = (JLabel)me.getSource(); - String dia = source.getText(); - int pos = tp.getCaret().getDot(); - try { - tp.getDocument().insertString(pos,dia,tp.getCharacterAttributes()); - } catch (BadLocationException ble) - { - System.out.println("Bad location exception while inserting diacritic (" - +pos+")! \n"); - } - } - } - } + private class TiblEditMouseAdapter extends MouseAdapter + { + /** + *

+ * This version of mousePressed. Takes the {@link TibFrame} supplied with the DiacriticPanel's constructor + * and gets its {@link TextPane}. It then inserts the Unicode diacritic character from the source + * label at the cursor of this text pane. + *

+ */ + public void mousePressed(MouseEvent me) + { + TextPane tp = frame.getTextPane(); + if(tp.isEditable()) { + JLabel source = (JLabel)me.getSource(); + String dia = source.getText(); + int pos = tp.getCaret().getDot(); + try { + tp.getDocument().insertString(pos,dia,tp.getCharacterAttributes()); + } catch (BadLocationException ble) + { + System.out.println("Bad location exception while inserting diacritic (" + +pos+")! \n"); + } + } + } + } - private class GenMouseAdapter extends MouseAdapter - { - /** - *

- * This version of mousePressed. Takes the {@link TibFrame} supplied with the DiacriticPanel's constructor - * and gets its {@link TextPane}. It then inserts the Unicode diacritic character from the source - * label at the cursor of this text pane. - *

- */ - public void mousePressed(MouseEvent me) - { - JLabel source = (JLabel)me.getSource(); - String dia = source.getText(); - jtc.replaceSelection(dia); - } - } - // Main Method for testing - public static void main(String[] args) - {/* - TibFrame tf = new TibFrame("Diacritic Test"); - DiacriticPanel dp = new DiacriticPanel(); - JScrollPane jsp = new JScrollPane(dp, - ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, - ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); - tf.setContentPane(jsp); - tf.pack(); - tf.show();*/ - } + private class GenMouseAdapter extends MouseAdapter + { + /** + *

+ * This version of mousePressed. Takes the {@link TibFrame} supplied with the DiacriticPanel's constructor + * and gets its {@link TextPane}. It then inserts the Unicode diacritic character from the source + * label at the cursor of this text pane. + *

+ */ + public void mousePressed(MouseEvent me) + { + JLabel source = (JLabel)me.getSource(); + String dia = source.getText(); + jtc.replaceSelection(dia); + } + } + // Main Method for testing + public static void main(String[] args) + {/* + TibFrame tf = new TibFrame("Diacritic Test"); + DiacriticPanel dp = new DiacriticPanel(); + JScrollPane jsp = new JScrollPane(dp, + ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, + ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); + tf.setContentPane(jsp); + tf.pack(); + tf.show();*/ + } } diff --git a/source/org/thdl/tib/bibl/TibConstants.java b/source/org/thdl/tib/bibl/TibConstants.java index 02720e9..8ef9f8a 100644 --- a/source/org/thdl/tib/bibl/TibConstants.java +++ b/source/org/thdl/tib/bibl/TibConstants.java @@ -39,7 +39,7 @@ public interface TibConstants final String DATA_DIRECTORY = java.io.File.separatorChar + "data" + java.io.File.separatorChar; final String OUT_DIRECTORY = java.io.File.separatorChar + "data" + java.io.File.separatorChar; final String BIN_LOGIN = java.io.File.separatorChar + "bin" + java.io.File.separatorChar + "logs" + java.io.File.separatorChar; - final String DIA_DATA = java.io.File.separatorChar + "bin" + java.io.File.separatorChar + "dia.dat"; + final String DIA_DATA = "dia.dat"; final String TEMP_DIR = java.io.File.separatorChar + "bin" + java.io.File.separatorChar + "temp" + java.io.File.separatorChar; final String PREFS = "ttprefs.ini"; diff --git a/source/org/thdl/tib/bibl/dia.dat b/source/org/thdl/tib/bibl/dia.dat new file mode 100644 index 0000000..40133b2 --- /dev/null +++ b/source/org/thdl/tib/bibl/dia.dat @@ -0,0 +1,102 @@ +0101 +0100 +0113 +0112 +012B +012A +014D +014C +016B +016A +1E0D +1E0C +1E25 +1E24 +1E37 +1E36 +1E39 +1E38 +1E43 +1E42 +1E47 +1E46 +1E5B +1E5A +1E5D +1E5C +1E63 +1E62 +1E6D +1E6C +1E93 +1E92 +1E41 +1E40 +1E45 +1E44 +00E4 +00C4 +00EB +00CB +00EF +00CF +00F6 +00D6 +00FC +00DC +00E3 +00C3 +1EBD +1EBC +0129 +0128 +00F1 +00D1 +00F5 +00D5 +0169 +0168 +00E1 +00C1 +00E9 +00C9 +00ED +00CD +00F3 +00D3 +015B +015A +00FA +00DA +00FD +00DD +017A +0179 +00E0 +00C0 +00E8 +00C8 +00EC +00CC +00F2 +00D2 +00F9 +00D9 +00E2 +00C2 +00EA +00CA +00EE +00CE +00F4 +00D4 +00FB +00DB +00E7 +00C7 +015F +015E +0161 +0160 +017E +017D diff --git a/source/org/thdl/tib/bibl/package.html b/source/org/thdl/tib/bibl/package.html index b26ca25..6de77eb 100644 --- a/source/org/thdl/tib/bibl/package.html +++ b/source/org/thdl/tib/bibl/package.html @@ -5,7 +5,7 @@ @(#)package.html - Copyright 2001-2003 Tibetan and Himalayan Digital Library + Copyright 2001-2004 Tibetan and Himalayan Digital Library This software is the confidential and proprietary information of the Tibetan and Himalayan Digital Library. You shall use such @@ -15,10 +15,11 @@ --> -Provides classes and methods for the Tibbibl application. +Provides classes and methods for the TiblEdit application.

-Tibbibl is for editing scholarly bibliographies of Tibetan texts, -where the bibliographies are stored as XML instances. +TiblEdit is for editing scholarly bibliographies of Tibetan texts, +where the bibliographies are stored as XML instances using the TIBBIBL +schema.