Guest User

Untitled

a guest
Jun 11th, 2018
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. package com.bukalapak.android.base.dna.component.molecule.wow
  2.  
  3. import android.support.constraint.ConstraintLayout
  4. import android.support.constraint.ConstraintSet
  5. import com.bukalapak.android.base.dna.component.moleculeview.ConstraintMV
  6. import com.bukalapak.android.base.dna.component.atom.general.button.ButtonLargeAV
  7. import com.bukalapak.android.base.dna.component.atom.general.button.ButtonAV
  8. import android.content.Context
  9. import android.view.ViewGroup
  10. import com.bukalapak.android.base.dna.Margin
  11. import com.bukalapak.android.base.dna.Molecule
  12. import com.bukalapak.android.base.dna.component.R
  13. import com.bukalapak.android.base.dna.component.atom.wow.misc.SeparatorLineVerticalAV
  14. import com.bukalapak.android.base.dna.component.util.*
  15.  
  16. /**
  17. * Created by bagasprstyadi on 6/7/18.
  18. */
  19.  
  20. class WOWInspirationHeaderMV constructor(context: Context?):
  21. Molecule<WOWInspirationHeaderMV.State, ConstraintMV>(context, ::ConstraintMV){
  22.  
  23. private val innerSeparator = SeparatorLineVerticalAV(context)
  24. private val filterButton = ButtonLargeAV(context)
  25. private val sortButton = ButtonLargeAV(context)
  26.  
  27. init {
  28. this.createComponent()
  29. }
  30.  
  31. private fun createComponent() {
  32. setParams(width = ViewGroup.LayoutParams.WRAP_CONTENT)
  33.  
  34. setId(R.id.wowInspirationFilterMV)
  35. setPadding(Margin.xHorizontal, Margin.xVertical)
  36. filterButton.setId(R.id.wowInspirationFilterButtonAV)
  37. sortButton.setId(R.id.wowInspirationSortButtonAV)
  38. addComponent(filterButton, params = ConstraintLayout.LayoutParams(
  39. 0, ConstraintLayout.LayoutParams.WRAP_CONTENT))
  40. addComponent(innerSeparator, params = ConstraintLayout.LayoutParams(
  41. 0, ConstraintLayout.LayoutParams.WRAP_CONTENT))
  42. addComponent(sortButton, params = ConstraintLayout.LayoutParams(
  43. 0, ConstraintLayout.LayoutParams.WRAP_CONTENT))
  44.  
  45. ConstraintSet().apply {
  46. clone(this@WOWInspirationHeaderMV)
  47.  
  48. setHorizontalChainStyle(filterButton.getId(), ConstraintSet.CHAIN_PACKED)
  49. connect(filterButton.TOP, this@WOWInspirationHeaderMV.TOP)
  50. connect(filterButton.BOTTOM, this@WOWInspirationHeaderMV.BOTTOM)
  51. connect(filterButton.START, this@WOWInspirationHeaderMV.START)
  52. connect(filterButton.END, innerSeparator.START)
  53.  
  54. setHorizontalChainStyle(innerSeparator.getId(), ConstraintSet.CHAIN_PACKED)
  55. connect(innerSeparator.TOP, this@WOWInspirationHeaderMV.TOP)
  56. connect(innerSeparator.BOTTOM, this@WOWInspirationHeaderMV.BOTTOM)
  57.  
  58. setHorizontalChainStyle(sortButton.getId(), ConstraintSet.CHAIN_PACKED)
  59. connect(sortButton.TOP, this@WOWInspirationHeaderMV.TOP)
  60. connect(sortButton.BOTTOM, this@WOWInspirationHeaderMV.BOTTOM)
  61. connect(sortButton.START, innerSeparator.END)
  62. connect(sortButton.END, this@WOWInspirationHeaderMV.END)
  63. applyTo(this@WOWInspirationHeaderMV)
  64. }
  65. }
  66.  
  67. override fun initState(): State = State()
  68.  
  69. override fun render(state: State) {
  70.  
  71. filterButton.bind(state.filterButtonState)
  72. innerSeparator.bind(state.innerSeparatorState)
  73. sortButton.bind(state.sortButtonState)
  74. }
  75.  
  76. class State {
  77. var innerSeparatorState = SeparatorLineVerticalAV.State()
  78. var filterButtonState = ButtonAV.State()
  79. var sortButtonState = ButtonAV.State()
  80. }
  81. }
Add Comment
Please, Sign In to add comment