/* * Copyright (c) 2004-2011 Marco Maccaferri and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Marco Maccaferri - initial API and implementation */ package org.eclipsetrader.ui.internal.charts.views; import org.eclipse.swt.graphics.RGB; import org.eclipsetrader.core.charts.IDataSeries; import org.eclipsetrader.core.charts.OHLCDataSeries; import org.eclipsetrader.ui.charts.BarChart; import org.eclipsetrader.ui.charts.CandleStickChart; import org.eclipsetrader.ui.charts.ChartParameters; import org.eclipsetrader.ui.charts.HistogramAreaChart; import org.eclipsetrader.ui.charts.IChartObject; import org.eclipsetrader.ui.charts.IChartObjectFactory; import org.eclipsetrader.ui.charts.IChartParameters; import org.eclipsetrader.ui.charts.OHLCField; import org.eclipsetrader.ui.charts.OHLCLineChart; import org.eclipsetrader.ui.charts.OHLCLineChart.LineStyle; public class MainChartFactory implements IChartObjectFactory { public static final String FACTORY_ID = "org.eclipsetrader.ui.charts.main"; private MainRenderStyle style = MainRenderStyle.Candles; private OHLCField lineField = OHLCField.Close; private RGB lineColor; private RGB barPositiveColor; private RGB barNegativeColor; private RGB candlePositiveColor; private RGB candleNegativeColor; private RGB candleOutlineColor; public MainChartFactory() { } /* (non-Javadoc) * @see org.eclipsetrader.charts.ui.indicators.IChartIndicator#getId() */ @Override public String getId() { return FACTORY_ID; } /* (non-Javadoc) * @see org.eclipsetrader.charts.ui.indicators.IChartIndicator#getName() */ @Override public String getName() { return "MAIN"; } public OHLCField getLineField() { return lineField; } public void setLineField(OHLCField field) { this.lineField = field; } public MainRenderStyle getStyle() { return style; } public void setStyle(MainRenderStyle style) { this.style = style; } public RGB getLineColor() { return lineColor; } public void setLineColor(RGB lineColor) { this.lineColor = lineColor; } public RGB getBarPositiveColor() { return barPositiveColor; } public void setBarPositiveColor(RGB barPositiveColor) { this.barPositiveColor = barPositiveColor; } public RGB getBarNegativeColor() { return barNegativeColor; } public void setBarNegativeColor(RGB barNegativeColor) { this.barNegativeColor = barNegativeColor; } public RGB getCandlePositiveColor() { return candlePositiveColor; } public void setCandlePositiveColor(RGB candlePositiveColor) { this.candlePositiveColor = candlePositiveColor; } public RGB getCandleNegativeColor() { return candleNegativeColor; } public void setCandleNegativeColor(RGB candleNegativeColor) { this.candleNegativeColor = candleNegativeColor; } public RGB getCandleOutlineColor() { return candleOutlineColor; } public void setCandleOutlineColor(RGB candleBorderColor) { this.candleOutlineColor = candleBorderColor; } /* (non-Javadoc) * @see org.eclipsetrader.ui.charts.IChartObjectFactory#createObject(org.eclipsetrader.core.charts.IDataSeries) */ @Override public IChartObject createObject(IDataSeries source) { if (source == null || !(source instanceof OHLCDataSeries)) { return null; } if (style == MainRenderStyle.Bars) { return new BarChart(source, barPositiveColor, barNegativeColor); } if (style == MainRenderStyle.Candles) { return new CandleStickChart(source, candleOutlineColor, candlePositiveColor, candleNegativeColor); } if (style == MainRenderStyle.Histogram) { return new HistogramAreaChart(source, lineColor); } return new OHLCLineChart(source, LineStyle.Solid, lineColor); } /* (non-Javadoc) * @see org.eclipsetrader.ui.charts.IChartObjectFactory#getParameters() */ @Override public IChartParameters getParameters() { ChartParameters parameters = new ChartParameters(); parameters.setParameter("style", style.getName()); if (lineColor != null) { parameters.setParameter("line-color", lineColor); } if (barPositiveColor != null) { parameters.setParameter("bar-positive-color", barPositiveColor); } if (barNegativeColor != null) { parameters.setParameter("bar-negative-color", barNegativeColor); } if (candlePositiveColor != null) { parameters.setParameter("candle-positive-color", candlePositiveColor); } if (candleNegativeColor != null) { parameters.setParameter("candle-negative-color", candleNegativeColor); } if (candleOutlineColor != null) { parameters.setParameter("candle-outline-color", candleOutlineColor); } return parameters; } /* (non-Javadoc) * @see org.eclipsetrader.ui.charts.IChartObjectFactory#setParameters(org.eclipsetrader.ui.charts.IChartParameters) */ @Override public void setParameters(IChartParameters parameters) { style = parameters.hasParameter("style") ? MainRenderStyle.getStyleFromName(parameters.getString("style")) : MainRenderStyle.Bars; lineColor = parameters.getColor("line-color"); barPositiveColor = parameters.getColor("bar-positive-color"); barNegativeColor = parameters.getColor("bar-negative-color"); candlePositiveColor = parameters.getColor("candle-positive-color"); candleNegativeColor = parameters.getColor("candle-negative-color"); candleOutlineColor = parameters.getColor("candle-outline-color"); } }