1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sourceforge.jeuclid.elements.presentation.token;
20
21 import java.text.AttributedCharacterIterator;
22
23 import net.sourceforge.jeuclid.LayoutContext;
24 import net.sourceforge.jeuclid.elements.support.GraphicsSupport;
25 import net.sourceforge.jeuclid.elements.support.attributes.MathVariant;
26 import net.sourceforge.jeuclid.elements.support.text.MultiAttributedCharacterIterator;
27 import net.sourceforge.jeuclid.elements.support.text.StringUtil;
28 import net.sourceforge.jeuclid.elements.support.text.TextContentModifier;
29
30 import org.apache.batik.dom.AbstractDocument;
31 import org.w3c.dom.Node;
32 import org.w3c.dom.mathml.MathMLStringLitElement;
33
34
35
36
37
38
39 public final class Ms extends AbstractTokenWithTextLayout implements
40 MathMLStringLitElement, TextContentModifier {
41
42
43
44
45 public static final String ELEMENT = "ms";
46
47
48 public static final String ATTR_LQUOTE = "lquote";
49
50
51 public static final String ATTR_RQUOTE = "rquote";
52
53 private static final String VALUE_DOUBLEQUOTE = "\"";
54
55 private static final long serialVersionUID = 1L;
56
57
58
59
60
61
62
63
64
65 public Ms(final String qname, final AbstractDocument odoc) {
66 super(qname, odoc);
67 this.setDefaultMathAttribute(Ms.ATTR_LQUOTE, Ms.VALUE_DOUBLEQUOTE);
68 this.setDefaultMathAttribute(Ms.ATTR_RQUOTE, Ms.VALUE_DOUBLEQUOTE);
69 }
70
71
72 @Override
73 protected Node newNode() {
74 return new Ms(this.nodeName, this.ownerDocument);
75 }
76
77
78
79
80
81 public void setLquote(final String lquote) {
82 this.setAttribute(Ms.ATTR_LQUOTE, lquote);
83 }
84
85
86
87
88 public String getLquote() {
89 return this.getMathAttribute(Ms.ATTR_LQUOTE);
90 }
91
92
93
94
95
96 public void setRquote(final String rquote) {
97 this.setAttribute(Ms.ATTR_RQUOTE, rquote);
98 }
99
100
101
102
103 public String getRquote() {
104 return this.getMathAttribute(Ms.ATTR_RQUOTE);
105 }
106
107
108 public AttributedCharacterIterator modifyTextContent(
109 final AttributedCharacterIterator aci,
110 final LayoutContext layoutContext) {
111
112 final float fontSizeInPoint = GraphicsSupport
113 .getFontsizeInPoint(layoutContext);
114 final MathVariant variant = this.getMathvariantAsVariant();
115
116 final MultiAttributedCharacterIterator maci = new MultiAttributedCharacterIterator();
117 maci.appendAttributedCharacterIterator(StringUtil
118 .convertStringtoAttributedString(this.getLquote(), variant,
119 fontSizeInPoint, layoutContext).getIterator());
120 maci.appendAttributedCharacterIterator(aci);
121 maci.appendAttributedCharacterIterator(StringUtil
122 .convertStringtoAttributedString(this.getRquote(), variant,
123 fontSizeInPoint, layoutContext).getIterator());
124 return maci;
125 }
126
127 }