Simplified scatter shape enum model

(Why would anyone try to subclass an enum?)
This commit is contained in:
Daniel Cohen Gindi 2016-08-08 09:46:06 +03:00
parent 99379d7bcf
commit 79f5ed0200
3 changed files with 28 additions and 69 deletions

View file

@ -48,7 +48,12 @@ public class ScatterChart extends BarLineChartBase<ScatterData> implements Scatt
*/
public enum ScatterShape {
SQUARE("SQUARE"), CIRCLE("CIRCLE"), TRIANGLE("TRIANGLE"), CROSS("CROSS"), X("X"), CHEVRON_UP("CHEVRON_UP"),
SQUARE("SQUARE"),
CIRCLE("CIRCLE"),
TRIANGLE("TRIANGLE"),
CROSS("CROSS"),
X("X"),
CHEVRON_UP("CHEVRON_UP"),
CHEVRON_DOWN("CHEVRON_DOWN");
private final String shapeIdentifier;

View file

@ -3,10 +3,15 @@ package com.github.mikephil.charting.data;
import com.github.mikephil.charting.charts.ScatterChart;
import com.github.mikephil.charting.interfaces.datasets.IScatterDataSet;
import com.github.mikephil.charting.renderer.scatter.ChevronDownShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.ChevronUpShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.CircleShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.CrossShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.IShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.SquareShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.TriangleShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.XShapeRenderer;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.github.mikephil.charting.utils.ShapeRendererHandler;
import java.util.ArrayList;
import java.util.List;
@ -36,11 +41,6 @@ public class ScatterDataSet extends LineScatterCandleRadarDataSet<Entry> impleme
*/
private int mScatterShapeHoleColor = ColorTemplate.COLOR_NONE;
/**
* Custom path object the user can provide that is drawn where the values
* are at. This is used when ScatterShape.CUSTOM is set for a DataSet.
*/
//private Path mCustomScatterPath = null;
public ScatterDataSet(List<Entry> yVals, String label) {
super(yVals, label);
}
@ -91,9 +91,7 @@ public class ScatterDataSet extends LineScatterCandleRadarDataSet<Entry> impleme
* @param shape
*/
public void setScatterShape(ScatterChart.ScatterShape shape) {
ShapeRendererHandler handler = new ShapeRendererHandler();
mShapeRenderer = handler.getShapeRenderer(shape);
mShapeRenderer = getRendererForShape(shape);
}
/**
@ -139,4 +137,19 @@ public class ScatterDataSet extends LineScatterCandleRadarDataSet<Entry> impleme
public int getScatterShapeHoleColor() {
return mScatterShapeHoleColor;
}
public static IShapeRenderer getRendererForShape(ScatterChart.ScatterShape shape) {
switch (shape) {
case SQUARE: return new SquareShapeRenderer();
case CIRCLE: return new CircleShapeRenderer();
case TRIANGLE: return new TriangleShapeRenderer();
case CROSS: return new CrossShapeRenderer();
case X: return new XShapeRenderer();
case CHEVRON_UP: return new ChevronUpShapeRenderer();
case CHEVRON_DOWN: return new ChevronDownShapeRenderer();
}
return null;
}
}

View file

@ -1,59 +0,0 @@
package com.github.mikephil.charting.utils;
import com.github.mikephil.charting.charts.ScatterChart;
import com.github.mikephil.charting.renderer.scatter.ChevronDownShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.ChevronUpShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.CircleShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.CrossShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.IShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.SquareShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.TriangleShapeRenderer;
import com.github.mikephil.charting.renderer.scatter.XShapeRenderer;
import java.util.HashMap;
/**
* Created by Philipp Jahoda on 27/06/16.
* Class allowing to determine the corresponding IShapeRenderer for a given ScatterShape.
*/
public final class ShapeRendererHandler {
/**
* Dictionary of IShapeRenderer which are responsible for drawing custom shapes.
* Can add to it your custom shapes.
* CustomShapeRenderer Implements IShapeRenderer{}
*/
protected HashMap<String, IShapeRenderer> shapeRendererList;
/**
* Constructor
*/
public ShapeRendererHandler() {
initShapeRenderers();
}
/**
* Returns the corresponding IShapeRenderer for a given ScatterShape.
*
* @param shape
* @return
*/
public IShapeRenderer getShapeRenderer(ScatterChart.ScatterShape shape) {
return shapeRendererList.get(shape.toString());
}
/**
* Init default ShapeRenderers.
*/
protected void initShapeRenderers() {
shapeRendererList = new HashMap<>();
shapeRendererList.put(ScatterChart.ScatterShape.SQUARE.toString(), new SquareShapeRenderer());
shapeRendererList.put(ScatterChart.ScatterShape.CIRCLE.toString(), new CircleShapeRenderer());
shapeRendererList.put(ScatterChart.ScatterShape.TRIANGLE.toString(), new TriangleShapeRenderer());
shapeRendererList.put(ScatterChart.ScatterShape.CROSS.toString(), new CrossShapeRenderer());
shapeRendererList.put(ScatterChart.ScatterShape.X.toString(), new XShapeRenderer());
shapeRendererList.put(ScatterChart.ScatterShape.CHEVRON_UP.toString(), new ChevronUpShapeRenderer());
shapeRendererList.put(ScatterChart.ScatterShape.CHEVRON_DOWN.toString(), new ChevronDownShapeRenderer());
}
}