/examples/kitchensink/Text.py

http://pyjamas.googlecode.com/ · Python · 76 lines · 58 code · 18 blank · 0 comment · 1 complexity · 881c6fd41f344bcc9944c1e6fd907cdd MD5 · raw file

  1. from Sink import Sink, SinkInfo
  2. from ui import Button, HorizontalPanel, HTML, PasswordTextBox, TextArea, TextBox, TextBoxBase, VerticalPanel, Widget
  3. class Text(Sink):
  4. def __init__(self):
  5. self.fPasswordText = PasswordTextBox()
  6. self.fTextArea = TextArea()
  7. self.fTextBox = TextBox()
  8. panel = VerticalPanel()
  9. panel.setSpacing(8)
  10. panel.add(HTML("Normal text box:"))
  11. panel.add(self.createTextThing(self.fTextBox))
  12. panel.add(HTML("Password text box:"))
  13. panel.add(self.createTextThing(self.fPasswordText))
  14. panel.add(HTML("Text area:"))
  15. panel.add(self.createTextThing(self.fTextArea))
  16. self.initWidget(panel)
  17. def onShow(self):
  18. pass
  19. def createTextThing(self, textBox):
  20. p = HorizontalPanel()
  21. p.setSpacing(4)
  22. p.add(textBox)
  23. echo = HTML()
  24. select_all = Button("select all")
  25. p.add(select_all)
  26. p.add(echo)
  27. listener=TextBoxListener(self, textBox, echo, select_all)
  28. select_all.addClickListener(listener)
  29. textBox.addKeyboardListener(listener)
  30. textBox.addClickListener(listener)
  31. return p
  32. def updateText(self, text, echo):
  33. echo.setHTML("Text: " + text.getText() + "<br>" + "Selection: " + text.getCursorPos() + ", " + text.getSelectionLength())
  34. class TextBoxListener:
  35. def __init__(self, parent, textBox, echo, select_all):
  36. self.textBox=textBox
  37. self.echo=echo
  38. self.parent=parent
  39. self.select_all=select_all
  40. def onClick(self, sender):
  41. if sender == self.select_all:
  42. self.textBox.selectAll()
  43. self.textBox.setFocus(True)
  44. self.parent.updateText(self.textBox, self.echo)
  45. def onKeyUp(self, sender, keyCode, modifiers):
  46. self.parent.updateText(self.textBox, self.echo)
  47. def onKeyDown(self, sender, keyCode, modifiers):
  48. pass
  49. def onKeyPress(self, sender, keyCode, modifiers):
  50. pass
  51. def init():
  52. text="GWT includes the standard complement of text-entry widgets, each of which "
  53. text+="supports keyboard and selection events you can use to control text entry. "
  54. text+="In particular, notice that the selection range for each widget is "
  55. text+="updated whenever you press a key. "
  56. text+="This can be a bit tricky on some browsers, but the GWT class library "
  57. text+="takes care of the plumbing for you automatically."
  58. return SinkInfo("Text", text, Text)