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

Source Code for Module library.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 Factory 
16  from pyjamas import DOM 
17   
18  from pyjamas.ui.ComplexPanel import ComplexPanel 
19   
20 -class AbsolutePanel(ComplexPanel):
21
22 - def __init__(self, **ka):
23 element = ka.pop('Element', None) or DOM.createDiv() 24 self.setElement(element) 25 DOM.setStyleAttribute(element, "position", "relative") 26 DOM.setStyleAttribute(element, "overflow", "hidden") 27 ComplexPanel.__init__(self, **ka)
28
29 - def add(self, widget, left=None, top=None):
30 ComplexPanel.add(self, widget, self.getElement()) 31 32 if left is not None: 33 self.setWidgetPosition(widget, left, top)
34
35 - def setWidgetPosition(self, widget, left, top):
36 self.checkWidgetParent(widget) 37 38 h = widget.getElement() 39 if (left == -1) and (top == -1): 40 DOM.setStyleAttribute(h, "left", "") 41 DOM.setStyleAttribute(h, "top", "") 42 DOM.setStyleAttribute(h, "position", "static") 43 else: 44 DOM.setStyleAttribute(h, "position", "absolute") 45 DOM.setStyleAttribute(h, "left", "%dpx" % left) 46 DOM.setStyleAttribute(h, "top", "%dpx" % top)
47
48 - def getWidgetLeft(self, widget):
49 self.checkWidgetParent(widget) 50 return DOM.getIntAttribute(widget.getElement(), "offsetLeft")
51
52 - def getWidgetTop(self, widget):
53 self.checkWidgetParent(widget) 54 return DOM.getIntAttribute(widget.getElement(), "offsetTop")
55
56 - def checkWidgetParent(self, widget):
57 if widget.getParent() != self: 58 raise Exception("Widget must be a child of this panel.")
59 60 Factory.registerClass('pyjamas.ui.AbsolutePanel', 'AbsolutePanel', AbsolutePanel) 61