Advertisement
Guest User

Untitled

a guest
Oct 13th, 2014
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.90 KB | None | 0 0
  1.  
  2. trait TraitView[V <: View] {
  3.   def basis: V
  4. }
  5.  
  6. trait TraitTextView[V <: TextView] extends TraitView[V] {
  7.   def text_=(p: CharSequence) = { basis.setText(p); basis }
  8.   def text  (p: CharSequence) = text_=(p)
  9.   def text = basis.getText
  10. }
  11.  
  12. trait TraitButton[V <: Button] extends TraitTextView[V] {
  13.   var onClickListenerLambda: View => Unit = _
  14.   def onClick_=(f: View => Unit) = {
  15.     onClickListenerLambda = f
  16.     basis.setOnClickListener(new OnClickListener {
  17.       override def onClick(v: View): Unit = f(v)
  18.     })
  19.     basis
  20.   }
  21.   def onClick(f: View => Unit) = onClick_=(f)
  22.   def onClick = onClickListenerLambda
  23. }
  24.  
  25. trait TraitEditText[V <: EditText] extends TraitTextView[V]
  26.  
  27. trait TraitViewAnimator[V <: ViewAnimator] extends TraitView[V] {
  28.   def currentView = basis.getCurrentView
  29.   def showNext() = basis.showNext()
  30.   def showPrevious() = basis.showPrevious()
  31. }
  32.  
  33. class MButton(v: View, id: Int) extends TraitButton[Button] {
  34.   def basis = v.findViewById(id).asInstanceOf[Button]
  35. }
  36. class MTextView(v: View, id: Int) extends TraitTextView[TextView] {
  37.   def basis = v.findViewById(id).asInstanceOf[TextView]
  38. }
  39. class MEditText(v: View, id: Int) extends TraitEditText[EditText] {
  40.   def basis = v.findViewById(id).asInstanceOf[EditText]
  41. }
  42. class MViewAnimator(v: View, id: Int) extends TraitViewAnimator[ViewAnimator] {
  43.   def basis = v.findViewById(id).asInstanceOf[ViewAnimator]
  44. }
  45.  
  46. object MTextView {
  47.   def apply(id: Int)(implicit view: View) = new MTextView(view, id)
  48. }
  49. object MButton {
  50.   def apply(id: Int)(implicit view: View) = new MButton(view, id)
  51.   def apply(id: Int, onclick: View => Unit)(implicit view: View): MButton = {
  52.     val b = apply(id)(view)
  53.     b.onClick = onclick
  54.     b
  55.   }
  56. }
  57. object MEditText {
  58.   def apply(id: Int)(implicit view: View) = new MEditText(view, id)
  59. }
  60. object MViewAnimator {
  61.   def apply(id: Int)(implicit view: View) = new MViewAnimator(view, id)
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement