2012-04-05 4 views
0

У меня возникли трудности с пониманием системы обработки событий Pajamas/GWT. В настоящее время я использую самую последнюю 0,8 пижаму для тестирования. Я не уверен в том, какая лучшая структура обработки событий будет такой, какой я никогда не выполнял.Обработка событий в Pajamas

Мне не повезло с документацией, которую я нашел до сих пор. Кто-нибудь знает хорошую ссылку для пижамы или GWT?

Моей главной трудностью является понимание того, откуда происходят слушатели, такие как onClick, onMouseleave и т. Д. Как они срабатывают? Где они определены? Я их определяю?

Что такое многоуровневая структура системы обработки событий?

Я знаю, что это очень общие вопросы, но я действительно просто ищу точку в правильном направлении.

Благодарим вас, и я благодарю любую помощь.

ответ

1

Я предлагаю вам изучить источник в папке примеров. Начните с этим http://pyjs.org/book/output/Bookreader.html#Getting%20Started

Есть некоторые ссылки, которые уже были полезны для меня: http://gwt.google.com/samples/Showcase/Showcase.html

http://pyjs.org/examples/

Также в примерах папки есть отличный пример называется showcase, который дает вам все API и некоторому полезный код образцы /localhost/somedir/showcase/output/Showcase.html

поскольку API аналогичен, вы всегда можете проверить их книги (особенно полезно для понимания обратного вызова и т. д. ..):

http://www.amazon.com/Beginning-Google-Web-Toolkit-Professional/dp/1430210311/ref=sr_1_12?ie=UTF8&qid=1334659695&sr=8-12

http://www.amazon.com/Google-Toolkit-Applications-Ryan-Dewsbury/dp/0321501969/ref=sr_1_7?ie=UTF8&qid=1334659695&sr=8-7

для Джанго и пижаме http://www.derekschaefer.net/2011/02/08/pyjamas-django-pure-win/

Однако я согласен есть большая потребность в более вводных учебников за пределами привет мир пример. Я сам с этим борюсь. Удача

ps. Я создал небольшой пример обратного вызова, который, похоже, работает. Мне было бы здорово, если бы люди исправили меня здесь и отредактировали этот пример, чтобы быть более полезными для людей. Все, что я пытаюсь сделать, это иметь навигацию с 2 страницами (представленными 2 классами: ввод и выход)

 
    import pyjd 
    from pyjamas.ui.VerticalPanel import VerticalPanel 
    from pyjamas.ui.RootPanel import RootPanel 
    from pyjamas.ui.SimplePanel import SimplePanel 
    from pyjamas.ui.DockPanel import DockPanel 
    from pyjamas.ui.Hyperlink import Hyperlink 
    from pyjamas.ui.Button import Button 
    from pyjamas.ui.HTML import HTML 
    from pyjamas import Window 

    class Site(SimplePanel): 
     def onModuleLoad(self): 
      SimplePanel.__init__(self) 

      self.panel = DockPanel() 
      self.intro = Intro() 
      self.outro = Outro() 
      self.index = HTML('index') 
      self.curPage = self.index 

      vp=VerticalPanel() 
      vp.add(self.index) 

      self.link1 = Hyperlink('menu item 1') 
      self.link2 = Hyperlink('menu item 2') 
      self.link1.addClickListener(getattr(self, 'onLINK1')) 
      self.link2.addClickListener(getattr(self, 'onLINK2')) 

      self.panel.add(self.link1, DockPanel.WEST) 
      self.panel.add(self.link2, DockPanel.WEST) 

      self.panel.add(self.index, DockPanel.CENTER) 
      RootPanel().add(self.panel) 

     def onLINK1(self): 
      self.panel.remove(self.curPage, DockPanel.CENTER) 
      self.panel.add(self.intro, DockPanel.CENTER) 
      self.curPage = self.intro 

     def onLINK2(self): 
      self.panel.remove(self.curPage, DockPanel.CENTER) 
      self.panel.add(self.outro, DockPanel.CENTER) 
      self.curPage = self.outro 

    class Intro(SimplePanel): 
     def __init__(self): 
      SimplePanel.__init__(self) 
      self.vp = VerticalPanel() 
      self.html = HTML('This is intro') 
      self.button = Button('click me', self) 
      self.vp.add(self.html) 
      self.vp.add(self.button) 
      self.setWidget(self.vp) 

     def onClick(self): 
      Window.alert('onClick Intro') 

    class Outro(SimplePanel): 
     def __init__(self): 
      SimplePanel.__init__(self) 
      self.vp = VerticalPanel() 
      self.html = HTML('This is outro') 
      #we can do it this way 
      self.button1 = Button('click me1', getattr(self, 'onBUTTON1')) 
      self.button2 = Button('click me2') 
      #or set up listener 
      self.button2.addClickListener(getattr(self,'onBUTTON2')) 
      self.vp.add(self.html) 
      self.vp.add(self.button1) 
      self.vp.add(self.button2) 
      self.setWidget(self.vp) 

     def onBUTTON1(self): 
      Window.alert('hello from button1') 
     def onBUTTON2(self): 
      Window.alert('hello from button2') 

    if __name__ == '__main__': 
     pyjd.setup('./Site.html') 
     app = Site() 
     app.onModuleLoad() 
     pyjd.run()