Skip to content

Commit

Permalink
[1266] Add support for styling on barChart and pieChart widgets
Browse files Browse the repository at this point in the history
Bug: #1266
Signed-off-by: Florian Barbin <florian.barbin@obeo.fr>
  • Loading branch information
florianbarbin authored and sbegaudeau committed Sep 1, 2022
1 parent c206fe1 commit d3bba71
Show file tree
Hide file tree
Showing 62 changed files with 7,858 additions and 75 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.adoc
Expand Up @@ -57,6 +57,7 @@ This allows representation precondition expressions to be more precise as they k
- https://github.com/eclipse-sirius/sirius-components/issues/1265[#1265] [form] Add support for flexbox containers on FormDescriptionEditors
- https://github.com/eclipse-sirius/sirius-components/issues/1272[#1272] [form] Add support for button widget on FormDescriptions
- https://github.com/eclipse-sirius/sirius-components/issues/1273[#1273] [form] Add support for button widget on FormDescriptionEditors
- https://github.com/eclipse-sirius/sirius-components/issues/1266[#1266] [form] Add styling support on bar-chart and pie-chart Widgets in View DSL

== v2022.7.0

Expand Down
Expand Up @@ -17,14 +17,17 @@
import java.util.List;
import java.util.Objects;

import org.eclipse.sirius.components.annotations.Immutable;
import org.eclipse.sirius.components.charts.IChart;
import org.eclipse.sirius.components.charts.barchart.components.BarChartStyle;

/**
* Root concept of the bar-chart representation.
*
* @author fbarbin
*/
public class BarChart implements IChart {
@Immutable
public final class BarChart implements IChart {
public static final String KIND = "BarChart"; //$NON-NLS-1$

private String id;
Expand All @@ -37,16 +40,10 @@ public class BarChart implements IChart {

private List<BarChartEntry> entries;

public BarChart() {
// Used by Jackson
}
private BarChartStyle style;

public BarChart(String id, String descriptionId, String label, List<BarChartEntry> entries) {
this.id = Objects.requireNonNull(id);
this.descriptionId = Objects.requireNonNull(descriptionId);
this.label = Objects.requireNonNull(label);
this.kind = KIND;
this.entries = new ArrayList<>(Objects.requireNonNull(entries));
private BarChart() {
// Prevent instantiation
}

@Override
Expand All @@ -73,10 +70,73 @@ public List<BarChartEntry> getEntries() {
return this.entries;
}

public BarChartStyle getStyle() {
return this.style;
}

public static Builder newBarChart(String id) {
return new Builder(id);
}

@Override
public String toString() {
String pattern = "{0} '{'id: {1}, descriptionId: {2}, label: {3}, kind: {4}'}'"; //$NON-NLS-1$
return MessageFormat.format(pattern, this.getClass().getSimpleName(), this.id, this.descriptionId, this.label, this.kind);
}

/**
* The builder of the bar-chart element props.
*
* @author fbarbin
*/
@SuppressWarnings("checkstyle:HiddenField")
public static final class Builder {

private String id;

private String descriptionId;

private String label;

private String kind = KIND;

private List<BarChartEntry> entries;

private BarChartStyle style;

public Builder(String id) {
this.id = Objects.requireNonNull(id);
}

public Builder descriptionId(String descriptionId) {
this.descriptionId = Objects.requireNonNull(descriptionId);
return this;
}

public Builder label(String label) {
this.label = Objects.requireNonNull(label);
return this;
}

public Builder entries(List<BarChartEntry> entries) {
this.entries = new ArrayList<>(entries);
return this;
}

public Builder style(BarChartStyle style) {
this.style = Objects.requireNonNull(style);
return this;
}

public BarChart build() {
BarChart barChart = new BarChart();
barChart.id = Objects.requireNonNull(this.id);
barChart.descriptionId = Objects.requireNonNull(this.descriptionId);
barChart.label = Objects.requireNonNull(this.label);
barChart.kind = Objects.requireNonNull(this.kind);
barChart.entries = Objects.requireNonNull(this.entries);
barChart.style = this.style;
return barChart;
}
}
}
Expand Up @@ -17,6 +17,7 @@
import java.util.function.Function;

import org.eclipse.sirius.components.annotations.Immutable;
import org.eclipse.sirius.components.charts.barchart.components.BarChartStyle;
import org.eclipse.sirius.components.charts.descriptions.IChartDescription;
import org.eclipse.sirius.components.representations.VariableManager;

Expand All @@ -38,8 +39,10 @@ public final class BarChartDescription implements IChartDescription {

private Function<VariableManager, List<String>> keysProvider;

private Function<VariableManager, BarChartStyle> styleProvider;

private BarChartDescription() {
// prevent instantiation;
// prevent instantiation
}

@Override
Expand All @@ -64,6 +67,10 @@ public Function<VariableManager, List<String>> getKeysProvider() {
return this.keysProvider;
}

public Function<VariableManager, BarChartStyle> getStyleProvider() {
return this.styleProvider;
}

public static Builder newBarChartDescription(String id) {
return new Builder(id);
}
Expand All @@ -85,6 +92,8 @@ public static final class Builder {

private Function<VariableManager, List<String>> keysProvider;

private Function<VariableManager, BarChartStyle> styleProvider = variableManager -> null;

public Builder(String id) {
this.id = Objects.requireNonNull(id);
}
Expand All @@ -109,13 +118,19 @@ public Builder keysProvider(Function<VariableManager, List<String>> keysProvider
return this;
}

public Builder styleProvider(Function<VariableManager, BarChartStyle> styleProvider) {
this.styleProvider = Objects.requireNonNull(styleProvider);
return this;
}

public BarChartDescription build() {
BarChartDescription barChartDescription = new BarChartDescription();
barChartDescription.id = Objects.requireNonNull(this.id);
barChartDescription.label = Objects.requireNonNull(this.label);
barChartDescription.labelProvider = Objects.requireNonNull(this.labelProvider);
barChartDescription.valuesProvider = Objects.requireNonNull(this.valuesProvider);
barChartDescription.keysProvider = Objects.requireNonNull(this.keysProvider);
barChartDescription.styleProvider = Objects.requireNonNull(this.styleProvider);
return barChartDescription;
}
}
Expand Down
Expand Up @@ -18,8 +18,9 @@
import java.util.UUID;

import org.eclipse.sirius.components.charts.barchart.BarChart;
import org.eclipse.sirius.components.charts.barchart.BarChartDescription;
import org.eclipse.sirius.components.charts.barchart.descriptions.BarChartDescription;
import org.eclipse.sirius.components.charts.barchart.elements.BarChartElementProps;
import org.eclipse.sirius.components.charts.barchart.elements.BarChartElementProps.Builder;
import org.eclipse.sirius.components.representations.Element;
import org.eclipse.sirius.components.representations.IComponent;
import org.eclipse.sirius.components.representations.VariableManager;
Expand Down Expand Up @@ -47,16 +48,20 @@ public Element render() {
String label = barChartDescription.getLabelProvider().apply(variableManager);
List<Number> values = barChartDescription.getValuesProvider().apply(variableManager);
List<String> keys = barChartDescription.getKeysProvider().apply(variableManager);
BarChartStyle barChartStyle = barChartDescription.getStyleProvider().apply(variableManager);

// @formatter:off
BarChartElementProps barChartElementProps = BarChartElementProps.newBarChartElementProps(id)
Builder builder = BarChartElementProps.newBarChartElementProps(id)
.label(label)
.descriptionId(barChartDescription.getId())
.values(values)
.keys(keys)
.build();
.keys(keys);
// @formatter:on

if (barChartStyle != null) {
builder.style(barChartStyle);
}
BarChartElementProps barChartElementProps = builder.build();
return new Element(BarChartElementProps.TYPE, barChartElementProps);
}

Expand Down
Expand Up @@ -16,7 +16,7 @@
import java.util.Optional;

import org.eclipse.sirius.components.charts.barchart.BarChart;
import org.eclipse.sirius.components.charts.barchart.BarChartDescription;
import org.eclipse.sirius.components.charts.barchart.descriptions.BarChartDescription;
import org.eclipse.sirius.components.representations.IProps;
import org.eclipse.sirius.components.representations.VariableManager;

Expand Down
@@ -0,0 +1,139 @@
/*******************************************************************************
* Copyright (c) 2022 Obeo.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.sirius.components.charts.barchart.components;

import java.text.MessageFormat;
import java.util.Objects;

import org.eclipse.sirius.components.annotations.Immutable;

/**
* The style of a BarChart.
*
* @author fbarbin
*/
@Immutable
public final class BarChartStyle {

private String barsColor;

private int fontSize;

private boolean italic;

private boolean bold;

private boolean underline;

private boolean strikeThrough;

private BarChartStyle() {
// prevent instantiation
}

public String getBarsColor() {
return this.barsColor;
}

public int getFontSize() {
return this.fontSize;
}

public boolean isItalic() {
return this.italic;
}

public boolean isBold() {
return this.bold;
}

public boolean isUnderline() {
return this.underline;
}

public boolean isStrikeThrough() {
return this.strikeThrough;
}

public static Builder newBarChartStyle() {
return new Builder();
}

@Override
public String toString() {
String pattern = "{0} '{'barsColor: {1}, fontSize: {2}, italic: {3}, bold: {4}, underline: {5}, strikeThrough: {6}'}'"; //$NON-NLS-1$
return MessageFormat.format(pattern, this.getClass().getSimpleName(), this.barsColor, this.fontSize, this.italic, this.bold, this.underline, this.strikeThrough);
}

/**
* Builder used to create the BarChart style.
*
* @author fbarbin
*/
@SuppressWarnings("checkstyle:HiddenField")
public static final class Builder {
private String barsColor;

private int fontSize;

private boolean italic;

private boolean bold;

private boolean underline;

private boolean strikeThrough;

public Builder barsColor(String barsColor) {
this.barsColor = Objects.requireNonNull(barsColor);
return this;
}

public Builder fontSize(int fontSize) {
this.fontSize = fontSize;
return this;
}

public Builder italic(boolean italic) {
this.italic = italic;
return this;
}

public Builder bold(boolean bold) {
this.bold = bold;
return this;
}

public Builder underline(boolean underline) {
this.underline = underline;
return this;
}

public Builder strikeThrough(boolean strikeThrough) {
this.strikeThrough = strikeThrough;
return this;
}

public BarChartStyle build() {
BarChartStyle barChartStyle = new BarChartStyle();
barChartStyle.barsColor = this.barsColor;
barChartStyle.fontSize = this.fontSize;
barChartStyle.italic = this.italic;
barChartStyle.bold = this.bold;
barChartStyle.underline = this.underline;
barChartStyle.strikeThrough = this.strikeThrough;
return barChartStyle;
}
}

}

0 comments on commit d3bba71

Please sign in to comment.