1 /* 2 * Copyright (C) 2022 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.dsl; 18 19 public class VChain extends Chain { 20 21 public class VAnchor extends Anchor { VAnchor(Constraint.VSide side)22 VAnchor(Constraint.VSide side) { 23 super(Constraint.Side.valueOf(side.name())); 24 } 25 } 26 27 private VAnchor mTop = new VAnchor(Constraint.VSide.TOP); 28 private VAnchor mBottom = new VAnchor(Constraint.VSide.BOTTOM); 29 private VAnchor mBaseline = new VAnchor(Constraint.VSide.BASELINE); 30 VChain(String name)31 public VChain(String name) { 32 super(name); 33 type = new HelperType(typeMap.get(Type.VERTICAL_CHAIN)); 34 } 35 VChain(String name, String config)36 public VChain(String name, String config) { 37 super(name); 38 this.config = config; 39 type = new HelperType(typeMap.get(Type.VERTICAL_CHAIN)); 40 configMap = convertConfigToMap(); 41 if (configMap.containsKey("contains")) { 42 Ref.addStringToReferences(configMap.get("contains"), references); 43 } 44 } 45 46 /** 47 * Get the top anchor 48 * 49 * @return the top anchor 50 */ getTop()51 public VAnchor getTop() { 52 return mTop; 53 } 54 55 /** 56 * Connect anchor to Top 57 * 58 * @param anchor anchor to be connected 59 */ linkToTop(Constraint.VAnchor anchor)60 public void linkToTop(Constraint.VAnchor anchor) { 61 linkToTop(anchor, 0); 62 } 63 64 /** 65 * Connect anchor to Top 66 * 67 * @param anchor anchor to be connected 68 * @param margin value of the margin 69 */ linkToTop(Constraint.VAnchor anchor, int margin)70 public void linkToTop(Constraint.VAnchor anchor, int margin) { 71 linkToTop(anchor, margin, Integer.MIN_VALUE); 72 } 73 74 /** 75 * Connect anchor to Top 76 * 77 * @param anchor anchor to be connected 78 * @param margin value of the margin 79 * @param goneMargin value of the goneMargin 80 */ linkToTop(Constraint.VAnchor anchor, int margin, int goneMargin)81 public void linkToTop(Constraint.VAnchor anchor, int margin, int goneMargin) { 82 mTop.mConnection = anchor; 83 mTop.mMargin = margin; 84 mTop.mGoneMargin = goneMargin; 85 configMap.put("top", mTop.toString()); 86 } 87 88 /** 89 * Get the bottom anchor 90 * 91 * @return the bottom anchor 92 */ getBottom()93 public VAnchor getBottom() { 94 return mBottom; 95 } 96 97 /** 98 * Connect anchor to Bottom 99 * 100 * @param anchor anchor to be connected 101 */ linkToBottom(Constraint.VAnchor anchor)102 public void linkToBottom(Constraint.VAnchor anchor) { 103 linkToBottom(anchor, 0); 104 } 105 106 /** 107 * Connect anchor to Bottom 108 * 109 * @param anchor anchor to be connected 110 * @param margin value of the margin 111 */ linkToBottom(Constraint.VAnchor anchor, int margin)112 public void linkToBottom(Constraint.VAnchor anchor, int margin) { 113 linkToBottom(anchor, margin, Integer.MIN_VALUE); 114 } 115 116 /** 117 * Connect anchor to Bottom 118 * 119 * @param anchor anchor to be connected 120 * @param margin value of the margin 121 * @param goneMargin value of the goneMargin 122 */ linkToBottom(Constraint.VAnchor anchor, int margin, int goneMargin)123 public void linkToBottom(Constraint.VAnchor anchor, int margin, int goneMargin) { 124 mBottom.mConnection = anchor; 125 mBottom.mMargin = margin; 126 mBottom.mGoneMargin = goneMargin; 127 configMap.put("bottom", mBottom.toString()); 128 } 129 130 /** 131 * Get the baseline anchor 132 * 133 * @return the baseline anchor 134 */ getBaseline()135 public VAnchor getBaseline() { 136 return mBaseline; 137 } 138 139 /** 140 * Connect anchor to Baseline 141 * 142 * @param anchor anchor to be connected 143 */ linkToBaseline(Constraint.VAnchor anchor)144 public void linkToBaseline(Constraint.VAnchor anchor) { 145 linkToBaseline(anchor, 0); 146 } 147 148 /** 149 * Connect anchor to Baseline 150 * 151 * @param anchor anchor to be connected 152 * @param margin value of the margin 153 */ linkToBaseline(Constraint.VAnchor anchor, int margin)154 public void linkToBaseline(Constraint.VAnchor anchor, int margin) { 155 linkToBaseline(anchor, margin, Integer.MIN_VALUE); 156 } 157 158 /** 159 * Connect anchor to Baseline 160 * 161 * @param anchor anchor to be connected 162 * @param margin value of the margin 163 * @param goneMargin value of the goneMargin 164 */ linkToBaseline(Constraint.VAnchor anchor, int margin, int goneMargin)165 public void linkToBaseline(Constraint.VAnchor anchor, int margin, int goneMargin) { 166 mBaseline.mConnection = anchor; 167 mBaseline.mMargin = margin; 168 mBaseline.mGoneMargin = goneMargin; 169 configMap.put("baseline", mBaseline.toString()); 170 } 171 172 } 173