grafix.graficos.eixos.EixoVolume.java Source code

Java tutorial

Introduction

Here is the source code for grafix.graficos.eixos.EixoVolume.java

Source

/*
  Copyright (C) 2001-2012, Joao Medeiros, Paulo Vilela (grafix2.com)
      
  Este arquivo  parte do programa Grafix2.com
      
  Grafix2.com  um software livre; voc pode redistribui-lo e/ou 
  modifica-lo dentro dos termos da Licena Pblica Geral GNU como 
  publicada pela Fundao do Software Livre (FSF); na verso 2 da 
  Licena.
    
  Este programa  distribuido na esperana que possa ser til, 
  mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAO a qualquer
  MERCADO ou APLICAO EM PARTICULAR. Veja a
  Licena Pblica Geral GNU para maiores detalhes.
    
  Voc deve ter recebido uma cpia da Licena Pblica Geral GNU
  junto com este programa, se no, veja uma cpia em
  <http://www.gnu.org/licenses/>
      
 */

package grafix.graficos.eixos;

import grafix.graficos.CandlesToolTipGenerator;
import grafix.graficos.IntervaloExibicao;
import grafix.principal.Controle;
import grafix.principal.RegistroDiario;
import grafix.telas.JanelaGraficos;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.IntervalXYDataset;

public class EixoVolume extends Eixo {

    public EixoVolume() {
        this.setTamanho(1);
        this.setNomeEixo("volume");
    }

    protected void completarPlot(final XYPlot plot, final JanelaGraficos janela) {
        IntervalXYDataset dataVolume = criarVolumeDataset(janela);
        XYBarRenderer volumeRenderer = new XYBarRenderer();
        volumeRenderer.setSeriesPaint(0, Controle.getConfiguracoesUsuario().getCorVolume());
        volumeRenderer.setDrawBarOutline(false);
        volumeRenderer.setMargin((double) Controle.getConfiguracoesUsuario().getEspacColunasVolume() / 10);
        volumeRenderer.setToolTipGenerator(new CandlesToolTipGenerator(janela));
        plot.setDataset(indices.size(), dataVolume);
        plot.setRenderer(indices.size(), volumeRenderer);
    }

    private IntervalXYDataset criarVolumeDataset(JanelaGraficos janela) {
        TimeSeries serie = new TimeSeries(janela.getAcao().getCodAcao() + " (volume)", Day.class);
        IntervaloExibicao intervalo = janela.getIntervaloExibicao();
        for (int i = intervalo.getInicio(); i < intervalo.getFim(); i++) {
            RegistroDiario reg = janela.getAcao().getRegistro(i);
            serie.add(reg.getData(Controle.getConfiguracoesUsuario().isExibeSomenteDiasUteis()),
                    reg.getVolumeDinheiro() / 1000);
        }
        return new TimeSeriesCollection(serie);
    }
}