MattiasBuelens

MCMail ui/write

Jul 30th, 2012
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.12 KB | None | 0 0
  1. --[[
  2.  
  3.     MCNet Mail UI
  4.     Write message pane
  5.  
  6. ]]--
  7.  
  8. ui = ui or {}
  9.  
  10. local WritePane = common.newClass({
  11.     horizontal = false,
  12.     -- Message type
  13.     messageType = "mailMessage",
  14.     -- Fields
  15.     to = "",
  16.     message = "",
  17.     -- Field labels
  18.     toLabel = "To:"
  19. }, ccgui.FlowContainer)
  20. ui.WritePane = WritePane
  21.  
  22. function WritePane:init()
  23.     ccgui.FlowContainer.init(self)
  24.  
  25.     -- Styles
  26.     local Button = common.newClass(ccgui.Button)
  27.  
  28.     -- Header
  29.     self.header = ccgui.FlowContainer:new{
  30.         horizontal = true,
  31.         spacing = 1
  32.     }
  33.  
  34.     -- Fields
  35.     self.fields = ccgui.FlowContainer:new{
  36.         horizontal = false,
  37.         stretch = true,
  38.         padding = ccgui.newMargins(1, 0)
  39.     }
  40.     local to = ccgui.FlowContainer:new{
  41.         horizontal = true,
  42.         spacing = 1
  43.     }
  44.     self.toLabel = ccgui.TextElement:new{
  45.         text = self.toLabel
  46.     }
  47.     self.toField = ccgui.TextInput:new{
  48.         stretch = true
  49.     }
  50.  
  51.     -- Buttons
  52.     self.buttons = ccgui.FlowContainer:new{
  53.         horizontal = false,
  54.         padding = ccgui.newMargins(0, 0, 0, 1)
  55.     }
  56.     local send = Button:new{
  57.         text = "Send"
  58.     }
  59.     local clear = Button:new{
  60.         text = "Clear"
  61.     }
  62.     send:on("buttonpress", function(pane)
  63.         pane:trigger("sendMessage")
  64.     end, self)
  65.     clear:on("buttonpress", function(pane)
  66.         pane:trigger("clearMessage")
  67.     end, self)
  68.  
  69.     -- Message
  70.     self.messageField = ccgui.TextArea:new{
  71.         stretch = true
  72.     }
  73.  
  74.     -- Set fields
  75.     self:setTo(self.to)
  76.     self:setMessage(self.message)
  77.    
  78.     -- Add elements
  79.     to:add(self.toLabel, self.toField)
  80.     self.fields:add(to)
  81.     self.buttons:add(send, clear)
  82.     self.header:add(self.fields, self.buttons)
  83.     self:add(self.header, self.messageField)
  84.  
  85.     -- Bindings
  86.     self:on("clearMessage", self.clearFields, self)
  87. end
  88.  
  89. function WritePane:clearFields()
  90.     self:setTo("")
  91.     self:setMessage("")
  92. end
  93.  
  94. function WritePane:setTo(to)
  95.     self.toField:setText(tostring(to))
  96. end
  97.  
  98. function WritePane:setMessage(message)
  99.     self.messageField:setText(tostring(message))
  100. end
  101.  
  102. function WritePane:focusMessage()
  103.     self.messageField:focus()
  104. end
  105.  
  106. function WritePane:buildMessage()
  107.     return mcnet.message.new{
  108.         type = self.messageType,
  109.         to = self.toField:text(),
  110.         data = self.messageField:text()
  111.     }
  112. end
Advertisement
Add Comment
Please, Sign In to add comment