Package net.sf.jasperreports.engine.base

Source Code of net.sf.jasperreports.engine.base.JRBaseChartPlot$JRBaseSeriesColor

/*
* 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.engine.base;

import java.awt.Color;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;

import net.sf.jasperreports.charts.JRCategoryAxisFormat;
import net.sf.jasperreports.engine.JRChart;
import net.sf.jasperreports.engine.JRChartPlot;
import net.sf.jasperreports.engine.JRConstants;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport;
import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport;
import net.sf.jasperreports.engine.util.JRStyleResolver;

import org.jfree.chart.plot.PlotOrientation;


/**
* @author Teodor Danciu (teodord@users.sourceforge.net)
* @version $Id: JRBaseChartPlot.java 3939 2010-08-20 09:52:00Z teodord $
*/
public abstract class JRBaseChartPlot implements JRChartPlot, Serializable, JRChangeEventsSupport
{


  /**
   *
   */
  private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;
 
  public static final String PROPERTY_BACKCOLOR = "backcolor";
 
  public static final String PROPERTY_BACKGROUND_ALPHA = "backgroundAlpha";
 
  public static final String PROPERTY_FOREGROUND_ALPHA = "foregroundAlpha";
 
  public static final String PROPERTY_LABEL_ROTATION = "labelRotation";
 
  public static final String PROPERTY_ORIENTATION = "orientation";
 
  public static final String PROPERTY_SERIES_COLORS = "seriesColors";
 
  protected JRChart chart;
  protected Color backcolor;
  protected PlotOrientation orientation = PlotOrientation.VERTICAL;
  protected Float backgroundAlphaFloat;
  protected Float foregroundAlphaFloat;
  protected Double labelRotationDouble;
  protected SortedSet  seriesColors;


  /**
   *
   */
  protected JRBaseChartPlot(JRChartPlot plot, JRChart chart)
  {
    this.chart = chart;

    if (plot != null)
    {
      backcolor = plot.getOwnBackcolor();
      orientation = plot.getOrientation();
      backgroundAlphaFloat = plot.getBackgroundAlphaFloat();
      foregroundAlphaFloat = plot.getForegroundAlphaFloat();
      labelRotationDouble = plot.getLabelRotationDouble();
      seriesColors = new TreeSet(plot.getSeriesColors());
    }
    else
    {
      seriesColors = new TreeSet();
    }
  }


  /**
   *
   */
  protected JRBaseChartPlot(JRChartPlot plot, JRBaseObjectFactory factory)
  {
    factory.put(plot, this);

    chart = (JRChart)factory.getVisitResult(plot.getChart());

    backcolor = plot.getOwnBackcolor();
    orientation = plot.getOrientation();
    backgroundAlphaFloat = plot.getBackgroundAlphaFloat();
    foregroundAlphaFloat = plot.getForegroundAlphaFloat();
    labelRotationDouble = plot.getLabelRotationDouble();
    seriesColors = new TreeSet(plot.getSeriesColors());
  }

 
  /**
   *
   */
  public JRChart getChart()
  {
    return chart;
  }

  /**
   *
   */
  public Color getBackcolor()
  {
    return JRStyleResolver.getBackcolor(this);
  }

  /**
   *
   */
  public Color getOwnBackcolor()
  {
    return this.backcolor;
  }

  /**
   *
   */
  public void setBackcolor(Color backcolor)
  {
    Object old = this.backcolor;
    this.backcolor = backcolor;
    getEventSupport().firePropertyChange(PROPERTY_BACKCOLOR, old, this.backcolor);
  }

  /**
   *
   */
  public PlotOrientation getOrientation()
  {
    return orientation;
  }

  /**
   *
   */
  public void setOrientation(PlotOrientation orientation)
  {
    Object old = this.orientation;
    this.orientation = orientation;
    getEventSupport().firePropertyChange(PROPERTY_ORIENTATION, old, this.orientation);
  }

  /**
   * @deprecated Replaced by {@link #getBackgroundAlphaFloat()}
   */
  public float getBackgroundAlpha()
  {
    return backgroundAlphaFloat == null ? 1f : backgroundAlphaFloat.floatValue();
  }

  /**
   * @deprecated Replaced by {@link #setBackgroundAlpha(Float)}
   */
  public void setBackgroundAlpha(float backgroundAlpha)
  {
    setBackgroundAlpha(new Float(backgroundAlpha));
  }

  /**
   * @deprecated Replaced by {@link #getForegroundAlphaFloat()}
   */
  public float getForegroundAlpha()
  {
    return foregroundAlphaFloat == null ? 1f : foregroundAlphaFloat.floatValue();
  }

  /**
   * @deprecated Replaced by {@link #setForegroundAlpha(Float)}
   */
  public void setForegroundAlpha(float foregroundAlpha)
  {
    setForegroundAlpha(new Float(foregroundAlpha));
  }

  /**
   * @deprecated Replaced by {@link #getLabelRotationDouble()}
   */
  public double getLabelRotation()
  {
    return labelRotationDouble == null ? 0d : labelRotationDouble.doubleValue();
  }
 
  /**
   * @deprecated Replaced by {@link #setLabelRotation(Double)}
   */
  public void setLabelRotation(double labelRotation)
  {
    setLabelRotation(new Double(labelRotation));
  }
 
  /**
   *
   */
  public Float getBackgroundAlphaFloat()
  {
    return backgroundAlphaFloat;
  }

  /**
   *
   */
  public void setBackgroundAlpha(Float backgroundAlpha)
  {
    Float old = this.backgroundAlphaFloat;
    this.backgroundAlphaFloat = backgroundAlpha;
    getEventSupport().firePropertyChange(PROPERTY_BACKGROUND_ALPHA, old, this.backgroundAlphaFloat);
  }

  /**
   *
   */
  public Float getForegroundAlphaFloat()
  {
    return foregroundAlphaFloat;
  }

  /**
   *
   */
  public void setForegroundAlpha(Float foregroundAlpha)
  {
    Float old = this.foregroundAlphaFloat;
    this.foregroundAlphaFloat = foregroundAlpha;
    getEventSupport().firePropertyChange(PROPERTY_FOREGROUND_ALPHA, old, this.foregroundAlphaFloat);
  }

  /**
   * Gets the angle in degrees to rotate the data axis labels.  The range is -360 to 360.  A positive value angles
   * the label so it reads downwards wile a negative value angles the label so it reads upwards.  Only charts that
   * use a category based axis (such as line or bar charts) support label rotation.
   * @deprecated Replaced by {@link JRCategoryAxisFormat#getCategoryAxisTickLabelRotation()}.
   */
  public Double getLabelRotationDouble()
  {
    return labelRotationDouble;
  }
 
  /**
   * Sets the angle in degrees to rotate the data axis labels.  The range is -360 to 360.  A positive value angles
   * the label so it reads downwards wile a negative value angles the label so it reads upwards.  Only charts that
   * use a category based axis (such as line or bar charts) support label rotation.
   * @deprecated Replaced by {@link JRCategoryAxisFormat#setCategoryAxisTickLabelRotation(Double)}.
   */
  public void setLabelRotation(Double labelRotation)
  {
    Double old = this.labelRotationDouble;
    this.labelRotationDouble = labelRotation;
    getEventSupport().firePropertyChange(PROPERTY_LABEL_ROTATION, old, this.labelRotationDouble);
  }
 
 
  /**
   * Returns a list of all the defined series colors.  Every entry in the list is of type JRChartPlot.JRSeriesColor.
   * If there are no defined series colors this method will return an empty list, not null.
   */
  public SortedSet getSeriesColors()
  {
    return seriesColors;
  }
 
  /**
   * Removes all defined series colors.
   */
  public void clearSeriesColors()
  {
    setSeriesColors(null);
  }
 
  /**
   * Adds the specified series color to the plot.
   */
  public void addSeriesColor(JRSeriesColor seriesColor)
  {
    seriesColors.add(seriesColor);
    getEventSupport().fireCollectionElementAddedEvent(PROPERTY_SERIES_COLORS,
        seriesColor, seriesColors.size() - 1);
  }
 
  public void setSeriesColors(Collection colors)
  {
    Object old = new TreeSet(seriesColors);
    seriesColors.clear();
    if (colors != null)
    {
      seriesColors.addAll(colors);
    }
    getEventSupport().firePropertyChange(PROPERTY_SERIES_COLORS, old, seriesColors);
  }
 
  public static class JRBaseSeriesColor implements JRChartPlot.JRSeriesColor, Serializable, Comparable
  {
    /**
     *
     */
    private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;
   
    protected int seriesOrder = -1;
    protected Color color;
   
    public JRBaseSeriesColor(int seriesOrder, Color color)
    {
      this.seriesOrder = seriesOrder;
      this.color = color;
    }
   
    /**
     * Returns the series number (0 based) that this color applies to.
     */
    public int getSeriesOrder()
    {
      return seriesOrder;
    }
   
    /**
     * Returns the color to use for this series.
     */
    public Color getColor()
    {
      return color;
    }

    public int compareTo(Object obj) {
      if (obj == null)
      {
        throw new IllegalArgumentException();
      }
     
      return seriesOrder - ((JRBaseSeriesColor)obj).getSeriesOrder();
    }
   
    public Object clone()
    {
      try
      {
        return super.clone();
      }
      catch (CloneNotSupportedException e)
      {
        throw new JRRuntimeException(e);
      }
    }
  }
 

  /**
   *
   */
  public Object clone()
  {
    JRBaseChartPlot clone = null;

    try
    {
      clone = (JRBaseChartPlot)super.clone();
    }
    catch (CloneNotSupportedException e)
    {
      throw new JRRuntimeException(e);
    }
   
    if (seriesColors != null)
    {
      clone.seriesColors = new TreeSet();
      for(Iterator it = seriesColors.iterator(); it.hasNext();)
      {
        clone.seriesColors.add(((JRChartPlot.JRSeriesColor)it.next()).clone());
      }
    }
   
    return clone;
  }


  /**
   *
   */
  public Object clone(JRChart parentChart)
  {
    JRBaseChartPlot clone = (JRBaseChartPlot)this.clone();
   
    clone.chart = parentChart;
   
    return clone;
  }


  private transient JRPropertyChangeSupport eventSupport;
 
  public JRPropertyChangeSupport getEventSupport()
  {
    synchronized (this)
    {
      if (eventSupport == null)
      {
        eventSupport = new JRPropertyChangeSupport(this);
      }
    }
   
    return eventSupport;
  }
 
  /*
   * These fields are only for serialization backward compatibility.
   */
  private int PSEUDO_SERIAL_VERSION_UID = JRConstants.PSEUDO_SERIAL_VERSION_UID; //NOPMD
  /**
   * @deprecated
   */
  private float backgroundAlpha = 1;
  /**
   * @deprecated
   */
  private float foregroundAlpha = 1;
  /**
   * @deprecated
   */
  private double labelRotation = 0.0;
 
  private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
  {
    in.defaultReadObject();
    if (PSEUDO_SERIAL_VERSION_UID < JRConstants.PSEUDO_SERIAL_VERSION_UID_3_1_3)
    {
      backgroundAlphaFloat = new Float(backgroundAlpha);
      foregroundAlphaFloat = new Float(foregroundAlpha);
      labelRotationDouble = new Double(labelRotation);
    }
  }
 
}
TOP

Related Classes of net.sf.jasperreports.engine.base.JRBaseChartPlot$JRBaseSeriesColor

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.