Package pyjamas :: Package ui :: Module AbsolutePanel
[hide private]
[frames] | no frames]

Source Code for Module pyjamas.ui.AbsolutePanel

 1  # Copyright 2006 James Tauber and contributors 
 2  # Copyright (C) 2009 Luke Kenneth Casson Leighton <lkcl@lkcl.net> 
 3  # 
 4  # Licensed under the Apache License, Version 2.0 (the "License"); 
 5  # you may not use this file except in compliance with the License. 
 6  # You may obtain a copy of the License at 
 7  # 
 8  #     http://www.apache.org/licenses/LICENSE-2.0 
 9  # 
10  # Unless required by applicable law or agreed to in writing, software 
11  # distributed under the License is distributed on an "AS IS" BASIS, 
12  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
13  # See the License for the specific language governing permissions and 
14  # limitations under the License. 
15  from __pyjamas__ import console 
16  from pyjamas import Factory 
17  from pyjamas import DOM 
18   
19  from ComplexPanel import ComplexPanel 
20   
21 -class AbsolutePanel(ComplexPanel):
22
23 - def __init__(self, **kwargs):
24 if kwargs.has_key('Element'): 25 element = kwargs.pop('Element') 26 else: 27 element = DOM.createDiv() 28 self.setElement(element) 29 DOM.setStyleAttribute(self.getElement(), "position", "relative") 30 DOM.setStyleAttribute(self.getElement(), "overflow", "hidden") 31 ComplexPanel.__init__(self, **kwargs)
32
33 - def add(self, widget, left=None, top=None):
34 ComplexPanel.add(self, widget, self.getElement()) 35 36 if left is not None: 37 self.setWidgetPosition(widget, left, top)
38
39 - def setWidgetPosition(self, widget, left, top):
40 self.checkWidgetParent(widget) 41 42 h = widget.getElement() 43 if (left == -1) and (top == -1): 44 DOM.setStyleAttribute(h, "left", "") 45 DOM.setStyleAttribute(h, "top", "") 46 DOM.setStyleAttribute(h, "position", "static") 47 else: 48 DOM.setStyleAttribute(h, "position", "absolute") 49 DOM.setStyleAttribute(h, "left", "%dpx" % left) 50 DOM.setStyleAttribute(h, "top", "%dpx" % top)
51
52 - def getWidgetLeft(self, widget):
53 self.checkWidgetParent(widget) 54 return DOM.getIntAttribute(widget.getElement(), "offsetLeft")
55
56 - def getWidgetTop(self, widget):
57 self.checkWidgetParent(widget) 58 return DOM.getIntAttribute(widget.getElement(), "offsetTop")
59
60 - def checkWidgetParent(self, widget):
61 if widget.getParent() != self: 62 # TODO: raise as exception instead 63 console.error("Widget must be a child of this panel.")
64 65 Factory.registerClass('pyjamas.ui.AbsolutePanel', AbsolutePanel) 66