1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
import java.util.Vector;
import javax.swing.event.*;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Element;
import javax.swing.text.GapContent;
import javax.swing.text.Segment;
import javax.swing.text.Utilities;
import javax.swing.text.AbstractDocument.Content;
public class MonDocument extends AbstractDocument {
public static final String tabSizeAttribute = "tabSize";
public static final String lineLimitAttribute = "lineLimit";
public MonDocument(Content c) {
super(c);
putProperty(tabSizeAttribute, new Integer(8));
defaultRoot = createDefaultRoot();
}
public MonDocument() {
this(new GapContent());
}
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
super.insertString(offs, str, a);
}
public Element getDefaultRootElement() {
return defaultRoot;
}
protected AbstractElement createDefaultRoot() {
BranchElement map = (BranchElement) createBranchElement(null, null);
Element line = createLeafElement(map, null, 0, 1);
Element[] lines = new Element[2];
lines[0] = line;
map.replace(0, 0, lines);
return map;
}
public Element getParagraphElement(int pos) {
Element lineMap = getDefaultRootElement();
return lineMap.getElement(lineMap.getElementIndex(pos));
}
protected void insertUpdate(DefaultDocumentEvent chng, AttributeSet attr) {
super.insertUpdate(chng, attr);
}
protected void removeUpdate(DefaultDocumentEvent chng) {
removed.removeAllElements();
}
private void insertComposedTextUpdate(DefaultDocumentEvent chng,
AttributeSet attr) {
}
private AbstractElement defaultRoot;
private Vector added = new Vector(); // Vector<Element>
private Vector removed = new Vector(); // Vector<Element>
private transient Segment s;
} |
Partager