001 package org.apache.myfaces.tobago.layout;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one or more
005 * contributor license agreements. See the NOTICE file distributed with
006 * this work for additional information regarding copyright ownership.
007 * The ASF licenses this file to You under the Apache License, Version 2.0
008 * (the "License"); you may not use this file except in compliance with
009 * the License. You may obtain a copy of the License at
010 *
011 * http://www.apache.org/licenses/LICENSE-2.0
012 *
013 * Unless required by applicable law or agreed to in writing, software
014 * distributed under the License is distributed on an "AS IS" BASIS,
015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016 * See the License for the specific language governing permissions and
017 * limitations under the License.
018 */
019
020 import org.apache.commons.lang.StringUtils;
021 import org.apache.myfaces.tobago.util.LayoutUtil;
022
023 /*
024 * User: lofwyr
025 * Date: 23.01.2008 20:12:30
026 */
027 public abstract class Measure {
028
029 // todo: refactor and consolidate with LayoutToken
030
031 public static Measure parse(String value) {
032 if (StringUtils.isEmpty(value)) {
033 return new PixelMeasure(0); // fixme: may return a "default measure", or is Pixel the default?
034 }
035 // XXX improve code sharing with LayoutTokens.parse
036 if (LayoutUtil.isNumberAndSuffix(value.toLowerCase(), "px")) {
037 return new PixelMeasure(Integer.parseInt(LayoutUtil.removeSuffix(value, "px")));
038 }
039 throw new IllegalArgumentException("Can't parse to any measure: '" + value + "'");
040 }
041
042 public abstract Measure add(Measure m);
043
044 @Deprecated
045 public abstract Measure substractNotNegative(Measure m);
046
047 public abstract Measure subtractNotNegative(Measure m);
048
049 public abstract int getPixel();
050 }