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

Source Code for Module pyjamas.ui.ScrollPanel

 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 DOM 
16  from pyjamas import Factory 
17   
18  from SimplePanel import SimplePanel 
19  from pyjamas.ui import Event 
20   
21 -class ScrollPanel(SimplePanel):
22 - def __init__(self, child=None, **kwargs):
23 self.scrollListeners = [] 24 25 if child is not None: 26 kwargs['Widget'] = child 27 if not kwargs.has_key('AlwaysShowScrollBars'): 28 kwargs['AlwaysShowScrollBars'] = False 29 30 SimplePanel.__init__(self, **kwargs) 31 self.sinkEvents(Event.ONSCROLL)
32
33 - def addScrollListener(self, listener):
34 self.scrollListeners.append(listener)
35
36 - def ensureVisible(self, item):
40
41 - def getScrollPosition(self):
42 return DOM.getIntAttribute(self.getElement(), "scrollTop")
43
45 return DOM.getIntAttribute(self.getElement(), "scrollLeft")
46
47 - def onBrowserEvent(self, event):
48 type = DOM.eventGetType(event) 49 if type == "scroll": 50 for listener in self.scrollListeners: 51 listener.onScroll(self, self.getHorizontalScrollPosition(), self.getScrollPosition())
52
53 - def removeScrollListener(self, listener):
54 self.scrollListeners.remove(listener)
55
56 - def setAlwaysShowScrollBars(self, alwaysShow):
57 if alwaysShow: 58 style = "scroll" 59 else: 60 style = "auto" 61 DOM.setStyleAttribute(self.getElement(), "overflow", style)
62
63 - def setScrollPosition(self, position):
64 DOM.setIntAttribute(self.getElement(), "scrollTop", position)
65
66 - def setHorizontalScrollPosition(self, position):
67 DOM.setIntAttribute(self.getElement(), "scrollLeft", position)
68
69 - def ensureVisibleImpl(self, scroll, e):
70 if not e: 71 return 72 item = e 73 realOffset = 0 74 while item and (item != scroll): 75 realOffset += item.offsetTop 76 item = item.offsetParent 77 scroll.scrollTop = realOffset - scroll.offsetHeight / 2
78 79 Factory.registerClass('pyjamas.ui.ScrollPanel', ScrollPanel) 80