PageRenderTime 34ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/examples/kitchensink/KitchenSink.py

http://pyjamas.googlecode.com/
Python | 103 lines | 100 code | 3 blank | 0 comment | 2 complexity | 5ae93a510b434fd8f8a7cdc901e4e3f8 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0
  1. from ui import Button, RootPanel, HTML, DockPanel, HasAlignment, Hyperlink, VerticalPanel
  2. import Window
  3. from SinkList import SinkList
  4. from History import History
  5. import Info
  6. import Buttons
  7. import Layouts
  8. import Images
  9. import Menus
  10. import Lists
  11. import Popups
  12. import Tables
  13. import Text
  14. import Trees
  15. import Frames
  16. import Tabs
  17. from Logger import Logger
  18. class KitchenSink:
  19. def onHistoryChanged(self, token):
  20. info = self.sink_list.find(token)
  21. if info:
  22. self.show(info, False)
  23. else:
  24. self.showInfo()
  25. def onModuleLoad(self):
  26. self.curInfo=''
  27. self.curSink=None
  28. self.description=HTML()
  29. self.sink_list=SinkList()
  30. self.panel=DockPanel()
  31. self.loadSinks()
  32. self.sinkContainer = DockPanel()
  33. self.sinkContainer.setStyleName("ks-Sink")
  34. vp=VerticalPanel()
  35. vp.setWidth("100%")
  36. vp.add(self.description)
  37. vp.add(self.sinkContainer)
  38. self.description.setStyleName("ks-Info")
  39. self.panel.add(self.sink_list, DockPanel.WEST)
  40. self.panel.add(vp, DockPanel.CENTER)
  41. self.panel.setCellVerticalAlignment(self.sink_list, HasAlignment.ALIGN_TOP)
  42. self.panel.setCellWidth(vp, "100%")
  43. History().addHistoryListener(self)
  44. RootPanel().add(self.panel)
  45. RootPanel().add(Logger())
  46. #Show the initial screen.
  47. initToken = History().getToken()
  48. if len(initToken):
  49. self.onHistoryChanged(initToken)
  50. else:
  51. self.showInfo()
  52. def show(self, info, affectHistory):
  53. if info == self.curInfo: return
  54. self.curInfo = info
  55. Logger.write("showing " + info.getName())
  56. if self.curSink <> None:
  57. self.curSink.onHide()
  58. Logger.write("removing " + self.curSink)
  59. self.sinkContainer.remove(self.curSink)
  60. self.curSink = info.getInstance()
  61. self.sink_list.setSinkSelection(info.getName())
  62. self.description.setHTML(info.getDescription())
  63. if (affectHistory):
  64. History().newItem(info.getName())
  65. self.sinkContainer.add(self.curSink, DockPanel.CENTER)
  66. self.sinkContainer.setCellWidth(self.curSink, "100%")
  67. self.sinkContainer.setCellHeight(self.curSink, "100%")
  68. self.sinkContainer.setCellVerticalAlignment(self.curSink, HasAlignment.ALIGN_TOP)
  69. self.curSink.onShow()
  70. def loadSinks(self):
  71. self.sink_list.addSink(Info.init())
  72. self.sink_list.addSink(Buttons.init())
  73. self.sink_list.addSink(Menus.init())
  74. self.sink_list.addSink(Images.init())
  75. self.sink_list.addSink(Layouts.init())
  76. self.sink_list.addSink(Lists.init())
  77. self.sink_list.addSink(Popups.init())
  78. self.sink_list.addSink(Tables.init())
  79. self.sink_list.addSink(Text.init())
  80. self.sink_list.addSink(Trees.init())
  81. self.sink_list.addSink(Frames.init())
  82. self.sink_list.addSink(Tabs.init())
  83. def showInfo(self):
  84. self.show(self.sink_list.find("Info"), False)