Package net.sf.jasperreports.charts.design

Source Code of net.sf.jasperreports.charts.design.JRDesignMeterPlot

/*
* JasperReports - Free Java Reporting Library.
* Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved.
* http://www.jaspersoft.com
*
* Unless you have purchased a commercial license agreement from Jaspersoft,
* the following license terms apply:
*
* This program is part of JasperReports.
*
* JasperReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JasperReports 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.jasperreports.charts.design;

import java.awt.Color;
import java.util.ArrayList;
import java.util.Collection;

import net.sf.jasperreports.charts.JRDataRange;
import net.sf.jasperreports.charts.JRValueDisplay;
import net.sf.jasperreports.charts.base.JRBaseMeterPlot;
import net.sf.jasperreports.charts.base.JRBaseValueDisplay;
import net.sf.jasperreports.charts.type.MeterShapeEnum;
import net.sf.jasperreports.charts.util.JRMeterInterval;
import net.sf.jasperreports.engine.JRChart;
import net.sf.jasperreports.engine.JRChartPlot;
import net.sf.jasperreports.engine.JRConstants;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRFont;
import net.sf.jasperreports.engine.base.JRBaseFont;

/**
* A meter plot that displays a single value against a range of values.  The
* range can be further subdivided into multiple color coded regions.
*
* @author Barry Klawans (bklawans@users.sourceforge.net)
* @version $Id: JRDesignMeterPlot.java 3676 2010-04-02 09:35:07Z shertage $
*/
public class JRDesignMeterPlot extends JRBaseMeterPlot
{


  /**
   *
   */
  private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;
 
  public static final String PROPERTY_DATA_RANGE = "dataRange";
 
  public static final String PROPERTY_METER_ANGLE = "meterAngle";
 
  public static final String PROPERTY_METER_BACKGROUND_COLOR = "meterBackgroundColor";
 
  public static final String PROPERTY_NEEDLE_COLOR = "needleColor";
 
  public static final String PROPERTY_SHAPE = "shape";
 
  public static final String PROPERTY_TICK_COLOR = "tickColor";
 
  public static final String PROPERTY_TICK_INTERVAL = "tickInterval";
 
  public static final String PROPERTY_UNITS = "units";
 
  public static final String PROPERTY_VALUE_DISPLAY = "valueDisplay";
 
  public static final String PROPERTY_INTERVALS = "intervals";

  public static final String PROPERTY_TICK_LABEL_FONT = "tickLabelFont";
 

  /**
   * Construct a new meter plot by copying an existing one.
   *
   * @param meterPlot the plot to copy
   */
  public JRDesignMeterPlot(JRChartPlot meterPlot, JRChart chart)
  {
    super(meterPlot, chart);
  }

  /**
   * Sets the range of values that the meter can display.  Before changing
   * this for an existing meter you should clear any existing intervals to
   * ensure that you don't end up with intervals that are outside of the new
   * range.
   *
   * @param dataRange the range of values that the meter can display
   */
  public void setDataRange(JRDataRange dataRange) throws JRException
  {
    Object old = this.dataRange;
    this.dataRange = dataRange;
    getEventSupport().firePropertyChange(PROPERTY_DATA_RANGE, old, this.dataRange);
  }

  /**
   * Sets the value display formatting options.
   *
   * @param valueDisplay how to show the textual representation of the value
   */
  public void setValueDisplay(JRValueDisplay valueDisplay)
  {
    Object old = this.valueDisplay;
    this.valueDisplay = new JRBaseValueDisplay(valueDisplay, getChart());
    getEventSupport().firePropertyChange(PROPERTY_VALUE_DISPLAY, old, this.valueDisplay);
  }

  /**
   * @deprecated Replaced by {@link #setShape(MeterShapeEnum)}
   */
  public void setShape(byte shape) throws JRException
  {
    setShape(MeterShapeEnum.getByValue(shape));
  }

  /**
   * @deprecated Replaced by {@link #setShape(MeterShapeEnum)}
   */
  public void setShape(Byte shape) throws JRException
  {
    setShape(MeterShapeEnum.getByValue(shape));
  }

  /**
   * Sets the shape of the meter.  Must be one of
   * <code>MeterShapeEnum.CHORD</code>, <code>MeterShapeEnum.CIRCLE</code>,
   * <code>MeterShapeEnum.PIE</code> or <code>MeterShapeEnum.DIAL</code>.
   *
   * @param shape the shape of the meter
   * @throws JRException invalid shape was specified
   */
  public void setShape(MeterShapeEnum shape) throws JRException
  {
    if (shape != null && (shape.getValue() < 0 || shape.getValue() > MeterShapeEnum.DIAL.getValue()))
    {
      throw new JRException("Unknown shape for MeterPlot");
    }

    MeterShapeEnum old = this.shapeValue;
    this.shapeValue = shape;
    getEventSupport().firePropertyChange(PROPERTY_SHAPE, old, this.shapeValue);
  }

  /**
   * Adds an interval to the meter.  An interval is used to indicate a
   * section of the meter.
   *
   * @param interval the interval to add to the meter
   */
  public void addInterval(JRMeterInterval interval)
  {
    intervals.add(interval);
    getEventSupport().fireCollectionElementAddedEvent(PROPERTY_INTERVALS, interval, intervals.size() - 1);
  }

  /**
   * Removes all the intervals for the meter.
   */
  public void clearIntervals()
  {
    setIntervals(null);
  }

  /**
   * Sets the meter intervals.
   *
   * @param intervals the list of meter intervals ({@link JRMeterInterval} instances)
   * @see #addInterval(JRMeterInterval)
   */
  public void setIntervals(Collection intervals)
  {
    Object old = new ArrayList(this.intervals);
    this.intervals.clear();
    if (intervals != null)
    {
      this.intervals.addAll(intervals);
    }
    getEventSupport().firePropertyChange(PROPERTY_INTERVALS, old, this.intervals);
  }
 
  /**
   * @deprecated Replaced by {@link #setMeterAngle(Integer)}
   */
  public void setMeterAngle(int meterAngle)
  {
    setMeterAngle(Integer.valueOf(meterAngle));
  }

  /**
   * Sets the size of the meter face in degrees.
   *
   * @param meterAngle the size of the meter in degrees
   */
  public void setMeterAngle(Integer meterAngle)
  {
    Integer old = this.meterAngleInteger;
    this.meterAngleInteger = meterAngle;
    getEventSupport().firePropertyChange(PROPERTY_METER_ANGLE, old, this.meterAngleInteger);
  }

  /**
   * Sets the units string to use.  This string is appended to the value
   * when it is displayed.
   *
   * @param units the units string to use
   */
  public void setUnits(String units)
  {
    Object old = this.units;
    this.units = units;
    getEventSupport().firePropertyChange(PROPERTY_UNITS, old, this.units);
  }

  /**
   * @deprecated Replaced by {@link #setTickInterval(Double)}
   */
  public void setTickInterval(double tickInterval)
  {
    setTickInterval(new Double(tickInterval));
  }

  /**
   * Sets the space between tick marks on the face of the meter.  The
   * spacing is relative to the range of the meter.  If the meter is
   * displaying the range 100 to 200 and the tick interval is 20, four
   * tick marks will be shown, one each at 120, 140, 160 and 180.
   *
   * @param tickInterval the space between tick marks on the meter
   */
  public void setTickInterval(Double tickInterval)
  {
    Double old = this.tickIntervalDouble;
    this.tickIntervalDouble = tickInterval;
    getEventSupport().firePropertyChange(PROPERTY_TICK_INTERVAL, old, this.tickIntervalDouble);
  }

  /**
   * Sets the color to use for the meter face.
   *
   * @param meterBackgroundColor the color to use for the meter face
   */
  public void setMeterBackgroundColor(Color meterBackgroundColor)
  {
    Object old = this.meterBackgroundColor;
    this.meterBackgroundColor = meterBackgroundColor;
    getEventSupport().firePropertyChange(PROPERTY_METER_BACKGROUND_COLOR, old, this.meterBackgroundColor);
  }

  /**
   * Sets the color to use for the meter pointer.
   *
   * @param needleColor the color to use for the meter pointer
   */
  public void setNeedleColor(Color needleColor)
  {
    Object old = this.needleColor;
    this.needleColor = needleColor;
    getEventSupport().firePropertyChange(PROPERTY_NEEDLE_COLOR, old, this.needleColor);
  }

  /**
   * Sets the color to use when drawing tick marks on the meter.
   *
   * @param tickColor the color to use when drawing tick marks
   */
  public void setTickColor(Color tickColor)
  {
    Object old = this.tickColor;
    this.tickColor = tickColor;
    getEventSupport().firePropertyChange(PROPERTY_TICK_COLOR, old, this.tickColor);
  }
 
  /**
   * Sets the font to use when displaying the tick label.
   *
   * @param tickLabelFont the font to use when displaying the tick label
   */
  public void setTickLabelFont(JRFont tickLabelFont)
  {
    Object old = this.tickLabelFont;
    this.tickLabelFont = new JRBaseFont(getChart(), tickLabelFont);
    getEventSupport().firePropertyChange(PROPERTY_TICK_LABEL_FONT, old, this.tickLabelFont);
  }
 
}
TOP

Related Classes of net.sf.jasperreports.charts.design.JRDesignMeterPlot

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.