grafix.graficos.ConstrutorGrafico.java Source code

Java tutorial

Introduction

Here is the source code for grafix.graficos.ConstrutorGrafico.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;

import grafix.graficos.eixos.*;
import grafix.graficos.elementos.*;
import grafix.principal.*;
import grafix.telas.*;
import java.awt.*;
import java.util.Date;
import java.util.Vector;
import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.plot.*;
import org.jfree.data.time.Day;

public class ConstrutorGrafico {

    private JanelaGraficos janela;

    public ConstrutorGrafico(JanelaGraficos janela) {
        this.janela = janela;
    }

    public JFreeChart criarJFreeChart() {
        //*debug*/ System.out.println("[PROFILE] criarJFreeChart() - " + janela.getAcao().getCodAcao());
        DateAxis domainAxis = getEixoHorizontal();
        CombinedDomainXYPlot cplot = new CombinedDomainXYPlot(domainAxis);
        adicionarPlots(cplot);
        configurarEixoHorizontal(domainAxis);
        JFreeChart chart = new JFreeChart(cplot);
        configurarGrafico(chart);
        return chart;
    }

    private void configurarEixoHorizontal(DateAxis domainAxis) {
        if (janela.getIntervaloExibicao().isEspacoPrevisao()) {
            Day ultimoDia = janela.getAcao().getData(janela.getAcao().getNumeroRegistros() - 1,
                    Controle.getConfiguracoesUsuario().isExibeSomenteDiasUteis());
            Day ultimoDiaPrevisao = (Day) ultimoDia.next();
            for (int i = 0; i < Controle.getConfiguracoesGrafix().getEspacoPrevisao() - 1; i++) {
                ultimoDiaPrevisao = (Day) ultimoDiaPrevisao.next();
            }
            domainAxis.setMaximumDate(ultimoDiaPrevisao.getSerialDate().toDate());
        }
    }

    private void configurarGrafico(JFreeChart chart) {
        chart.removeLegend();
        chart.setBackgroundPaint(Color.white);
    }

    private void adicionarPlots(final CombinedDomainXYPlot cplot) {
        cplot.setGap(8.0);
        XYPlot plotCandles = janela.getConfiguracoesJanela().getCandles().getPlot(janela);
        XYPlot plotVolumes = janela.getConfiguracoesJanela().getVolume().getPlot(janela);
        XYPlot[] plotsExtras = gerarTodosOsPlotsExtras();
        if (plotCandles != null) {
            cplot.add(plotCandles, janela.getConfiguracoesJanela().getCandles().getTamanho());
        }
        if (plotVolumes != null) {
            cplot.add(plotVolumes, janela.getConfiguracoesJanela().getVolume().getTamanho());
        }
        for (int i = 0; i < plotsExtras.length; i++) {
            if (plotsExtras[i] != null) {
                cplot.add(plotsExtras[i], 1); /////////////// Tamanho fixo em 1 !!!!!!!!!!!!!!!!!!!!!!
            }
        }
    }

    private XYPlot[] gerarTodosOsPlotsExtras() {
        Vector<EixoExtra> eixosExtras = janela.getConfiguracoesJanela().getEixosExtras();
        XYPlot[] plots = new XYPlot[eixosExtras.size()];
        for (int i = 0; i < plots.length; i++) {
            plots[i] = eixosExtras.get(i).getPlot(janela);
        }
        return plots;
    }

    private DateAxis getEixoHorizontal() {
        if (Controle.getConfiguracoesUsuario().isExibeSomenteDiasUteis()) {
            return new EixoHorizontalComLabels(janela);
        } else {
            return new EixoHorizontal(janela);
        }
    }

    //    static public void aplicarZoomNormal(JanelaGraficos umaJanela, DateAxis domainAxis) {  // Podia ser o comando ????
    //        boolean isExibeSomenteDiasUteis = Controle.getConfiguracoesUsuario().isExibeSomenteDiasUteis();
    //        Acao acao = umaJanela.getAcao();
    //        RegistroDiario regIni;
    //        if(Controle.getConfiguracoesGrafix().getZoomNormal() > acao.getNumeroRegistros()) {
    //            regIni = acao.getRegistro(0);
    //        } else {
    //            regIni = acao.getRegistro(acao.getNumeroRegistros() - Controle.getConfiguracoesGrafix().getZoomNormal());
    //        }
    //        RegistroDiario regFim = acao.getRegistro(acao.getNumeroRegistros() - 1);
    //        Day inicio = regIni.getData(isExibeSomenteDiasUteis);
    //        Day fim = (Day)regFim.getData(isExibeSomenteDiasUteis).next();
    //        domainAxis.setRange(inicio.getSerialDate().toDate(), fim.getSerialDate().toDate());
    //   }

}