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

Source Code for Module pyjamas.ui.RootPanel

 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  import sys 
16  from __pyjamas__ import doc 
17  from pyjamas import Factory 
18   
19  from pyjamas import DOM 
20  from pyjamas import Window 
21   
22  from pyjamas.ui.AbsolutePanel import AbsolutePanel 
23   
24  rootPanels = {} 
25 -class RootPanelManager(object):
26
27 - def onWindowClosed(self):
28 global rootPanels 29 for panel in rootPanels.itervalues(): 30 panel.onDetach()
31
32 - def onWindowClosing(self):
33 return None
34
35 -def get(id=None):
36 """ 37 38 """ 39 if rootPanels.has_key(id): 40 return rootPanels[id] 41 42 element = None 43 if id is not None: 44 element = DOM.getElementById(id) 45 if element is None: 46 return None 47 48 return manageRootPanel(RootPanelCls(element), id)
49
50 -def manageRootPanel(panel, id=None):
51 52 if len(rootPanels) < 1: 53 panelManager = RootPanelManager() 54 Window.addWindowCloseListener(panelManager) 55 56 rootPanels[id] = panel 57 return panel
58
59 -class RootPanelCls(AbsolutePanel):
60 - def __init__(self, Element=None, **kwargs):
61 if Element is not None: 62 kwargs['Element'] = Element 63 AbsolutePanel.__init__(self, **kwargs) 64 if Element is None: 65 # avoid having CSS styles position:relative and hidden set on body 66 Element = self.getBodyElement() 67 self.setElement(Element) 68 self.onAttach()
69
70 - def getBodyElement(self):
71 return doc().body
72 73 Factory.registerClass('pyjamas.ui.RootPanel', 'RootPanelCls', RootPanelCls) 74
75 -def RootPanel(id=None):
76 return get(id)
77