/* DialRange.java Purpose: Description: History: Jun 25, 2009 10:12:58 AM, Created by henrichen Copyright (C) 2009 Potix Corporation. All Rights Reserved. {{IS_RIGHT This program is distributed under LGPL Version 2.0 in the hope that it will be useful, but WITHOUT ANY WARRANTY. }}IS_RIGHT */ package org.zkoss.zul; import java.io.Serializable; import org.zkoss.lang.Objects; import org.zkoss.zul.event.ChartDataEvent; import org.zkoss.zul.event.DialChartDataEvent; /** * Color range to be marked in {@link DialModelScale}. * @author henrichen * */ public class DialModelRange implements Serializable { private DialModelScale _scale; private double _lower; private double _upper; private String _color; private int[] _RGB = new int[] { 0x00, 0x00, 0xFF }; //background red, green, blue (0 ~ 255, 0 ~ 255, 0 ~ 255) private double _innerRadius; private double _outerRadius; /*package*/ DialModelRange(DialModelScale scale) { _scale = scale; } /** * Setup the DailModel range. * @param lower the lower bound of the range in the scale. * @param upper the upper bound of the range in the scale. * @param color the color in #RRGGBB format (hexadecimal); default to blue. * @param innerRadius the inner radius percentage(0 ~ 1) of the range; default to 0.7. * @param outerRadius the outer radius percentage(0 ~ 1) of the range; default to 0.8; */ public void setRange(double lower, double upper, String color, double innerRadius, double outerRadius) { _lower = lower; _upper = upper; setRangeColor(color); _innerRadius = innerRadius; _outerRadius = outerRadius; } /** * Set the range color of the dial range. * @param color in #RRGGBB format (hexadecimal). */ public void setRangeColor(String color) { if (Objects.equals(color, _color)) { return; } _color = color; if (_color == null) { _RGB = null; } else { _RGB = new int[3]; Chart.decode(_color, _RGB); } _scale.fireEvent(ChartDataEvent.CHANGED, DialChartDataEvent.RANGE_COLOR, color); } /** * Get the background color of the dial frame (in string as #RRGGBB). * null means default. */ public String getRangeColor() { return _color; } /** * Get the background color of the dial frame in int array (0: red, 1: green, 2:blue). * null means default. */ public int[] getRangeRGB() { return _RGB; } /** * Sets the inner radius percentage(0 ~ 1) of the dial range; default to 0.7. * @param radius the inner radius percentage(0 ~ 1) of the dial range; default to 0.7. */ public void setInnerRadius(double radius) { _innerRadius = radius; _scale.fireEvent(ChartDataEvent.CHANGED, DialChartDataEvent.INNER_RADIUS, radius); } /** * Return the inner radius percentage(0 ~ 1) of the dial range; default to 0.7. * @return the inner radius percentage(0 ~ 1) of the dial range; default to 0.7. */ public double getInnerRadius() { return _innerRadius; } /** * Sets the outer radius percentage(0 ~ 1) of the dial range; default to 0.8. * @param radius the outer radius percentage(0 ~ 1) of the dial range; default to 0.8. */ public void setOuterRadius(double radius) { _outerRadius = radius; _scale.fireEvent(ChartDataEvent.CHANGED, DialChartDataEvent.OUTER_RADIUS, radius); } /** * Return the outer radius percentage(0 ~ 1) of the dial range; default to 0.8. * @return the outer radius percentage(0 ~ 1) of the dial range; default to 0.8. */ public double getOuterRadius() { return _outerRadius; } /** * Returns the lower bound in scale of this colored range. * @return the lower bound in scale of this colored range. */ public double getLowerBound() { return _lower; } /** * Sets the lower bound in scale of this colored range. * @param lower the specified lower bound in the scale. */ public void setLowerBound(double lower) { if (Double.compare(_lower, lower) != 0) { _lower = lower; _scale.fireEvent(ChartDataEvent.CHANGED, DialChartDataEvent.LOWER_BOUND, lower); } } /** * Returns the upper bound in scale of this colored range. * @return the upper bound in scale of this colored range. */ public double getUpperBound() { return _upper; } /** * Sets the upper bound in scale of this colored range. * * @param upper the upper bound */ public void setUpperBound(double upper) { if (Double.compare(_upper, upper) != 0) { _upper = upper; _scale.fireEvent(ChartDataEvent.CHANGED, DialChartDataEvent.UPPER_BOUND, upper); } } }