From 57dee0f309b49715d61feb05fead1c49e27dea5f Mon Sep 17 00:00:00 2001 From: Tim Molter <tim.molter@gmail.com> Date: Sun, 3 Feb 2013 20:23:51 +0100 Subject: [PATCH] added Theme interface --- .../xeiam/xchart/demo/charts/Example1.java | 4 +- .../xeiam/xchart/demo/charts/Example10.java | 8 +-- .../xeiam/xchart/demo/charts/Example2.java | 8 +-- .../xeiam/xchart/demo/charts/Example4.java | 2 +- .../xeiam/xchart/demo/charts/Example8.java | 8 +-- .../xeiam/xchart/demo/charts/Example9.java | 10 ++-- .../src/main/java/com/xeiam/xchart/Chart.java | 16 +++++- .../java/com/xeiam/xchart/QuickChart.java | 4 +- .../xchart/internal/chartpart/AxisPair.java | 2 +- .../xchart/internal/chartpart/Legend.java | 4 +- .../internal/chartpart/PlotContent.java | 2 +- .../internal/chartpart/PlotSurface.java | 2 +- .../SeriesColorMarkerLineStyleCycler.java | 6 +-- .../{appearance => style}/ChartColor.java | 2 +- .../xchart/{appearance => style}/Series.java | 2 +- .../{appearance => style}/SeriesColor.java | 2 +- .../SeriesLineStyle.java | 2 +- .../{appearance => style}/SeriesMarker.java | 2 +- .../{appearance => style}/StyleManager.java | 23 +++++++-- .../com/xeiam/xchart/style/theme/Theme.java | 37 ++++++++++++++ .../xeiam/xchart/style/theme/XChartTheme.java | 51 +++++++++++++++++++ 21 files changed, 156 insertions(+), 41 deletions(-) rename xchart/src/main/java/com/xeiam/xchart/{appearance => style}/ChartColor.java (97%) rename xchart/src/main/java/com/xeiam/xchart/{appearance => style}/Series.java (99%) rename xchart/src/main/java/com/xeiam/xchart/{appearance => style}/SeriesColor.java (98%) rename xchart/src/main/java/com/xeiam/xchart/{appearance => style}/SeriesLineStyle.java (98%) rename xchart/src/main/java/com/xeiam/xchart/{appearance => style}/SeriesMarker.java (97%) rename xchart/src/main/java/com/xeiam/xchart/{appearance => style}/StyleManager.java (82%) create mode 100644 xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java create mode 100644 xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example1.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example1.java index 409d81da..a42d16ac 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example1.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example1.java @@ -20,8 +20,8 @@ import java.util.Collection; import com.xeiam.xchart.Chart; import com.xeiam.xchart.SwingWrapper; -import com.xeiam.xchart.appearance.Series; -import com.xeiam.xchart.appearance.SeriesMarker; +import com.xeiam.xchart.style.Series; +import com.xeiam.xchart.style.SeriesMarker; /** * Manual Data diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example10.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example10.java index 269e4d05..96966751 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example10.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example10.java @@ -17,10 +17,10 @@ package com.xeiam.xchart.demo.charts; import com.xeiam.xchart.Chart; import com.xeiam.xchart.SwingWrapper; -import com.xeiam.xchart.appearance.Series; -import com.xeiam.xchart.appearance.SeriesColor; -import com.xeiam.xchart.appearance.SeriesLineStyle; -import com.xeiam.xchart.appearance.SeriesMarker; +import com.xeiam.xchart.style.Series; +import com.xeiam.xchart.style.SeriesColor; +import com.xeiam.xchart.style.SeriesLineStyle; +import com.xeiam.xchart.style.SeriesMarker; /** * Plots Hundreds of Series on One Plot diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example2.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example2.java index 2a60a46a..cf6d62a6 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example2.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example2.java @@ -20,10 +20,10 @@ import java.util.Collection; import com.xeiam.xchart.Chart; import com.xeiam.xchart.SwingWrapper; -import com.xeiam.xchart.appearance.Series; -import com.xeiam.xchart.appearance.SeriesColor; -import com.xeiam.xchart.appearance.SeriesLineStyle; -import com.xeiam.xchart.appearance.SeriesMarker; +import com.xeiam.xchart.style.Series; +import com.xeiam.xchart.style.SeriesColor; +import com.xeiam.xchart.style.SeriesLineStyle; +import com.xeiam.xchart.style.SeriesMarker; /** * Sine wave with customized series style diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example4.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example4.java index 37be3ffa..5884ae34 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example4.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example4.java @@ -25,7 +25,7 @@ import java.util.TimeZone; import com.xeiam.xchart.Chart; import com.xeiam.xchart.SwingWrapper; -import com.xeiam.xchart.appearance.Series; +import com.xeiam.xchart.style.Series; /** * Date Axis diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example8.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example8.java index bc93ee1d..59a6550c 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example8.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example8.java @@ -20,10 +20,10 @@ import java.util.Collection; import com.xeiam.xchart.Chart; import com.xeiam.xchart.SwingWrapper; -import com.xeiam.xchart.appearance.Series; -import com.xeiam.xchart.appearance.SeriesColor; -import com.xeiam.xchart.appearance.SeriesLineStyle; -import com.xeiam.xchart.appearance.SeriesMarker; +import com.xeiam.xchart.style.Series; +import com.xeiam.xchart.style.SeriesColor; +import com.xeiam.xchart.style.SeriesLineStyle; +import com.xeiam.xchart.style.SeriesMarker; /** * Error bars diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example9.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example9.java index 0eb6fe62..933a0c4a 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example9.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example9.java @@ -27,11 +27,11 @@ import java.util.Locale; import com.xeiam.xchart.Chart; import com.xeiam.xchart.SwingWrapper; -import com.xeiam.xchart.appearance.ChartColor; -import com.xeiam.xchart.appearance.Series; -import com.xeiam.xchart.appearance.SeriesColor; -import com.xeiam.xchart.appearance.SeriesLineStyle; -import com.xeiam.xchart.appearance.SeriesMarker; +import com.xeiam.xchart.style.ChartColor; +import com.xeiam.xchart.style.Series; +import com.xeiam.xchart.style.SeriesColor; +import com.xeiam.xchart.style.SeriesLineStyle; +import com.xeiam.xchart.style.SeriesMarker; /** * Extensive chart customization diff --git a/xchart/src/main/java/com/xeiam/xchart/Chart.java b/xchart/src/main/java/com/xeiam/xchart/Chart.java index 3167c92a..8f16cf5c 100644 --- a/xchart/src/main/java/com/xeiam/xchart/Chart.java +++ b/xchart/src/main/java/com/xeiam/xchart/Chart.java @@ -25,12 +25,13 @@ import java.util.Date; import java.util.Locale; import java.util.TimeZone; -import com.xeiam.xchart.appearance.Series; -import com.xeiam.xchart.appearance.StyleManager; import com.xeiam.xchart.internal.chartpart.AxisPair; import com.xeiam.xchart.internal.chartpart.ChartTitle; import com.xeiam.xchart.internal.chartpart.Legend; import com.xeiam.xchart.internal.chartpart.Plot; +import com.xeiam.xchart.style.Series; +import com.xeiam.xchart.style.StyleManager; +import com.xeiam.xchart.style.theme.Theme; /** * An XChart Chart @@ -476,4 +477,15 @@ public class Chart { return styleManager; } + /** + * Set the theme the Chart's style manager should use + * + * @param theme + */ + public void setTheme(Theme theme) { + + styleManager.setTheme(theme); + + } + } diff --git a/xchart/src/main/java/com/xeiam/xchart/QuickChart.java b/xchart/src/main/java/com/xeiam/xchart/QuickChart.java index 22ba2eb4..452dc79e 100644 --- a/xchart/src/main/java/com/xeiam/xchart/QuickChart.java +++ b/xchart/src/main/java/com/xeiam/xchart/QuickChart.java @@ -17,8 +17,8 @@ package com.xeiam.xchart; import java.util.Collection; -import com.xeiam.xchart.appearance.Series; -import com.xeiam.xchart.appearance.SeriesMarker; +import com.xeiam.xchart.style.Series; +import com.xeiam.xchart.style.SeriesMarker; /** * A convenience class for making Charts with one line of code diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java index 6df987ba..07e22970 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java @@ -25,10 +25,10 @@ import java.util.LinkedHashMap; import java.util.Map; import com.xeiam.xchart.Chart; -import com.xeiam.xchart.appearance.Series; import com.xeiam.xchart.internal.chartpart.Axis.AxisType; import com.xeiam.xchart.internal.interfaces.IChartPart; import com.xeiam.xchart.internal.misc.SeriesColorMarkerLineStyleCycler; +import com.xeiam.xchart.style.Series; /** * @author timmolter diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java index 7084c0a4..ed577be3 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java @@ -24,11 +24,11 @@ import java.awt.font.TextLayout; import java.util.Map; import com.xeiam.xchart.Chart; -import com.xeiam.xchart.appearance.ChartColor; -import com.xeiam.xchart.appearance.Series; import com.xeiam.xchart.internal.interfaces.IChartPart; import com.xeiam.xchart.internal.interfaces.IHideable; import com.xeiam.xchart.internal.markers.Marker; +import com.xeiam.xchart.style.ChartColor; +import com.xeiam.xchart.style.Series; /** * @author timmolter diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java index d2970a87..62bf88cf 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java @@ -24,9 +24,9 @@ import java.util.Date; import java.util.Iterator; import java.util.Map; -import com.xeiam.xchart.appearance.Series; import com.xeiam.xchart.internal.chartpart.Axis.AxisType; import com.xeiam.xchart.internal.interfaces.IChartPart; +import com.xeiam.xchart.style.Series; /** * @author timmolter diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java index 29ad0049..8eb5e205 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java @@ -21,9 +21,9 @@ import java.awt.Graphics2D; import java.awt.Rectangle; import java.util.List; -import com.xeiam.xchart.appearance.ChartColor; import com.xeiam.xchart.internal.interfaces.IChartPart; import com.xeiam.xchart.internal.interfaces.IHideable; +import com.xeiam.xchart.style.ChartColor; /** * @author timmolter diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyleCycler.java b/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyleCycler.java index 23166c83..92d7cf05 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyleCycler.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyleCycler.java @@ -25,9 +25,9 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.Map; -import com.xeiam.xchart.appearance.SeriesColor; -import com.xeiam.xchart.appearance.SeriesLineStyle; -import com.xeiam.xchart.appearance.SeriesMarker; +import com.xeiam.xchart.style.SeriesColor; +import com.xeiam.xchart.style.SeriesLineStyle; +import com.xeiam.xchart.style.SeriesMarker; /** * Cycles through the different colors, markers, and strokes in a predetermined way diff --git a/xchart/src/main/java/com/xeiam/xchart/appearance/ChartColor.java b/xchart/src/main/java/com/xeiam/xchart/style/ChartColor.java similarity index 97% rename from xchart/src/main/java/com/xeiam/xchart/appearance/ChartColor.java rename to xchart/src/main/java/com/xeiam/xchart/style/ChartColor.java index dffbfa85..6dab696f 100644 --- a/xchart/src/main/java/com/xeiam/xchart/appearance/ChartColor.java +++ b/xchart/src/main/java/com/xeiam/xchart/style/ChartColor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.appearance; +package com.xeiam.xchart.style; import java.awt.Color; diff --git a/xchart/src/main/java/com/xeiam/xchart/appearance/Series.java b/xchart/src/main/java/com/xeiam/xchart/style/Series.java similarity index 99% rename from xchart/src/main/java/com/xeiam/xchart/appearance/Series.java rename to xchart/src/main/java/com/xeiam/xchart/style/Series.java index 3b05288f..a9da1851 100644 --- a/xchart/src/main/java/com/xeiam/xchart/appearance/Series.java +++ b/xchart/src/main/java/com/xeiam/xchart/style/Series.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.appearance; +package com.xeiam.xchart.style; import java.awt.BasicStroke; import java.awt.Color; diff --git a/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesColor.java b/xchart/src/main/java/com/xeiam/xchart/style/SeriesColor.java similarity index 98% rename from xchart/src/main/java/com/xeiam/xchart/appearance/SeriesColor.java rename to xchart/src/main/java/com/xeiam/xchart/style/SeriesColor.java index f5994a65..3b99122a 100644 --- a/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesColor.java +++ b/xchart/src/main/java/com/xeiam/xchart/style/SeriesColor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.appearance; +package com.xeiam.xchart.style; import java.awt.Color; diff --git a/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesLineStyle.java b/xchart/src/main/java/com/xeiam/xchart/style/SeriesLineStyle.java similarity index 98% rename from xchart/src/main/java/com/xeiam/xchart/appearance/SeriesLineStyle.java rename to xchart/src/main/java/com/xeiam/xchart/style/SeriesLineStyle.java index b73d6d35..060ef115 100644 --- a/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesLineStyle.java +++ b/xchart/src/main/java/com/xeiam/xchart/style/SeriesLineStyle.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.appearance; +package com.xeiam.xchart.style; import java.awt.BasicStroke; diff --git a/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesMarker.java b/xchart/src/main/java/com/xeiam/xchart/style/SeriesMarker.java similarity index 97% rename from xchart/src/main/java/com/xeiam/xchart/appearance/SeriesMarker.java rename to xchart/src/main/java/com/xeiam/xchart/style/SeriesMarker.java index e486620f..8ffa8d25 100644 --- a/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesMarker.java +++ b/xchart/src/main/java/com/xeiam/xchart/style/SeriesMarker.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.appearance; +package com.xeiam.xchart.style; import com.xeiam.xchart.internal.markers.Circle; import com.xeiam.xchart.internal.markers.Diamond; diff --git a/xchart/src/main/java/com/xeiam/xchart/appearance/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java similarity index 82% rename from xchart/src/main/java/com/xeiam/xchart/appearance/StyleManager.java rename to xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java index 64bcce88..944444fb 100644 --- a/xchart/src/main/java/com/xeiam/xchart/appearance/StyleManager.java +++ b/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java @@ -19,15 +19,20 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package com.xeiam.xchart.appearance; +package com.xeiam.xchart.style; import java.awt.Color; +import com.xeiam.xchart.style.theme.Theme; +import com.xeiam.xchart.style.theme.XChartTheme; + /** * @author timmolter */ public class StyleManager { + private Theme theme = new XChartTheme(); + private Color backgroundColor; public Color bordersColor; public Color fontColor; @@ -37,9 +42,19 @@ public class StyleManager { */ public StyleManager() { - backgroundColor = ChartColor.getAWTColor(ChartColor.GREY); - bordersColor = ChartColor.getAWTColor(ChartColor.DARK_GREY); - fontColor = ChartColor.getAWTColor(ChartColor.BLACK); + backgroundColor = theme.getChartBackgroundColor(); + bordersColor = theme.getChartBordersColor(); + fontColor = theme.getChartFontColor(); + } + + /** + * Set the theme the style manager should use + * + * @param theme + */ + public void setTheme(Theme theme) { + + this.theme = theme; } /** diff --git a/xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java b/xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java new file mode 100644 index 00000000..f6893b2a --- /dev/null +++ b/xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java @@ -0,0 +1,37 @@ +/** + * 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.style.theme; + +import java.awt.Color; + +/** + * @author timmolter + */ +public interface Theme { + + public Color getChartBackgroundColor(); + + public Color getChartBordersColor(); + + public Color getChartFontColor(); + +} diff --git a/xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java b/xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java new file mode 100644 index 00000000..94b4d07b --- /dev/null +++ b/xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java @@ -0,0 +1,51 @@ +/** + * 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.style.theme; + +import java.awt.Color; + +import com.xeiam.xchart.style.ChartColor; + +/** + * @author timmolter + */ +public class XChartTheme implements Theme { + + @Override + public Color getChartBackgroundColor() { + + return ChartColor.getAWTColor(ChartColor.GREY); + } + + @Override + public Color getChartBordersColor() { + + return ChartColor.getAWTColor(ChartColor.DARK_GREY); + } + + @Override + public Color getChartFontColor() { + + return ChartColor.getAWTColor(ChartColor.BLACK); + } + +} -- GitLab