Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.bukalapak.android.base.dna.component.molecule.wow
- import android.support.constraint.ConstraintLayout
- import android.support.constraint.ConstraintSet
- import com.bukalapak.android.base.dna.component.moleculeview.ConstraintMV
- import com.bukalapak.android.base.dna.component.atom.general.button.ButtonLargeAV
- import com.bukalapak.android.base.dna.component.atom.general.button.ButtonAV
- import android.content.Context
- import android.view.ViewGroup
- import com.bukalapak.android.base.dna.Margin
- import com.bukalapak.android.base.dna.Molecule
- import com.bukalapak.android.base.dna.component.R
- import com.bukalapak.android.base.dna.component.atom.wow.misc.SeparatorLineVerticalAV
- import com.bukalapak.android.base.dna.component.util.*
- /**
- * Created by bagasprstyadi on 6/7/18.
- */
- class WOWInspirationHeaderMV constructor(context: Context?):
- Molecule<WOWInspirationHeaderMV.State, ConstraintMV>(context, ::ConstraintMV){
- private val innerSeparator = SeparatorLineVerticalAV(context)
- private val filterButton = ButtonLargeAV(context)
- private val sortButton = ButtonLargeAV(context)
- init {
- this.createComponent()
- }
- private fun createComponent() {
- setParams(width = ViewGroup.LayoutParams.WRAP_CONTENT)
- setId(R.id.wowInspirationFilterMV)
- setPadding(Margin.xHorizontal, Margin.xVertical)
- filterButton.setId(R.id.wowInspirationFilterButtonAV)
- sortButton.setId(R.id.wowInspirationSortButtonAV)
- addComponent(filterButton, params = ConstraintLayout.LayoutParams(
- 0, ConstraintLayout.LayoutParams.WRAP_CONTENT))
- addComponent(innerSeparator, params = ConstraintLayout.LayoutParams(
- 0, ConstraintLayout.LayoutParams.WRAP_CONTENT))
- addComponent(sortButton, params = ConstraintLayout.LayoutParams(
- 0, ConstraintLayout.LayoutParams.WRAP_CONTENT))
- ConstraintSet().apply {
- clone(this@WOWInspirationHeaderMV)
- setHorizontalChainStyle(filterButton.getId(), ConstraintSet.CHAIN_PACKED)
- connect(filterButton.TOP, this@WOWInspirationHeaderMV.TOP)
- connect(filterButton.BOTTOM, this@WOWInspirationHeaderMV.BOTTOM)
- connect(filterButton.START, this@WOWInspirationHeaderMV.START)
- connect(filterButton.END, innerSeparator.START)
- setHorizontalChainStyle(innerSeparator.getId(), ConstraintSet.CHAIN_PACKED)
- connect(innerSeparator.TOP, this@WOWInspirationHeaderMV.TOP)
- connect(innerSeparator.BOTTOM, this@WOWInspirationHeaderMV.BOTTOM)
- setHorizontalChainStyle(sortButton.getId(), ConstraintSet.CHAIN_PACKED)
- connect(sortButton.TOP, this@WOWInspirationHeaderMV.TOP)
- connect(sortButton.BOTTOM, this@WOWInspirationHeaderMV.BOTTOM)
- connect(sortButton.START, innerSeparator.END)
- connect(sortButton.END, this@WOWInspirationHeaderMV.END)
- applyTo(this@WOWInspirationHeaderMV)
- }
- }
- override fun initState(): State = State()
- override fun render(state: State) {
- filterButton.bind(state.filterButtonState)
- innerSeparator.bind(state.innerSeparatorState)
- sortButton.bind(state.sortButtonState)
- }
- class State {
- var innerSeparatorState = SeparatorLineVerticalAV.State()
- var filterButtonState = ButtonAV.State()
- var sortButtonState = ButtonAV.State()
- }
- }
Add Comment
Please, Sign In to add comment