Class GUnit

  • All Implemented Interfaces:
    java.lang.Cloneable

    public class GUnit
    extends java.lang.Object
    implements java.lang.Cloneable
    This is a data holder class for a unit "px" for pixels, "dlg" for dialog, "em" for the size of the current font, "ex" for the size of the "x" character of the current font, "pt" for point size (1/72 of an inch), and "%" for percent of the parent component size.

    Dialog units use font metrics as: 1/4 maximum character width, 1/8 maximum character height (+ external & internal leadings). This is a heritage from the Windows.

    Two different unit types exist: integer values and decimal values. The type "px" only supports integer values. Integer values can range from -536870911 (-0x1FFFFFFF) to 536870911 (0x1FFFFFFF). Decimal values can be from -536870911.ddddddd (-0x1FFFFFFF.ddddddd) to 536870911.ddddddd (0x1FFFFFFF.ddddddd) where "ddddddd" is the decimal part with a maximum of 7 digits. A unit can be a combination of several other units, e.g. "90%-10px+1pt". This type is called FORMULA.

    Author:
    Christopher Mindus
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static GUnit NONE
      An empty "NONE" unit, i.e.
      static int UT_DLG
      The unit type "dialog" or "dlg" for short.
      static int UT_EM
      The unit type size of the current font or "em" for short.
      static int UT_EX
      The unit type size of the "x" character of current font or "ex" for short.
      static int UT_FORMULA
      The unit type for complex values with a formula.
      static int UT_PC
      The unit type size for percentage of parent or "%" for short.
      static int UT_PCH
      The unit type size for percentage of parent height or "%h" for short.
      static int UT_PCMAX
      The unit type size for maximum size of percentage of parent width and height or "%max" for short.
      static int UT_PCMIN
      The unit type size for minimum size of percentage of parent width and height or "%min" for short.
      static int UT_PCW
      The unit type size for percentage of parent width or "%w" for short.
      static int UT_PT
      The unit type in points, i.e.
      static int UT_PX
      The unit type "pixels" or "px" for short.
      static int UT_VALUE
      The unit type size special value string, set as the formula.
      static int UT_VH
      The unit type size for percentage of viewport height or "vh" for short.
      static int UT_VMAX
      The unit type size for maximum size of percentage of viewport width and height or "vmax" for short.
      static int UT_VMIN
      The unit type size for minimum size of percentage of viewport width and height or "vmin" for short.
      static int UT_VW
      The unit type size for percentage of viewport width or "vw" for short.
    • Constructor Summary

      Constructors 
      Constructor Description
      GUnit()
      Creates a unit object to 0 (zero) in pixels.
      GUnit​(double value, int unit)
      Creates a unit object with the specified value in pixels.
      GUnit​(int value)
      Creates a unit object with the specified value in pixels.
      GUnit​(ReadTransaction trans)
      Creates a unit object from a transaction.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void append​(SendTransaction trans)
      Appends the unit object to a transaction.
      GUnit clone()
      Clones this instance.
      static GUnit createCSSGUnit​(java.lang.String value, java.lang.String... specialValues)
      Creates a GUnit object from a String.
      static GUnit createGUnit​(java.lang.String expr0, java.lang.String... specialValues)
      Creates a GUnit object from a String.
      boolean equals​(GUnit unit)
      Checks if two unit objects are equal.
      boolean equals​(java.lang.Object o)
      Checks if two unit objects are equal.
      java.lang.String getCSSValue()
      Gets the unit as a CSS value.
      double getPixelValue​(UIComp comp, boolean isHorz)
      Calculates the unit into a pixel value using the font information.
      static javax.script.ScriptEngine getScriptEngine()
      Returns the script engine manager.
      java.lang.String getString()
      Gets the String representation of the bounds as "value type".
      int getType()
      Gets the type of the unit (0-6): one of the values UT_PX (pixel), UT_DLG (dialog), UT_EM ("em"), UT_EX ("ex"), UT_PT (point), UT_PC (percent), UT_FORMULA (formula) or UT_VALUE (special value).
      double getValue()
      Returns the double value for the unit.
      boolean isContainerDependent()
      Returns if this value is dependent on the container size, i.e.
      boolean isLocked()
      Checks if the unit is "locked" from user change in the GUI design editor.
      boolean isPureCSS()
      Checks if this is a valid CSS pure unit, e.g.
      boolean isZero()
      Checks if the unit is zero.
      protected java.lang.String paramString()
      Returns the parameter string representing the state of this event.
      void setLocked​(boolean on)
      Sets the lock state of the unit.
      java.lang.String toString()
      Returns a string representation of this class instance.
      java.lang.String validate()
      Validates an expression formula.
      static void validateCSSGUnit​(GUnit unit, java.lang.String... specialValues)
      Validates a GUnit object.
      • Methods inherited from class java.lang.Object

        finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • NONE

        public static final GUnit NONE
        An empty "NONE" unit, i.e. "0px".
      • UT_PX

        public static final int UT_PX
        The unit type "pixels" or "px" for short. Only integer values are allowed.
        See Also:
        Constant Field Values
      • UT_PT

        public static final int UT_PT
        The unit type in points, i.e. 1/72 inch or "pt" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_EM

        public static final int UT_EM
        The unit type size of the current font or "em" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_EX

        public static final int UT_EX
        The unit type size of the "x" character of current font or "ex" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_DLG

        public static final int UT_DLG
        The unit type "dialog" or "dlg" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_PC

        public static final int UT_PC
        The unit type size for percentage of parent or "%" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_PCW

        public static final int UT_PCW
        The unit type size for percentage of parent width or "%w" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_PCH

        public static final int UT_PCH
        The unit type size for percentage of parent height or "%h" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_PCMIN

        public static final int UT_PCMIN
        The unit type size for minimum size of percentage of parent width and height or "%min" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_PCMAX

        public static final int UT_PCMAX
        The unit type size for maximum size of percentage of parent width and height or "%max" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_VW

        public static final int UT_VW
        The unit type size for percentage of viewport width or "vw" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_VH

        public static final int UT_VH
        The unit type size for percentage of viewport height or "vh" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_VMIN

        public static final int UT_VMIN
        The unit type size for minimum size of percentage of viewport width and height or "vmin" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_VMAX

        public static final int UT_VMAX
        The unit type size for maximum size of percentage of viewport width and height or "vmax" for short. Decimals are allowed.
        See Also:
        Constant Field Values
      • UT_FORMULA

        public static final int UT_FORMULA
        The unit type for complex values with a formula.
        See Also:
        Constant Field Values
      • UT_VALUE

        public static final int UT_VALUE
        The unit type size special value string, set as the formula.
        See Also:
        Constant Field Values
    • Constructor Detail

      • GUnit

        public GUnit()
        Creates a unit object to 0 (zero) in pixels.
      • GUnit

        public GUnit​(int value)
        Creates a unit object with the specified value in pixels.
        Parameters:
        value - The value.
        Throws:
        java.lang.IllegalArgumentException - if the value is not in range of -0x1FFFFFFF to 0x1FFFFFFF.
      • GUnit

        public GUnit​(double value,
                     int unit)
        Creates a unit object with the specified value in pixels.
        Parameters:
        value - The value.
        unit - The unit UT_* (excluding UT_FORMULA and UT_VALUE).
        Throws:
        java.lang.IllegalArgumentException - For invalid value range.
      • GUnit

        public GUnit​(ReadTransaction trans)
        Creates a unit object from a transaction.
        Parameters:
        trans - The transaction.
    • Method Detail

      • getScriptEngine

        public static javax.script.ScriptEngine getScriptEngine()
                                                         throws GUnitException
        Returns the script engine manager.
        Throws:
        GUnitException - If engine cannot be instantiated.
      • createGUnit

        public static GUnit createGUnit​(java.lang.String expr0,
                                        java.lang.String... specialValues)
                                 throws GUnitException
        Creates a GUnit object from a String. The String must be in the formats:
          - [+|-] nnn [unit]
          - [+|-] nnn[.ddd] [unit]
          - formula consisting of characters "()+-/* 0123456789." and the unit characters
         
        Parameters:
        expr0 - The expression string.
        specialValues - Accepted special values.
        Returns:
        GUnit the created unit.
        Throws:
        GUnitException - The error message.
      • createCSSGUnit

        public static GUnit createCSSGUnit​(java.lang.String value,
                                           java.lang.String... specialValues)
                                    throws GUnitException
        Creates a GUnit object from a String. The String must be in the formats:
          - [+|-] nnn [unit]
          - [+|-] nnn[.ddd] [unit]
         

        Formulas are not supported. The following units are supported:

        • px,
        • pt,
        • em,
        • ex,
        • %,
        • vw,
        • vh,
        Parameters:
        value - The value string.
        specialValues - Accepted special values.
        Returns:
        GUnit the created unit.
        Throws:
        GUnitException - The error message.
      • validateCSSGUnit

        public static void validateCSSGUnit​(GUnit unit,
                                            java.lang.String... specialValues)
                                     throws GUnitException
        Validates a GUnit object.

        Formulas are not supported. The following units are supported:

        • px,
        • pt,
        • em,
        • ex,
        • %,
        • vw,
        • vh,
        Parameters:
        unit - The unit as CSS value.
        specialValues - Accepted special values.
        Throws:
        GUnitException - The error message.
      • getType

        public int getType()
        Gets the type of the unit (0-6): one of the values UT_PX (pixel), UT_DLG (dialog), UT_EM ("em"), UT_EX ("ex"), UT_PT (point), UT_PC (percent), UT_FORMULA (formula) or UT_VALUE (special value).
      • isLocked

        public boolean isLocked()
        Checks if the unit is "locked" from user change in the GUI design editor.
      • setLocked

        public void setLocked​(boolean on)
        Sets the lock state of the unit.
      • getString

        public java.lang.String getString()
        Gets the String representation of the bounds as "value type".
        Returns:
        A string in the form of value type.
      • isZero

        public boolean isZero()
        Checks if the unit is zero. It is zero when not a UT_FORMULA or UT_VALUE string such as "fixed".
      • equals

        public boolean equals​(java.lang.Object o)
        Checks if two unit objects are equal.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        o - another unit object. If null, the units are not equal.
        Returns:
        true if the object has the same type and value.
      • equals

        public boolean equals​(GUnit unit)
        Checks if two unit objects are equal.
        Parameters:
        unit - another size object. If null, the sizes are not equal.
        Returns:
        true if the object has the same type and value.
      • clone

        public GUnit clone()
        Clones this instance.
        Overrides:
        clone in class java.lang.Object
        Returns:
        As cloned instance of GUnit.
      • paramString

        protected java.lang.String paramString()
        Returns the parameter string representing the state of this event. This string is useful for debugging. Super-classes adds extra information to the string by preceding it with a comma followed by the extra information.
        Returns:
        the parameter string of this unit object.
      • getValue

        public double getValue()
        Returns the double value for the unit.
        Returns:
        The value for PT, PX, %, DLG, EX and EM, or Double.NaN otherwise.
      • toString

        public java.lang.String toString()
        Returns a string representation of this class instance.
        Overrides:
        toString in class java.lang.Object
        Returns:
        a string representation of this class instance.
      • getCSSValue

        public java.lang.String getCSSValue()
        Gets the unit as a CSS value. Formula and percent is NOT accepted and returns null along with a warning logging.
      • append

        public void append​(SendTransaction trans)
        Appends the unit object to a transaction.
        Parameters:
        trans - The transaction.
      • validate

        public java.lang.String validate()
                                  throws GUnitException
        Validates an expression formula.
        Throws:
        GUnitException - For validation errors.
      • getPixelValue

        public double getPixelValue​(UIComp comp,
                                    boolean isHorz)
        Calculates the unit into a pixel value using the font information.
        Parameters:
        comp - The component.
        isHorz - Flag indicating this is a horizontal value (significant only for % or DLG).
        Returns:
        The pixel value, or Double.NaN if the expression is invalid.
        Throws:
        java.lang.IllegalStateException - If this is called outside of the Designer.
      • isPureCSS

        public boolean isPureCSS()
        Checks if this is a valid CSS pure unit, e.g. not DLG, Formula.
      • isContainerDependent

        public boolean isContainerDependent()
        Returns if this value is dependent on the container size, i.e. value is a percent value or a formula containing percent.