fd1b4dd468
I cleaned things up a bit, and I've made logging optional since I don't yet trust the code fully. A Wylie underscore at the end of a line is worth looking into further, at the very least.
82 lines
2.7 KiB
Java
82 lines
2.7 KiB
Java
/*
|
|
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.text;
|
|
|
|
import javax.swing.*;
|
|
import javax.swing.text.*;
|
|
|
|
import org.thdl.util.ThdlOptions;
|
|
|
|
/** A ViewFactory that is cognizant of the line-wrapping rules for
|
|
* Tibetan text. That is, this class knows about the tsheg and other
|
|
* Tibetan punctuation.
|
|
* @author David Chandler */
|
|
class TibetanRTFViewFactory implements ViewFactory {
|
|
|
|
/** the delegatee */
|
|
private ViewFactory delegatee = null;
|
|
|
|
/** true iff the Tibetan-aware views that we create should include
|
|
copious debugging output */
|
|
private static boolean debugLog = false;
|
|
|
|
/** true if we've already inquired about the preference and stored
|
|
it in debugLog */
|
|
private static boolean debugLogInitialized = false;
|
|
|
|
/** Returns true iff the Tibetan-aware views that we create should
|
|
include copious debugging output. */
|
|
private static boolean getDebugLog() {
|
|
if (false == debugLogInitialized) {
|
|
debugLogInitialized = true;
|
|
debugLog
|
|
= ThdlOptions.getBooleanOption("thdl.log.line.breaking.algorithm");
|
|
}
|
|
return debugLog;
|
|
}
|
|
|
|
|
|
/** Do not call this. */
|
|
private TibetanRTFViewFactory() {
|
|
super();
|
|
}
|
|
|
|
/** Creates a new TibetanRTFViewFactory that delegates to vf when
|
|
* unknown elements are encountered.
|
|
* @throws NullPointerException if d is null */
|
|
public TibetanRTFViewFactory(ViewFactory d)
|
|
throws NullPointerException
|
|
{
|
|
if (null == d) throw new NullPointerException();
|
|
delegatee = d;
|
|
}
|
|
|
|
/** Returns a View that will break correctly at Tibetan
|
|
* punctuation. */
|
|
public View create(Element el) {
|
|
String elName = el.getName();
|
|
if (null != elName
|
|
&& elName.equals(AbstractDocument.ContentElementName)) { // FIXME: is this right? what about paragraph-level stuff?
|
|
return new TibetanLabelView(el, getDebugLog());
|
|
} else {
|
|
// We don't know what to do, so delegate:
|
|
return delegatee.create(el);
|
|
}
|
|
}
|
|
}
|