/******************************************************************************
* Product: Posterita Ajax UI *
* Copyright (C) 2007 Posterita Ltd. All Rights Reserved. *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* Posterita Ltd., 3, Draper Avenue, Quatre Bornes, Mauritius *
* or via info@posterita.org or http://www.posterita.org/ *
*****************************************************************************/
package org.adempiere.webui.component;
import java.awt.Color;
import org.zkoss.zk.ui.HtmlBasedComponent;
/**
* Utility function to support ZK functions.
*
* Provides functionsfor manipulating the CSS style for
* ZK components.
*
* @author Andrew Kimball
*
*/
public final class ZkCssHelper
{
/** Left text alignment CSS style property and value. */
public static final String STYLE_TEXT_ALIGN_LEFT = "text-align:left";
/** Right text alignment CSS style property and value. */
public static final String STYLE_TEXT_ALIGN_RIGHT = "text-align:right";
/** Centre text alignment CSS style property and value. */
public static final String STYLE_TEXT_ALIGN_CENTER = "text-align:center";
/** CSS style property for color. */
public static final String STYLE_COLOR = "color:#";
/** CSS style property for background color. */
public static final String STYLE_BACKGROUND_COLOR = "background-color:#";
/**
* Private default constructor.
* This exists purely for conformance and should not be used.
*/
private ZkCssHelper()
{
}
/**
* Obtains the string description of the RGB components of a <code>color</code>.
* The returned string is suitable for using in CSS styles.
* The red, green and blue components are formatted as hexadecimal characters.
* Each component is in the range 00 to FF.
* The entire string is therefore
* a 6 character string ranging from "000000" to "FFFFFF".
*
* @param color The color for which the string is to be created
* @return The string representation of the colour's RGB components.
*/
public static String createHexColorString(Color color)
{
String colorString = String.format("%02X%02X%02X",
color.getRed(),
color.getGreen(),
color.getBlue());
return colorString;
}
/**
* Adds a new CSS style to <code>component</code>.
* The ";" prefix is not required.
*
* @param component the HTML based ZK component whose CSS style is to be modified
* @param style CSS style string to append to current style
*
* @see #setStyle(String)
*/
public static void appendStyle(HtmlBasedComponent component, String style)
{
String oldStyle = "";
if (component.getStyle() != null)
{
oldStyle = component.getStyle();
}
component.setStyle(oldStyle
+ "; " + style);
return;
}
/**
* Adds a CSS color style to <code>component</code>.
*
* The current style of the component is retained.
*
* @param component the HTML based ZK component whose CSS style is to be modified
* @param color the color to be set
* @see #appendStyleBackgroundColor(HtmlBasedComponent, Color)
* @see #setStyleColor(HtmlBasedComponent, Color)
*/
public static void appendStyleColor(HtmlBasedComponent component, Color color)
{
String colorString = createHexColorString(color);
String colorStyleString = STYLE_COLOR + colorString;
appendStyle(component, colorStyleString);
return;
}
/**
* Sets CSS color style for <code>component</code>.
*
* Previous styles are removed.
*
* @param component the HTML based ZK component whose CSS style is to be modified
* @param color the color to be set
* @see #setStyleBackgroundColor(HtmlBasedComponent, Color)
* @see #appendStyleColor(HtmlBasedComponent, Color)
*/
public static void setStyleColor(HtmlBasedComponent component, Color color)
{
String colorString = createHexColorString(color);
String colorStyleString = STYLE_COLOR + colorString;
component.setStyle(colorStyleString);
return;
}
/**
* Adds a CSS background color style to <code>component</code>.
*
* The current style of the component is retained.
*
* @param component the HTML based ZK component whose CSS style is to be modified
* @param color the color to be set
* @see #appendStyleBackColor(HtmlBasedComponent, Color)
* @see #setStyleBackgroundColor(HtmlBasedComponent, Color)
*/
public static void appendStyleBackgroundColor(HtmlBasedComponent component, Color color)
{
String colorString = createHexColorString(color);
String colorStyleString = STYLE_BACKGROUND_COLOR + colorString;
appendStyle(component, colorStyleString);
return;
}
/**
* Sets CSS background color style for <code>component</code>.
*
* Previous styles are removed.
*
* @param component the HTML based ZK component whose CSS style is to be modified
* @param color the color to be set
* @see #appendStyleBackgroundColor(HtmlBasedComponent, Color)
* @see #setStyleColor(HtmlBasedComponent, Color)
*/
public static void setStyleBackgroundColor(HtmlBasedComponent component, Color color)
{
String colorString = createHexColorString(color);
String colorStyleString = STYLE_BACKGROUND_COLOR + colorString;
component.setStyle(colorStyleString);
return;
}
}