diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java index 9a3758d7eb077fada48f5ce799aa52b1a76886a7..5bae95c0626bcafdd4c128a32c4bb972882a593f 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java @@ -31,6 +31,7 @@ import javax.swing.tree.TreeSelectionModel; import com.xeiam.xchart.XChartPanel; import com.xeiam.xchart.demo.charts.Example1; import com.xeiam.xchart.demo.charts.Example10; +import com.xeiam.xchart.demo.charts.Example11; import com.xeiam.xchart.demo.charts.Example2; import com.xeiam.xchart.demo.charts.Example3; import com.xeiam.xchart.demo.charts.Example4; @@ -162,6 +163,9 @@ public class XChartDemo extends JPanel implements TreeSelectionListener { chart = new DefaultMutableTreeNode(new ChartInfo("Example10 - Plots Hundreds of Series on One Plot", new Example10().getChart())); category.add(chart); + chart = new DefaultMutableTreeNode(new ChartInfo("Example11 - Using ChartBuilder to Make a Chart", new Example11().getChart())); + category.add(chart); + } /** diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example11.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example11.java new file mode 100644 index 0000000000000000000000000000000000000000..109ee4b447dd72c90d103e0d254c4ca502e14bf2 --- /dev/null +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example11.java @@ -0,0 +1,45 @@ +/** + * Copyright 2011-2013 Xeiam LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.xeiam.xchart.demo.charts; + +import com.xeiam.xchart.Chart; +import com.xeiam.xchart.ChartBuilder; +import com.xeiam.xchart.SwingWrapper; + +/** + * Using ChartBuilder to Make a Chart + * + * @author timmolter + */ +public class Example11 implements ExampleChart { + + public static void main(String[] args) { + + ExampleChart exampleChart = new Example11(); + Chart chart = exampleChart.getChart(); + new SwingWrapper(chart).displayChart(); + } + + @Override + public Chart getChart() { + + // Create Chart + Chart chart = new ChartBuilder().width(800).height(600).title("My Title").xAxisTitle("X").yAxisTitle("Y").showLegend(false).build(); + chart.addSeries("x", new double[] { 1, 2, 5, 7 }, new double[] { -3, 6, 9, 0 }); + + return chart; + } +} diff --git a/xchart/src/main/java/com/xeiam/xchart/Chart.java b/xchart/src/main/java/com/xeiam/xchart/Chart.java index 9d2edcbc0748cd7e349e09768dc232b64ab3cee5..c955a7b2fa9a3a166342f5cb30280eb64e5b461e 100644 --- a/xchart/src/main/java/com/xeiam/xchart/Chart.java +++ b/xchart/src/main/java/com/xeiam/xchart/Chart.java @@ -65,6 +65,20 @@ public class Chart { fontColor = ChartColor.getAWTColor(ChartColor.BLACK); } + /** + * Constructor + * + * @param chartBuilder + */ + public Chart(ChartBuilder chartBuilder) { + + this(chartBuilder.width, chartBuilder.height); + setTitle(chartBuilder.title); + setXAxisTitle(chartBuilder.xAxisTitle); + setYAxisTitle(chartBuilder.yAxisTitle); + setLegendVisible(chartBuilder.isLegendVisible); + } + /** * @param g * @param width diff --git a/xchart/src/main/java/com/xeiam/xchart/ChartBuilder.java b/xchart/src/main/java/com/xeiam/xchart/ChartBuilder.java new file mode 100644 index 0000000000000000000000000000000000000000..c582ce9c3863e74c44805d55760a8aded2e10dca --- /dev/null +++ b/xchart/src/main/java/com/xeiam/xchart/ChartBuilder.java @@ -0,0 +1,82 @@ +/** + * Copyright (C) 2013 Xeiam LLC http://xeiam.com + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.xeiam.xchart; + +/** + * @author timmolter + */ +public class ChartBuilder { + + protected int width = 800; + protected int height = 600; + protected String title = ""; + protected String xAxisTitle = ""; + protected String yAxisTitle = ""; + protected boolean isLegendVisible = true; + + public ChartBuilder width(int width) { + + this.width = width; + return this; + } + + public ChartBuilder height(int height) { + + this.height = height; + return this; + } + + public ChartBuilder title(String title) { + + this.title = title; + return this; + } + + public ChartBuilder xAxisTitle(String xAxisTitle) { + + this.xAxisTitle = xAxisTitle; + return this; + } + + public ChartBuilder yAxisTitle(String yAxisTitle) { + + this.yAxisTitle = yAxisTitle; + return this; + } + + public ChartBuilder showLegend(boolean isLegendVisible) { + + this.isLegendVisible = isLegendVisible; + return this; + } + + /** + * return fully built Chart + * + * @return a Chart + */ + public Chart build() { + + return new Chart(this); + } + +}