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

Source Code for Module library.pyjamas.ui.Image

 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 pyjamas.ui.Widget import Widget 
19  from pyjamas.ui import Event 
20  from pyjamas.ui.MouseListener import MouseHandler 
21  from pyjamas.ui.ClickListener import ClickHandler 
22   
23  prefetchImages = {} 
24 25 -class Image(Widget, MouseHandler, ClickHandler):
26 27 _props = [("url", "Url", "Url", None), 28 ] 29
30 - def __init__(self, url="", **kwargs):
31 if not kwargs.has_key('StyleName'): kwargs['StyleName']="gwt-Image" 32 if url: kwargs['Url'] = url 33 34 self.setElement(kwargs.pop('Element', None) or DOM.createImg()) 35 Widget.__init__(self, **kwargs) 36 MouseHandler.__init__(self) 37 ClickHandler.__init__(self) 38 self.sinkEvents(Event.ONLOAD | Event.ONERROR) 39 self.loadListeners = []
40 41 @classmethod
42 - def _getProps(self):
43 return Widget._getProps() + self._props
44
45 - def addLoadListener(self, listener):
46 self.loadListeners.append(listener)
47
48 - def removeLoadListener(self, listener):
49 self.loadListeners.remove(listener)
50
51 - def getUrl(self):
52 return DOM.getAttribute(self.getElement(), "src")
53
54 - def onBrowserEvent(self, event):
55 Widget.onBrowserEvent(self, event) 56 type = DOM.eventGetType(event) 57 if type == "load": 58 for listener in self.loadListeners: 59 listener.onImageLoad(self) 60 elif type == "error": 61 for listener in self.loadListeners: 62 listener.onImageError(self)
63
64 - def prefetch(self, url):
65 img = DOM.createImg() 66 DOM.setElemAttribute(img, "src", url) 67 prefetchImages[url] = img
68
69 - def setUrl(self, url):
70 DOM.setElemAttribute(self.getElement(), "src", url)
71 72 Factory.registerClass('pyjamas.ui.Image', 'Image', Image) 73