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 HChain extends Chain { 20 public class HAnchor extends Anchor { HAnchor(Constraint.HSide side)21 HAnchor(Constraint.HSide side) { 22 super(Constraint.Side.valueOf(side.name())); 23 } 24 } 25 26 private HAnchor mLeft = new HAnchor(Constraint.HSide.LEFT); 27 private HAnchor mRight = new HAnchor(Constraint.HSide.RIGHT); 28 private HAnchor mStart = new HAnchor(Constraint.HSide.START); 29 private HAnchor mEnd = new HAnchor(Constraint.HSide.END); 30 HChain(String name)31 public HChain(String name) { 32 super(name); 33 type = new HelperType(typeMap.get(Type.HORIZONTAL_CHAIN)); 34 } 35 HChain(String name, String config)36 public HChain(String name, String config) { 37 super(name); 38 this.config = config; 39 type = new HelperType(typeMap.get(Type.HORIZONTAL_CHAIN)); 40 configMap = convertConfigToMap(); 41 if (configMap.containsKey("contains")) { 42 Ref.addStringToReferences(configMap.get("contains"), references); 43 } 44 } 45 46 /** 47 * Get the left anchor 48 * 49 * @return the left anchor 50 */ getLeft()51 public HAnchor getLeft() { 52 return mLeft; 53 } 54 55 /** 56 * Connect anchor to Left 57 * 58 * @param anchor anchor to be connected 59 */ linkToLeft(Constraint.HAnchor anchor)60 public void linkToLeft(Constraint.HAnchor anchor) { 61 linkToLeft(anchor, 0); 62 } 63 64 /** 65 * Connect anchor to Left 66 * 67 * @param anchor anchor to be connected 68 * @param margin value of the margin 69 */ linkToLeft(Constraint.HAnchor anchor, int margin)70 public void linkToLeft(Constraint.HAnchor anchor, int margin) { 71 linkToLeft(anchor, margin, Integer.MIN_VALUE); 72 } 73 74 /** 75 * Connect anchor to Left 76 * 77 * @param anchor anchor to be connected 78 * @param margin value of the margin 79 * @param goneMargin value of the goneMargin 80 */ linkToLeft(Constraint.HAnchor anchor, int margin, int goneMargin)81 public void linkToLeft(Constraint.HAnchor anchor, int margin, int goneMargin) { 82 mLeft.mConnection = anchor; 83 mLeft.mMargin = margin; 84 mLeft.mGoneMargin = goneMargin; 85 configMap.put("left", mLeft.toString()); 86 } 87 88 /** 89 * Get the right anchor 90 * 91 * @return the right anchor 92 */ getRight()93 public HAnchor getRight() { 94 return mRight; 95 } 96 97 /** 98 * Connect anchor to Right 99 * 100 * @param anchor anchor to be connected 101 */ linkToRight(Constraint.HAnchor anchor)102 public void linkToRight(Constraint.HAnchor anchor) { 103 linkToRight(anchor, 0); 104 } 105 106 /** 107 * Connect anchor to Right 108 * 109 * @param anchor anchor to be connected 110 * @param margin value of the margin 111 */ linkToRight(Constraint.HAnchor anchor, int margin)112 public void linkToRight(Constraint.HAnchor anchor, int margin) { 113 linkToRight(anchor, margin, Integer.MIN_VALUE); 114 } 115 116 /** 117 * Connect anchor to Right 118 * 119 * @param anchor anchor to be connected 120 * @param margin value of the margin 121 * @param goneMargin value of the goneMargin 122 */ linkToRight(Constraint.HAnchor anchor, int margin, int goneMargin)123 public void linkToRight(Constraint.HAnchor anchor, int margin, int goneMargin) { 124 mRight.mConnection = anchor; 125 mRight.mMargin = margin; 126 mRight.mGoneMargin = goneMargin; 127 configMap.put("right", mRight.toString()); 128 } 129 130 /** 131 * Get the start anchor 132 * 133 * @return the start anchor 134 */ getStart()135 public HAnchor getStart() { 136 return mStart; 137 } 138 139 /** 140 * Connect anchor to Start 141 * 142 * @param anchor anchor to be connected 143 */ linkToStart(Constraint.HAnchor anchor)144 public void linkToStart(Constraint.HAnchor anchor) { 145 linkToStart(anchor, 0); 146 } 147 148 /** 149 * Connect anchor to Start 150 * 151 * @param anchor anchor to be connected 152 * @param margin value of the margin 153 */ linkToStart(Constraint.HAnchor anchor, int margin)154 public void linkToStart(Constraint.HAnchor anchor, int margin) { 155 linkToStart(anchor, margin, Integer.MIN_VALUE); 156 } 157 158 /** 159 * Connect anchor to Start 160 * 161 * @param anchor anchor to be connected 162 * @param margin value of the margin 163 * @param goneMargin value of the goneMargin 164 */ linkToStart(Constraint.HAnchor anchor, int margin, int goneMargin)165 public void linkToStart(Constraint.HAnchor anchor, int margin, int goneMargin) { 166 mStart.mConnection = anchor; 167 mStart.mMargin = margin; 168 mStart.mGoneMargin = goneMargin; 169 configMap.put("start", mStart.toString()); 170 } 171 172 /** 173 * Get the end anchor 174 * 175 * @return the end anchor 176 */ getEnd()177 public HAnchor getEnd() { 178 return mEnd; 179 } 180 181 /** 182 * Connect anchor to End 183 * 184 * @param anchor anchor to be connected 185 */ linkToEnd(Constraint.HAnchor anchor)186 public void linkToEnd(Constraint.HAnchor anchor) { 187 linkToEnd(anchor, 0); 188 } 189 190 /** 191 * Connect anchor to End 192 * 193 * @param anchor anchor to be connected 194 * @param margin value of the margin 195 */ linkToEnd(Constraint.HAnchor anchor, int margin)196 public void linkToEnd(Constraint.HAnchor anchor, int margin) { 197 linkToEnd(anchor, margin, Integer.MIN_VALUE); 198 } 199 200 /** 201 * Connect anchor to End 202 * 203 * @param anchor anchor to be connected 204 * @param margin value of the margin 205 * @param goneMargin value of the goneMargin 206 */ linkToEnd(Constraint.HAnchor anchor, int margin, int goneMargin)207 public void linkToEnd(Constraint.HAnchor anchor, int margin, int goneMargin) { 208 mEnd.mConnection = anchor; 209 mEnd.mMargin = margin; 210 mEnd.mGoneMargin = goneMargin; 211 configMap.put("end", mEnd.toString()); 212 } 213 214 } 215