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>