Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trait TraitView[V <: View] {
- def basis: V
- }
- trait TraitTextView[V <: TextView] extends TraitView[V] {
- def text_=(p: CharSequence) = { basis.setText(p); basis }
- def text (p: CharSequence) = text_=(p)
- def text = basis.getText
- }
- trait TraitButton[V <: Button] extends TraitTextView[V] {
- var onClickListenerLambda: View => Unit = _
- def onClick_=(f: View => Unit) = {
- onClickListenerLambda = f
- basis.setOnClickListener(new OnClickListener {
- override def onClick(v: View): Unit = f(v)
- })
- basis
- }
- def onClick(f: View => Unit) = onClick_=(f)
- def onClick = onClickListenerLambda
- }
- trait TraitEditText[V <: EditText] extends TraitTextView[V]
- trait TraitViewAnimator[V <: ViewAnimator] extends TraitView[V] {
- def currentView = basis.getCurrentView
- def showNext() = basis.showNext()
- def showPrevious() = basis.showPrevious()
- }
- class MButton(v: View, id: Int) extends TraitButton[Button] {
- def basis = v.findViewById(id).asInstanceOf[Button]
- }
- class MTextView(v: View, id: Int) extends TraitTextView[TextView] {
- def basis = v.findViewById(id).asInstanceOf[TextView]
- }
- class MEditText(v: View, id: Int) extends TraitEditText[EditText] {
- def basis = v.findViewById(id).asInstanceOf[EditText]
- }
- class MViewAnimator(v: View, id: Int) extends TraitViewAnimator[ViewAnimator] {
- def basis = v.findViewById(id).asInstanceOf[ViewAnimator]
- }
- object MTextView {
- def apply(id: Int)(implicit view: View) = new MTextView(view, id)
- }
- object MButton {
- def apply(id: Int)(implicit view: View) = new MButton(view, id)
- def apply(id: Int, onclick: View => Unit)(implicit view: View): MButton = {
- val b = apply(id)(view)
- b.onClick = onclick
- b
- }
- }
- object MEditText {
- def apply(id: Int)(implicit view: View) = new MEditText(view, id)
- }
- object MViewAnimator {
- def apply(id: Int)(implicit view: View) = new MViewAnimator(view, id)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement