1 /* 2 * Copyright 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package androidx.constraintlayout.core.state.helpers; 18 19 import androidx.constraintlayout.core.state.Reference; 20 import androidx.constraintlayout.core.state.State; 21 import androidx.constraintlayout.core.widgets.ConstraintWidget; 22 import androidx.constraintlayout.core.widgets.Guideline; 23 24 public class GuidelineReference implements Facade, Reference { 25 26 final State mState; 27 private int mOrientation; 28 private Guideline mGuidelineWidget; 29 private int mStart = -1; 30 private int mEnd = -1; 31 private float mPercent = 0; 32 33 private Object mKey; 34 35 @Override setKey(Object key)36 public void setKey(Object key) { 37 this.mKey = key; 38 } 39 40 @Override getKey()41 public Object getKey() { 42 return mKey; 43 } 44 GuidelineReference(State state)45 public GuidelineReference(State state) { 46 mState = state; 47 } 48 49 // @TODO: add description start(Object margin)50 public GuidelineReference start(Object margin) { 51 mStart = mState.convertDimension(margin); 52 mEnd = -1; 53 mPercent = 0; 54 return this; 55 } 56 57 // @TODO: add description end(Object margin)58 public GuidelineReference end(Object margin) { 59 mStart = -1; 60 mEnd = mState.convertDimension(margin); 61 mPercent = 0; 62 return this; 63 } 64 65 // @TODO: add description percent(float percent)66 public GuidelineReference percent(float percent) { 67 mStart = -1; 68 mEnd = -1; 69 mPercent = percent; 70 return this; 71 } 72 setOrientation(int orientation)73 public void setOrientation(int orientation) { 74 mOrientation = orientation; 75 } 76 getOrientation()77 public int getOrientation() { 78 return mOrientation; 79 } 80 81 // @TODO: add description 82 @Override apply()83 public void apply() { 84 mGuidelineWidget.setOrientation(mOrientation); 85 if (mStart != -1) { 86 mGuidelineWidget.setGuideBegin(mStart); 87 } else if (mEnd != -1) { 88 mGuidelineWidget.setGuideEnd(mEnd); 89 } else { 90 mGuidelineWidget.setGuidePercent(mPercent); 91 } 92 } 93 94 @Override getFacade()95 public Facade getFacade() { 96 return null; 97 } 98 99 @Override getConstraintWidget()100 public ConstraintWidget getConstraintWidget() { 101 if (mGuidelineWidget == null) { 102 mGuidelineWidget = new Guideline(); 103 } 104 return mGuidelineWidget; 105 } 106 107 @Override setConstraintWidget(ConstraintWidget widget)108 public void setConstraintWidget(ConstraintWidget widget) { 109 if (widget instanceof Guideline) { 110 mGuidelineWidget = (Guideline) widget; 111 } else { 112 mGuidelineWidget = null; 113 } 114 } 115 } 116