package hep.aida.ref.plotter.style.editor;
/*
 * StylePreviewPanel.java
 *
 * Created on June 14, 2005, 1:59 PM
 */

import hep.aida.IAnalysisFactory;
import hep.aida.IDataPoint;
import hep.aida.IDataPointSet;
import hep.aida.IHistogram1D;
import hep.aida.IHistogram2D;
import hep.aida.IPlotter;
import hep.aida.IPlotterRegion;
import hep.aida.IPlotterStyle;
import hep.aida.ref.plotter.DummyPlotter;
import hep.aida.ref.plotter.PlotterRegion;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.border.EtchedBorder;
/**
 *
 * @author  serbo
 */
public class StylePreviewCreator {
    private static final Class[] possibleTypes = { IHistogram1D.class, IHistogram2D.class, IDataPointSet.class };
    
    private IPlotter plotter;
    private IHistogram1D hist1D;
    private IHistogram2D hist2D;
    private IDataPointSet dps;
    
    private int nEvents1D = 1000;
    private int nx1D = 50;
    private double xMin1D = 0;
    private double xMax1D = 100;
    
    private int nEvents2D = 1000;
    private int nx2D = 50;
    private double xMin2D = 0;
    private double xMax2D = 100;
    private int ny2D = 50;
    private double yMin2D = 0;
    private double yMax2D = 100;
    
    private int nEventsDps2D = 20;
    private double xMinDps2D = 1;
    private double xMaxDps2D = 21;
    private double yMinDps2D = 10;
    private double yMaxDps2D = 210;
    
    private JComponent previewPanel;
    private Dimension previewPanelDimension = new Dimension(-1, -1);
    private Logger styleLogger;
    
    public static Class[] getPossiblePreviewTypes() { return possibleTypes; }
    
    /** Creates a new instance of StylePreviewPanel */
    public StylePreviewCreator() {
        this(null);
    }
    
    public StylePreviewCreator(ConfigurePreviewPanel configurePanel) {
        styleLogger = Logger.getLogger("hep.aida.ref.plotter.style.editor");
        setupPreviewCreator(configurePanel);
        init();
    }    
    
    public void setupPreviewCreator(ConfigurePreviewPanel configurePanel) {
        if (configurePanel == null) configurePanel = new ConfigurePreviewPanel();       
        readConfigurePanel(configurePanel);
        init();
    }
    
    private void readConfigurePanel(ConfigurePreviewPanel configurePanel) {
        boolean fit = configurePanel.previewFitRegion;
        Dimension d = null;
        if (!fit) d = new Dimension(configurePanel.previewWidth, configurePanel.previewHeight);
        else d = new Dimension(-1, -1);
        setPreviewPanelDimension(d);

        nEvents1D = configurePanel.nEvents1D;
        nx1D = configurePanel.nx1D;
        xMin1D = configurePanel.xMin1D;
        xMax1D = configurePanel.xMax1D;
        
        nEvents2D = configurePanel.nEvents2D;
        nx2D = configurePanel.nx2D;
        ny2D = configurePanel.ny2D;
        xMin2D = configurePanel.xMin2D;
        xMax2D = configurePanel. xMax2D;     
        yMin2D = configurePanel.yMin2D;
        yMax2D = configurePanel.yMax2D;
        
        nEventsDps2D = configurePanel.nEventsDps2D;
        xMinDps2D = configurePanel.xMinDps2D;
        xMaxDps2D = configurePanel.  xMaxDps2D;  
        yMinDps2D = configurePanel.yMinDps2D;
        yMaxDps2D = configurePanel.  yMaxDps2D; 
        
    }
    
    private void init() {
        if (plotter != null) plotter.clearRegions();
        IAnalysisFactory af = IAnalysisFactory.create();
        plotter = af.createPlotterFactory().create();
        plotter.createRegions(1);
        
        // Create histograms
        try {
            hist1D = af.createHistogramFactory(null).createHistogram1D("Histogram 1D", nx1D, xMin1D, xMax1D);
            hist2D = af.createHistogramFactory(null).createHistogram2D("Histogram 2D", nx2D, xMin2D, xMax2D, ny2D, yMin2D, yMax2D);
            dps    = af.createDataPointSetFactory(null).create("DataPointSet", 2);
            
            Random rand = new Random();
            double x = 0;
            double y = 0;
            
            // fill 1D
            double xMean = (xMax1D + xMin1D)/2.;
            double xk = (xMax1D - xMin1D)/6.;
            for (int i=0; i 0 && previewPanelDimension.height > 0) {
                previewPanel.setPreferredSize(previewPanelDimension);
                //previewPanel.setMaximumSize(previewPanelDimension);
                //previewPanel.setMinimumSize(previewPanelDimension);
            }
            previewPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
        }
        return previewPanel;
    }
    
    public Dimension getPreviewPanelDimensiont() { return previewPanelDimension; }
    public void setPreviewPanelDimension(Dimension d) { previewPanelDimension = d; }
    
    
    // Updating thread for tests
    class UpdateThread extends Thread {
        IHistogram1D h;
        IPlotterStyle ps;
        Random rand = new Random();
        String scaling = "lin";
        
        public UpdateThread(IHistogram1D hist, IPlotterStyle ps) {
            this.h = hist;
            this.ps = ps;
        }
        public void run() {
            while (true) {
                try {
                    Thread.sleep(4000);
                    //for (int i=0; i<100; i++) h.fill(rand.nextGaussian());
                    
                    if (scaling.equals("lin")) scaling = "log";
                    else scaling = "lin";
                    ps.yAxisStyle().setScaling(scaling);
                } catch (Exception e) { e.printStackTrace(); }
            }
        }
    }
    
    
    
    public static void main(String[] args) throws Exception {
        //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        //LookAndFeelTweaks.tweak();
        
        JFrame frame = new JFrame("PropertySheet");
        frame.getContentPane().setLayout(new BorderLayout());
        
        IPlotterStyle style = IAnalysisFactory.create().createPlotterFactory().createPlotterStyle();
        
        StylePreviewCreator spc = new StylePreviewCreator();
        frame.getContentPane().add("Center", spc.getPreviewPanel(style,possibleTypes[0]));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setSize(600, 500);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        frame.setLocation( (d.width-frame.getSize().width )/2, (d.height-frame.getSize().height )/2 );
        frame.setVisible(true);
    }
    
}

 

Ads help maintain this website.