summaryrefslogtreecommitdiffstats
path: root/lib/jython/Lib/xml/dom/html/HTMLFormElement.py
blob: 2276f4ea0fc618ed2016e6c805a0d26942ccd7cd (plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#
# File Name:            HTMLFormElement.py
#
# Documentation:        http://docs.4suite.com/4DOM/HTMLFormElement.py.html
#
"""
WWW: http://4suite.com/4DOM         e-mail: support@4suite.com

Copyright (c) 2000 Fourthought Inc, USA.   All Rights Reserved.
See  http://4suite.com/COPYRIGHT  for license and copyright information
"""

import string
from xml.dom import ext
from xml.dom import implementation
from xml.dom.html.HTMLElement import HTMLElement
from xml.dom.html.HTMLCollection import HTMLCollection

FORM_CHILDREN = ['INPUT',
                 'SELECT',
                 'OPTGROUP',
                 'OPTION',
                 'TEXTAREA',
                 'LABEL',
                 'BUTTON',
                 'FIELDSET',
                 'LEGEND',
                 'OBJECT',
                 'ISINDEX'
                 ]

class HTMLFormElement(HTMLElement):

    def __init__(self, ownerDocument, nodeName='FORM'):
        HTMLElement.__init__(self, ownerDocument, nodeName)

    ### Attribute Methods ###

    def _get_acceptCharset(self):
        return self.getAttribute('ACCEPT-CHARSET')

    def _set_acceptCharset(self,acceptcharset):
        self.setAttribute('ACCEPT-CHARSET',acceptcharset)

    def _get_action(self):
        return self.getAttribute('ACTION')

    def _set_action(self,action):
        self.setAttribute('ACTION',action)

    def _get_elements(self):
        #Make a collection of control elements
        nl = self.getElementsByTagName('*')
        l = []
        for child in nl:
            if child.tagName in FORM_CHILDREN:
                l.append(child)
        return implementation._4dom_createHTMLCollection(l)

    def _get_encType(self):
        return self.getAttribute('ENCTYPE')

    def _set_encType(self,enctype):
        self.setAttribute('ENCTYPE',enctype)

    def _get_length(self):
        return self._get_elements().length

    def _get_method(self):
        return string.capitalize(self.getAttribute('METHOD'))

    def _set_method(self,method):
        self.setAttribute('METHOD',method)

    def _get_name(self):
        return self.getAttribute('NAME')

    def _set_name(self,name):
        self.setAttribute('NAME',name)

    def _get_target(self):
        return self.getAttribute('TARGET')

    def _set_target(self,target):
        self.setAttribute('TARGET',target)

    ### Methods ###

    def reset(self):
        pass

    def submit(self):
        pass

    ### Attribute Access Mappings ###

    _readComputedAttrs = HTMLElement._readComputedAttrs.copy()
    _readComputedAttrs.update ({
        'acceptCharset' : _get_acceptCharset,
        'action'        : _get_action,
        'elements'      : _get_elements,
        'encType'       : _get_encType,
        'length'        : _get_length,
        'method'        : _get_method,
        'name'          : _get_name,
        'target'        : _get_target
        })

    _writeComputedAttrs = HTMLElement._writeComputedAttrs.copy()
    _writeComputedAttrs.update ({
        'acceptCharset' : _set_acceptCharset,
        'action'        : _set_action,
        'encType'       : _set_encType,
        'method'        : _set_method,
        'name'          : _set_name,
        'target'        : _set_target
        })

    _readOnlyAttrs = filter(lambda k,m=_writeComputedAttrs: not m.has_key(k),
                     HTMLElement._readOnlyAttrs + _readComputedAttrs.keys())