16224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala/*
26224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Copyright 2012 AndroidPlot.com
36224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *
46224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    Licensed under the Apache License, Version 2.0 (the "License");
56224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    you may not use this file except in compliance with the License.
66224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    You may obtain a copy of the License at
76224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *
86224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *        http://www.apache.org/licenses/LICENSE-2.0
96224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *
106224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    Unless required by applicable law or agreed to in writing, software
116224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    distributed under the License is distributed on an "AS IS" BASIS,
126224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    See the License for the specific language governing permissions and
146224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    limitations under the License.
156224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala */
166224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
176224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalapackage com.androidplot.demos;
186224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
196224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.app.Activity;
206224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.graphics.Color;
216224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.graphics.DashPathEffect;
226224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.graphics.Paint;
236224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.os.Bundle;
246224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.widget.CheckBox;
256224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.widget.CompoundButton;
266224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.util.PixelUtils;
276224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.xy.XYSeries;
286224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.ui.*;
296224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.xy.*;
306224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
316224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport java.text.DecimalFormat;
326224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport java.text.FieldPosition;
336224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport java.text.NumberFormat;
346224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport java.text.ParsePosition;
356224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport java.util.Arrays;
366224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
376224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala/**
386224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Demonstration of the usage of Marker and RectRegion.
396224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala */
406224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalapublic class XYRegionExampleActivity extends Activity {
416224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
426224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private static final float HOME_RUN_DIST = 325;
436224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private static final int LINE_THICKNESS_DP = 2;
446224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private static final int POINT_SIZE_DP = 6;
456224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private XYPlot plot;
466224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private final Number[] timHits = {105, 252, 220, 350, 12, 250, 353};
476224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private final Number[] nickHits = {110, 191, 61, 371, 289, 101, 10};
486224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private final Number[] joeHits = {25, 375, 364, 128, 178, 289, 346};
496224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private final Number[] jamesHits = {250, 285, 295, 211, 311, 365, 241};
506224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private LineAndPointFormatter timFormatter;
516224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private LineAndPointFormatter nickFormatter;
526224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private LineAndPointFormatter joeFormatter;
536224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private LineAndPointFormatter jamesFormatter;
546224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
556224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private XYSeries timSeries;
566224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private XYSeries nickSeries;
576224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private XYSeries joeSeries;
586224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private XYSeries jamesSeries;
596224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
606224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private RectRegion shortRegion;
616224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private RectRegion warmupRegion;
626224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private RectRegion homeRunRegion;
636224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
646224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    //private XYRegionFormatter rf1;
656224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private XYRegionFormatter shortRegionFormatter;
666224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private XYRegionFormatter warmupRegionFormatter;
676224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private XYRegionFormatter homeRunRegionFormatter;
686224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    //private XYRegionFormatter rf5;
696224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
706224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private CheckBox timCB;
716224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private CheckBox nickCB;
726224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private CheckBox joeCB;
736224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private CheckBox jamesCB;
746224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
756224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private CheckBox r2CheckBox;
766224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private CheckBox r3CheckBox;
776224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private CheckBox r4CheckBox;
786224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
796224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    public void onCreate(Bundle savedInstanceState) {
806224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        super.onCreate(savedInstanceState);
816224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        setContentView(R.layout.xyregion_example);
826224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot = (XYPlot) findViewById(R.id.xyRegionExamplePlot);
836224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        timCB = (CheckBox) findViewById(R.id.s1CheckBox);
846224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        timCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
856224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            @Override
866224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
876224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                onS1CheckBoxClicked();
886224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            }
896224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        });
906224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
916224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        nickCB = (CheckBox) findViewById(R.id.s2CheckBox);
926224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        nickCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
936224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            @Override
946224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
956224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                onS2CheckBoxClicked();
966224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            }
976224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        });
986224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
996224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        joeCB = (CheckBox) findViewById(R.id.s3CheckBox);
1006224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        joeCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
1016224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            @Override
1026224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
1036224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                onS3CheckBoxClicked();
1046224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            }
1056224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        });
1066224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1076224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        jamesCB = (CheckBox) findViewById(R.id.s4CheckBox);
1086224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        jamesCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
1096224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            @Override
1106224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
1116224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                onS4CheckBoxClicked();
1126224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            }
1136224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        });
1146224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1156224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1166224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1176224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        r2CheckBox = (CheckBox) findViewById(R.id.r2CheckBox);
1186224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        r2CheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
1196224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            @Override
1206224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
1216224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                onCheckBoxClicked(r2CheckBox, timFormatter, shortRegionFormatter, shortRegion);
1226224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            }
1236224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        });
1246224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1256224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        r3CheckBox = (CheckBox) findViewById(R.id.r3CheckBox);
1266224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        r3CheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
1276224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            @Override
1286224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
1296224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                onCheckBoxClicked(r3CheckBox, nickFormatter, warmupRegionFormatter, warmupRegion);
1306224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            }
1316224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        });
1326224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1336224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        r4CheckBox = (CheckBox) findViewById(R.id.r4CheckBox);
1346224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        r4CheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
1356224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            @Override
1366224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
1376224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                onCheckBoxClicked(r4CheckBox, nickFormatter, homeRunRegionFormatter, homeRunRegion);
1386224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            }
1396224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        });
1406224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1416224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        seriesSetup();
1426224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        markerSetup();
1436224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        axisLabelSetup();
1446224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        regionSetup();
1456224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        makePlotPretty();
1466224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
1476224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1486224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private void onS1CheckBoxClicked() {
1496224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        if(timCB.isChecked()) {
1506224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            plot.addSeries(timSeries, timFormatter);
1516224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            r2CheckBox.setEnabled(true);
1526224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        } else {
1536224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            plot.removeSeries(timSeries);
1546224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            r2CheckBox.setEnabled(false);
1556224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        }
1566224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.redraw();
1576224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
1586224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1596224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private void onS2CheckBoxClicked() {
1606224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        if(nickCB.isChecked()) {
1616224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            plot.addSeries(nickSeries, nickFormatter);
1626224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            r3CheckBox.setEnabled(true);
1636224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            r4CheckBox.setEnabled(true);
1646224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        } else {
1656224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            plot.removeSeries(nickSeries);
1666224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            r3CheckBox.setEnabled(false);
1676224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            r4CheckBox.setEnabled(false);
1686224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        }
1696224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.redraw();
1706224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
1716224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1726224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private void onS3CheckBoxClicked() {
1736224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        if(joeCB.isChecked()) {
1746224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            plot.addSeries(joeSeries, joeFormatter);
1756224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        } else {
1766224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            plot.removeSeries(joeSeries);
1776224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        }
1786224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.redraw();
1796224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
1806224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1816224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private void onS4CheckBoxClicked() {
1826224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        if(jamesCB.isChecked()) {
1836224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            plot.addSeries(jamesSeries, jamesFormatter);
1846224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        } else {
1856224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            plot.removeSeries(jamesSeries);
1866224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        }
1876224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.redraw();
1886224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
1896224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
1906224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    /**
1916224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * Processes a check box event
1926224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * @param cb The checkbox event origin
1936224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * @param lpf LineAndPointFormatter with which rr and rf are to be added/removed
1946224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * @param rf The XYRegionFormatter with which rr should be rendered
1956224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * @param rr The RectRegion to add/remove
1966224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     */
1976224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private void onCheckBoxClicked(CheckBox cb, LineAndPointFormatter lpf,
1986224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                                   XYRegionFormatter rf, RectRegion rr) {
1996224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        if(cb.isChecked()) {
2006224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            lpf.removeRegion(rr);
2016224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        } else {
2026224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            lpf.addRegion(rr, rf);
2036224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        }
2046224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
2056224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2066224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    /**
2076224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * Cleans up the plot's general layout and color scheme
2086224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     */
2096224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private void makePlotPretty() {
2106224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // use a 2x5 grid with room for 10 items:
2116224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getLegendWidget().setTableModel(new DynamicTableModel(4, 2));
2126224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2136224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // add a semi-transparent black background to the legend
2146224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // so it's easier to see overlaid on top of our plot:
2156224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        Paint bgPaint = new Paint();
2166224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        bgPaint.setColor(Color.BLACK);
2176224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        bgPaint.setStyle(Paint.Style.FILL);
2186224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        bgPaint.setAlpha(40);
2196224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2206224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getLegendWidget().setBackgroundPaint(bgPaint);
2216224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2226224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // adjust the padding of the legend widget to look a little nicer:
2236224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getLegendWidget().setPadding(5, 5, 5, 5);
2246224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2256224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.setRangeValueFormat(new NumberFormat() {
2266224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            @Override
2276224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            public StringBuffer format(double value, StringBuffer buffer, FieldPosition field) {
2286224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                return new StringBuffer(value + "'");
2296224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            }
2306224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2316224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            @Override
2326224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            public StringBuffer format(long value, StringBuffer buffer, FieldPosition field) {
2336224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                throw new UnsupportedOperationException("Not yet implemented.");
2346224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            }
2356224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2366224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            @Override
2376224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            public Number parse(String string, ParsePosition position) {
2386224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                throw new UnsupportedOperationException("Not yet implemented.");
2396224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            }
2406224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        });
2416224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2426224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.setDomainValueFormat(new DecimalFormat("#"));
2436224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2446224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getLegendWidget().setWidth(PixelUtils.dpToPix(100), SizeLayoutType.FILL);
2456224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2466224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2476224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // adjust the legend size so there is enough room
2486224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // to draw the new legend grid:
2496224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        //plot.getLegendWidget().getHeightMetric().setLayoutType(SizeLayoutType.ABSOLUTE);
2506224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        //plot.getLegendWidget().getWidthMetric().setLayoutType(SizeLayoutType.ABSOLUTE);
2516224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        //plot.getLegendWidget().setSize(
2526224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        //    new SizeMetrics(70, SizeLayoutType.ABSOLUTE, 80, SizeLayoutType.ABSOLUTE));
2536224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2546224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // reposition the grid so that it rests above the bottom-left
2556224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // edge of the graph widget:
2566224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2576224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getLegendWidget().position(
2586224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                125,
2596224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                XLayoutStyle.ABSOLUTE_FROM_LEFT,
2606224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                65,
2616224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                YLayoutStyle.ABSOLUTE_FROM_TOP,
2626224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                AnchorPosition.LEFT_TOP);
2636224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2646224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getGraphWidget().setRangeLabelHorizontalOffset(-1);
2656224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2666224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // add enough space to ensure range value labels arent cut off on the left/right:
2676224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getGraphWidget().setRangeLabelWidth(25);
2686224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2696224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // add enough space to make sure domain value labels arent cut off on the bottom:
2706224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getGraphWidget().setDomainLabelWidth(15);
2716224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2726224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getGraphWidget().setDomainLabelVerticalOffset(-6);
2736224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2746224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.setRangeBoundaries(0, BoundaryMode.FIXED, 500, BoundaryMode.FIXED);
2756224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
2766224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2776224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    /**
2786224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * Create 4 XYSeries from the values defined above add add them to the plot.
2796224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * Also add some arbitrary regions.
2806224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     */
2816224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private void seriesSetup() {
2826224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2836224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2846224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // TIM
2856224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        timFormatter = new LineAndPointFormatter(
2866224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Color.rgb(100, 25, 20),
2876224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Color.rgb(100, 25, 20),
2886224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                null, null);
2896224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        timFormatter.getLinePaint().setStrokeWidth(PixelUtils.dpToPix(LINE_THICKNESS_DP));
2906224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        timFormatter.getVertexPaint().setStrokeWidth(PixelUtils.dpToPix(POINT_SIZE_DP));
2916224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2926224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        timSeries = new SimpleXYSeries(Arrays.asList(timHits),
2936224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Tim");
2946224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2956224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.addSeries(timSeries, timFormatter);
2966224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
2976224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // SERIES #2:
2986224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        nickFormatter = new LineAndPointFormatter(
2996224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Color.rgb(100, 25, 200),
3006224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Color.rgb(100, 25, 200),
3016224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                null, null);
3026224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        nickFormatter.getLinePaint().setStrokeWidth(PixelUtils.dpToPix(LINE_THICKNESS_DP));
3036224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        nickFormatter.getVertexPaint().setStrokeWidth(PixelUtils.dpToPix(POINT_SIZE_DP));
3046224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3056224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3066224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3076224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        nickSeries = new SimpleXYSeries(Arrays.asList(nickHits),
3086224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Nick");
3096224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3106224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.addSeries(nickSeries, nickFormatter);
3116224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3126224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // SERIES #3:
3136224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        joeFormatter = new LineAndPointFormatter(
3146224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Color.rgb(200, 25, 200),
3156224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Color.rgb(200, 25, 200),
3166224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                null, null);
3176224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        joeFormatter.getLinePaint().setStrokeWidth(PixelUtils.dpToPix(LINE_THICKNESS_DP));
3186224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        joeFormatter.getVertexPaint().setStrokeWidth(PixelUtils.dpToPix(POINT_SIZE_DP));
3196224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3206224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        joeSeries = new SimpleXYSeries(Arrays.asList(joeHits),
3216224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Joe");
3226224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3236224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.addSeries(joeSeries, joeFormatter);
3246224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3256224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // SERIES #4:
3266224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        jamesFormatter = new LineAndPointFormatter(
3276224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Color.rgb(220, 25, 20),
3286224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Color.rgb(220, 25, 20),
3296224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                null, null);
3306224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3316224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        jamesFormatter.getLinePaint().setStrokeWidth(PixelUtils.dpToPix(LINE_THICKNESS_DP));
3326224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        jamesFormatter.getVertexPaint().setStrokeWidth(PixelUtils.dpToPix(POINT_SIZE_DP));
3336224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3346224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        jamesSeries = new SimpleXYSeries(Arrays.asList(jamesHits),
3356224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala            SimpleXYSeries.ArrayFormat.Y_VALS_ONLY,"James");
3366224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.addSeries(jamesSeries, jamesFormatter);
3376224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3386224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.setRangeStep(XYStepMode.INCREMENT_BY_VAL, 100);
3396224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        //plot.setTicksPerRangeLabel(1);
3406224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 1);
3416224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
3426224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3436224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    /**
3446224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * Add some color coded regions to our axis labels.
3456224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     */
3466224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private void axisLabelSetup() {
3476224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // DOMAIN
3486224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getGraphWidget().addDomainAxisValueLabelRegion(
3496224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Double.NEGATIVE_INFINITY, 2, new AxisValueLabelFormatter(Color.GRAY));
3506224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getGraphWidget().addDomainAxisValueLabelRegion(
3516224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                2, Double.POSITIVE_INFINITY, new AxisValueLabelFormatter(Color.WHITE));
3526224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // RANGE
3536224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getGraphWidget().addRangeAxisValueLabelRegion(
3546224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Double.NEGATIVE_INFINITY, HOME_RUN_DIST, new AxisValueLabelFormatter(Color.RED));
3556224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.getGraphWidget().addRangeAxisValueLabelRegion(
3566224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                HOME_RUN_DIST, Double.POSITIVE_INFINITY, new AxisValueLabelFormatter(Color.GREEN));
3576224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
3586224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3596224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    /**
3606224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * Add some markers to our plot.
3616224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     */
3626224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private void markerSetup() {
3636224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3646224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        YValueMarker fenwayLfMarker = new YValueMarker(
3656224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                380,                                        // y-val to mark
3666224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                "Fenway Park LF Wall",                      // marker label
3676224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                new XPositionMetric(                        // object instance to set text positioning on the marker
3686224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                        PixelUtils.dpToPix(5),              // 5dp offset
3696224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                        XLayoutStyle.ABSOLUTE_FROM_RIGHT),  // offset origin
3706224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Color.BLUE,                                 // line paint color
3716224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                Color.BLUE);                                // text paint color
3726224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3736224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        YValueMarker attRfMarker = new YValueMarker(
3746224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                        309,                                        // y-val to mark
3756224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                        "ATT Park RF Wall",                         // marker label
3766224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                        new XPositionMetric(                        // object instance to set text positioning on the marker
3776224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                                PixelUtils.dpToPix(5),              // 5dp offset
3786224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                                XLayoutStyle.ABSOLUTE_FROM_RIGHT),  // offset origin
3796224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                        Color.CYAN,                                 // line paint color
3806224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                        Color.CYAN);                                // text paint color
3816224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3826224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3836224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        fenwayLfMarker.getTextPaint().setTextSize(PixelUtils.dpToPix(14));
3846224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        attRfMarker.getTextPaint().setTextSize(PixelUtils.dpToPix(14));
3856224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3866224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        DashPathEffect dpe = new DashPathEffect(
3876224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala                        new float[]{PixelUtils.dpToPix(2), PixelUtils.dpToPix(2)}, 0);
3886224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3896224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        fenwayLfMarker.getLinePaint().setPathEffect(dpe);
3906224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        attRfMarker.getLinePaint().setPathEffect(dpe);
3916224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3926224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.addMarker(fenwayLfMarker);
3936224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        plot.addMarker(attRfMarker);
3946224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
3956224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
3966224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    /**
3976224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * Add some fill regions to our series data
3986224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     */
3996224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    private void regionSetup() {
4006224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
4016224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
4026224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // and another region:
4036224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        shortRegionFormatter = new XYRegionFormatter(Color.RED);
4046224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        shortRegionFormatter.getPaint().setAlpha(75);
4056224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        shortRegion = new RectRegion(2, Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, HOME_RUN_DIST, "Short");
4066224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        timFormatter.addRegion(shortRegion, shortRegionFormatter);
4076224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        nickFormatter.addRegion(shortRegion, shortRegionFormatter);
4086224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        joeFormatter.addRegion(shortRegion, shortRegionFormatter);
4096224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        jamesFormatter.addRegion(shortRegion, shortRegionFormatter);
4106224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
4116224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // the next three regions are horizontal regions with minY/maxY
4126224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        // set to negative and positive infinity respectively.
4136224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        warmupRegionFormatter = new XYRegionFormatter(Color.WHITE);
4146224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        warmupRegionFormatter.getPaint().setAlpha(75);
4156224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
4166224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        warmupRegion = new RectRegion(0, 2, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, "Warmup");
4176224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        timFormatter.addRegion(warmupRegion, warmupRegionFormatter);
4186224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        nickFormatter.addRegion(warmupRegion, warmupRegionFormatter);
4196224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        joeFormatter.addRegion(warmupRegion, warmupRegionFormatter);
4206224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        jamesFormatter.addRegion(warmupRegion, warmupRegionFormatter);
4216224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
4226224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        homeRunRegionFormatter = new XYRegionFormatter(Color.GREEN);
4236224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        homeRunRegionFormatter.getPaint().setAlpha(75);
4246224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
4256224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        homeRunRegion = new RectRegion(2, Double.POSITIVE_INFINITY, HOME_RUN_DIST, Double.POSITIVE_INFINITY, "H. Run");
4266224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        timFormatter.addRegion(homeRunRegion, homeRunRegionFormatter);
4276224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        nickFormatter.addRegion(homeRunRegion, homeRunRegionFormatter);
4286224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        joeFormatter.addRegion(homeRunRegion, homeRunRegionFormatter);
4296224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        jamesFormatter.addRegion(homeRunRegion, homeRunRegionFormatter);
4306224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
4316224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        nickFormatter.setFillDirection(FillDirection.RANGE_ORIGIN);
4326224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
4336224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala}