Annotation of modules/damieng/graphical_editor/loncapa_daxe/web/nodes/textfield.dart, revision 1.2
1.1 damieng 1: /*
2: This file is part of LONCAPA-Daxe.
3:
4: LONCAPA-Daxe is free software: you can redistribute it and/or modify
5: it under the terms of the GNU General Public License as published by
6: the Free Software Foundation, either version 3 of the License, or
7: (at your option) any later version.
8:
9: LONCAPA-Daxe is distributed in the hope that it will be useful,
10: but WITHOUT ANY WARRANTY; without even the implied warranty of
11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: GNU General Public License for more details.
13:
14: You should have received a copy of the GNU General Public License
15: along with Daxe. If not, see <http://www.gnu.org/licenses/>.
16: */
17:
18: part of loncapa_daxe;
19:
20: /**
21: * Display for the textfield element, for simple UI (some attributes are displayed like attributes of the parent).
22: * Jaxe display type: 'textfield'.
23: */
24: class Textfield extends LCDBlock {
25:
26: static List<String> simpleUIAttributes = ['spellcheck', 'rows', 'cols'];
27:
28: Textfield.fromRef(x.Element elementRef) : super.fromRef(elementRef);
29:
30: Textfield.fromNode(x.Node node, DaxeNode parent) : super.fromNode(node, parent) {
31: if (simpleParent())
32: simpleUI = true;
33: }
34:
35: @override
36: bool simpleUIPossible() {
37: if (attributes.length != 0) {
38: // accept any spellcheck, rows, columns, but no addchars
39: for (DaxeAttr att in attributes) {
40: if (!simpleUIAttributes.contains(att.name)) {
41: throw new SimpleUIException('textfield: ' + LCDStrings.get('attribute_problem') + att.name);
42: }
43: }
44: }
45: if (firstChild != null)
46: return false;
47: return true;
48: }
49:
50: bool simpleParent() {
51: return (parent is LCDBlock && (parent as LCDBlock).simpleUI) &&
52: (parent is EssayResponse);
53: }
54:
55: @override
56: h.Element html() {
57: simpleUI = simpleParent();
58: if (!simpleUI)
59: return super.html();
60:
61: // the whole textfield node is reduced to its attributes
62: h.TableElement table = new h.TableElement();
63: table.classes.add('expand');
64: table.id = id;
65: for (x.Element refAttr in attRefs) {
1.2 ! damieng 66: String name = doc.cfg.attributeName(refAttr);
1.1 damieng 67: if (simpleUIAttributes.contains(name)) {
68: h.TableRowElement tr = attributeHTML(refAttr);
69: table.append(tr);
70: }
71: }
72: return(table);
73: }
74:
75: @override
76: void updateAttributes() {
77: if (!simpleUI) {
78: super.updateAttributes();
79: return;
80: }
81: parent.updateHTML();
82: }
83: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>