diff --git a/pom.xml b/pom.xml index 38e4cc1467c04e0dfb5528389941d32042710903..86a0356a8be60b04f5ddc90b3f56f8fc4ad2a0a6 100644 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,5 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -114,6 +115,33 @@ <autoversionsubmodules>true</autoversionsubmodules> </configuration> </plugin> + <!-- <plugin> --> + <!-- <artifactId>maven-enforcer-plugin</artifactId> --> + <!-- <version>1.2</version> --> + <!-- <dependencies> --> + <!-- <dependency> --> + <!-- <groupId>de.andrena.tools.nopackagecycles</groupId> --> + <!-- <artifactId>no-package-cycles-enforcer-rule</artifactId> --> + <!-- <version>1.0.0</version> --> + <!-- </dependency> --> + <!-- </dependencies> --> + <!-- <executions> --> + <!-- <execution> --> + <!-- <id>enforce-no-package-cycles</id> --> + <!-- <goals> --> + <!-- <goal>enforce</goal> --> + <!-- </goals> --> + <!-- <phase>compile</phase> --> + <!-- <configuration> --> + <!-- <rules> --> + <!-- <NoPackageCyclesRule --> + <!-- implementation="de.andrena.tools.nopackagecycles.NoPackageCyclesRule" + /> --> + <!-- </rules> --> + <!-- </configuration> --> + <!-- </execution> --> + <!-- </executions> --> + <!-- </plugin> --> </plugins> </build> diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart03.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart03.java index 6f2505cc61518b75d25cf4fb8c1faaa9cd1b7925..5a2770af7aca374f4d07e27f7d1f650718c23a72 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart03.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart03.java @@ -93,6 +93,7 @@ public class LineChart03 implements ExampleChart { chart.getStyleManager().setChartTitleFont(new Font(Font.MONOSPACED, Font.BOLD, 24)); chart.getStyleManager().setLegendFont(new Font(Font.SERIF, Font.PLAIN, 18)); chart.getStyleManager().setLegendPosition(LegendPosition.InsideSE); + chart.getStyleManager().setLegendSeriesLineLength(12); chart.getStyleManager().setAxisTitleFont(new Font(Font.SANS_SERIF, Font.ITALIC, 18)); chart.getStyleManager().setAxisTickLabelsFont(new Font(Font.SERIF, Font.PLAIN, 11)); chart.getStyleManager().setDatePattern("dd-MMM"); diff --git a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java index 249e7b57e5c6c8efca6bb33c4cb7fad4a18bc2df..321e4ceebcde34551e0131c76ac96a2265b5a996 100644 --- a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java +++ b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java @@ -72,6 +72,7 @@ public class StyleManager { private Color legendBorderColor; private Font legendFont; private int legendPadding; + private int legendSeriesLineLength; private LegendPosition legendPosition; // Chart Axes /////////////////////////////// @@ -146,6 +147,7 @@ public class StyleManager { legendBorderColor = theme.getLegendBorderColor(); legendFont = theme.getLegendFont(); legendPadding = theme.getLegendPadding(); + legendSeriesLineLength = theme.getLegendSeriesLineLength(); legendPosition = theme.getLegendPosition(); // axes @@ -438,6 +440,26 @@ public class StyleManager { return legendPadding; } + /** + * Set the chart legend series line length + * + * @param legendPadding + */ + public void setLegendSeriesLineLength(int legendSeriesLineLength) { + + if (legendSeriesLineLength < 0) { + this.legendSeriesLineLength = 0; + } + else { + this.legendSeriesLineLength = legendSeriesLineLength; + } + } + + public int getLegendSeriesLineLength() { + + return legendSeriesLineLength; + } + /** * sets the legend position * 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 02cab6faa4e5b96c24e8b7c79bdf1386a9ce1355..ee1c6a5069f710f2fb1104a457c93d7b334c8c88 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 @@ -93,7 +93,7 @@ public class Legend implements ChartPart { // determine legend content width double legendContentWidth = 0; if (getChartPainter().getStyleManager().getChartType() != ChartType.Bar) { - legendContentWidth = 3.0 * Marker.SIZE + chartPainter.getStyleManager().getLegendPadding() + legendTextContentMaxWidth; + legendContentWidth = getChartPainter().getStyleManager().getLegendSeriesLineLength() + chartPainter.getStyleManager().getLegendPadding() + legendTextContentMaxWidth; } else { legendContentWidth = BOX_SIZE + chartPainter.getStyleManager().getLegendPadding() + legendTextContentMaxWidth; @@ -169,14 +169,14 @@ public class Legend implements ChartPart { if (getChartPainter().getStyleManager().getChartType() != ChartType.Scatter && series.getStroke() != null) { g.setColor(series.getStrokeColor()); g.setStroke(series.getStroke()); - Shape line = new Line2D.Double(startx, starty + maxContentHeight / 2.0, startx + Marker.SIZE * 3.0, starty + maxContentHeight / 2.0); + Shape line = new Line2D.Double(startx, starty + maxContentHeight / 2.0, startx + getChartPainter().getStyleManager().getLegendSeriesLineLength(), starty + maxContentHeight / 2.0); g.draw(line); } // paint marker if (series.getMarker() != null) { g.setColor(series.getMarkerColor()); - series.getMarker().paint(g, startx + (Marker.SIZE * 1.5), starty + maxContentHeight / 2.0); + series.getMarker().paint(g, startx + getChartPainter().getStyleManager().getLegendSeriesLineLength() / 2.0, starty + maxContentHeight / 2.0); } } else { @@ -193,8 +193,8 @@ public class Legend implements ChartPart { g.setColor(chartPainter.getStyleManager().getChartFontColor()); TextLayout layout = new TextLayout(series.getName(), chartPainter.getStyleManager().getLegendFont(), new FontRenderContext(null, true, false)); if (getChartPainter().getStyleManager().getChartType() != ChartType.Bar) { - layout.draw(g, (float) (startx + Marker.SIZE + (Marker.SIZE * 1.5) + chartPainter.getStyleManager().getLegendPadding()), (float) (starty + (maxContentHeight - 1 + layout.getBounds() - .getHeight()) / 2.0)); + layout.draw(g, (float) (startx + getChartPainter().getStyleManager().getLegendSeriesLineLength() + chartPainter.getStyleManager().getLegendPadding()), + (float) (starty + (maxContentHeight - 1 + layout.getBounds().getHeight()) / 2.0)); } else { layout.draw(g, (float) (startx + BOX_SIZE + chartPainter.getStyleManager().getLegendPadding()), (float) (starty + (maxContentHeight + layout.getBounds().getHeight()) / 2.0)); diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java index 4ff6ca9e1fa983daf29f6147d6e605f31da575a3..ad8f3b057c14b88ffaf77e083f72e5bf77511166 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java @@ -118,6 +118,12 @@ public class GGPlot2Theme implements Theme { return 10; } + @Override + public int getLegendSeriesLineLength() { + + return 24; + } + @Override public LegendPosition getLegendPosition() { diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java index 01864a333653f10f135b51865ec1250388c7bca8..b4791525bac7be79f9fdca92e65ba94d79fb39dd 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java @@ -119,6 +119,12 @@ public class MatlabTheme implements Theme { return 10; } + @Override + public int getLegendSeriesLineLength() { + + return 24; + } + @Override public LegendPosition getLegendPosition() { diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java index 3e794b4df706a44f7f3793277ff64609ab382627..78660fa48753557ac979cb166223d8d1310280e5 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java @@ -60,6 +60,8 @@ public interface Theme { public int getLegendPadding(); + public int getLegendSeriesLineLength(); + public LegendPosition getLegendPosition(); // Chart Axes /////////////////////////////// diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java index 255fcb39af1ea4eea1392017cd64c07d0c6190e6..70116fe15dc68d9fc5eb02e9311387d7a363d1a1 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java @@ -119,6 +119,12 @@ public class XChartTheme implements Theme { return 10; } + @Override + public int getLegendSeriesLineLength() { + + return 24; + } + @Override public LegendPosition getLegendPosition() {