/*
* Copyright 2000-2016 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.server;
import java.io.Serializable;
/**
* Interface to be implemented by components wishing to display some object that
* may be dynamically resized during runtime.
*
* @author Vaadin Ltd.
* @since 3.0
*/
public interface Sizeable extends Serializable {
/**
* @deprecated As of 7.0, use {@link Unit#PIXELS} instead
*/
@Deprecated
public static final Unit UNITS_PIXELS = Unit.PIXELS;
/**
* @deprecated As of 7.0, use {@link Unit#POINTS} instead
*/
@Deprecated
public static final Unit UNITS_POINTS = Unit.POINTS;
/**
* @deprecated As of 7.0, use {@link Unit#PICAS} instead
*/
@Deprecated
public static final Unit UNITS_PICAS = Unit.PICAS;
/**
* @deprecated As of 7.0, use {@link Unit#EM} instead
*/
@Deprecated
public static final Unit UNITS_EM = Unit.EM;
/**
* @deprecated As of 7.0, use {@link Unit#EX} instead
*/
@Deprecated
public static final Unit UNITS_EX = Unit.EX;
/**
* @deprecated As of 7.0, use {@link Unit#MM} instead
*/
@Deprecated
public static final Unit UNITS_MM = Unit.MM;
/**
* @deprecated As of 7.0, use {@link Unit#CM} instead
*/
@Deprecated
public static final Unit UNITS_CM = Unit.CM;
/**
* @deprecated As of 7.0, use {@link Unit#INCH} instead
*/
@Deprecated
public static final Unit UNITS_INCH = Unit.INCH;
/**
* @deprecated As of 7.0, use {@link Unit#PERCENTAGE} instead
*/
@Deprecated
public static final Unit UNITS_PERCENTAGE = Unit.PERCENTAGE;
/**
* @deprecated As of 7.3, use instead {@link #setSizeUndefined()},
* {@link #setHeightUndefined()} and
* {@link #setWidthUndefined()}
*/
@Deprecated
public static final float SIZE_UNDEFINED = -1;
public enum Unit {
/**
* Unit code representing pixels.
*/
PIXELS("px"),
/**
* Unit code representing points (1/72nd of an inch).
*/
POINTS("pt"),
/**
* Unit code representing picas (12 points).
*/
PICAS("pc"),
/**
* Unit code representing the font-size of the relevant font.
*/
EM("em"),
/**
* Unit code representing the font-size of the root font.
*/
REM("rem"),
/**
* Unit code representing the x-height of the relevant font.
*/
EX("ex"),
/**
* Unit code representing millimeters.
*/
MM("mm"),
/**
* Unit code representing centimeters.
*/
CM("cm"),
/**
* Unit code representing inches.
*/
INCH("in"),
/**
* Unit code representing in percentage of the containing element
* defined by terminal.
*/
PERCENTAGE("%");
private final String symbol;
private Unit(String symbol) {
this.symbol = symbol;
}
public String getSymbol() {
return symbol;
}
@Override
public String toString() {
return symbol;
}
public static Unit getUnitFromSymbol(String symbol) {
if (symbol == null) {
return Unit.PIXELS; // Defaults to pixels
}
for (Unit unit : Unit.values()) {
if (symbol.equals(unit.getSymbol())) {
return unit;
}
}
return Unit.PIXELS; // Defaults to pixels
}
}
/**
* Gets the width of the object. Negative number implies unspecified size
* (terminal is free to set the size).
*
* @return width of the object in units specified by widthUnits property.
*/
public float getWidth();
/**
* Gets the height of the object. Negative number implies unspecified size
* (terminal is free to set the size).
*
* @return height of the object in units specified by heightUnits property.
*/
public float getHeight();
/**
* Gets the width property units.
*
* @return units used in width property.
*/
public Unit getWidthUnits();
/**
* Gets the height property units.
*
* @return units used in height property.
*/
public Unit getHeightUnits();
/**
* Sets the height of the component using String presentation.
*
* String presentation is similar to what is used in Cascading Style Sheets.
* Size can be length or percentage of available size.
*
* The empty string ("") or null will unset the height and set the units to
* pixels.
*
* See
* <a href="http://www.w3.org/TR/REC-CSS2/syndata.html#value-def-length">CSS
* specification</a> for more details.
*
* @param height
* in CSS style string representation
*/
public void setHeight(String height);
/**
* Sets the width of the object. Negative number implies unspecified size
* (terminal is free to set the size).
*
* @param width
* the width of the object.
* @param unit
* the unit used for the width.
*/
public void setWidth(float width, Unit unit);
/**
* Sets the height of the object. Negative number implies unspecified size
* (terminal is free to set the size).
*
* @param height
* the height of the object.
* @param unit
* the unit used for the width.
*/
public void setHeight(float height, Unit unit);
/**
* Sets the width of the component using String presentation.
*
* String presentation is similar to what is used in Cascading Style Sheets.
* Size can be length or percentage of available size.
*
* The empty string ("") or null will unset the width and set the units to
* pixels.
*
* See
* <a href="http://www.w3.org/TR/REC-CSS2/syndata.html#value-def-length">CSS
* specification</a> for more details.
*
* @param width
* in CSS style string representation, null or empty string to
* reset
*/
public void setWidth(String width);
/**
* Sets the size to 100% x 100%.
*/
public void setSizeFull();
/**
* Clears any size settings.
*/
public void setSizeUndefined();
/**
* Clears any defined width
*
* @since 7.3
*/
public void setWidthUndefined();
/**
* Clears any defined height
*
* @since 7.3
*/
public void setHeightUndefined();
}