package jforex;

import java.awt.Color;

import javax.swing.JLabel;

import com.dukascopy.api.Configurable;
import com.dukascopy.api.IAccount;
import com.dukascopy.api.IBar;
import com.dukascopy.api.IChart;
import com.dukascopy.api.IConsole;
import com.dukascopy.api.IContext;
import com.dukascopy.api.IMessage;
import com.dukascopy.api.IStrategy;
import com.dukascopy.api.ITick;
import com.dukascopy.api.Instrument;
import com.dukascopy.api.JFException;
import com.dukascopy.api.Period;
import com.dukascopy.api.drawings.IChartObjectFactory;
import com.dukascopy.api.drawings.ICustomWidgetChartObject;

public class Test implements IStrategy{
	@Configurable(value="Change Color")
	private boolean changeColor = true;
    private IConsole console;
	private IChart chart = null;
	private ICustomWidgetChartObject co = null;
	private final int MAX_LOOP = 100;
	private int loop = 0;

    @Override
    public void onStart(IContext context) throws JFException {
        console = context.getConsole();
        chart = context.getLastActiveChart();
        if(chart == null){
        	console.getErr().println("You Must Open The Chart!!!!!!!");
        	context.stop();
        	return;
        }
        IChartObjectFactory cof = chart.getChartObjectFactory();
        co = cof.createChartWidget();
        co.getContentPanel().add(new JLabel("test"){
			private static final long serialVersionUID = 1L;
			@Override
			public void setForeground(Color c){
//				super.setForeground(c);
				if(loop++ >= MAX_LOOP){
					console.getErr().println("Called setForeground() * "+MAX_LOOP);
					context.stop();
					return;
				}
				console.getOut().println("Called setForeground()");
			}
		});
        chart.add(co);
        if(changeColor){
        	co.setColor(Color.red);
        }
    }

    @Override
    public void onStop() throws JFException {
    	if(chart != null && chart.isAlive() && co != null){
    		chart.remove(co);
    	}
    }

    @Override
    public void onBar(Instrument instrument, Period period, IBar askBar,
            IBar bidBar) throws JFException {
    }
    @Override
    public void onTick(Instrument instrument, ITick tick) throws JFException {

    }

    @Override
    public void onMessage(IMessage message) throws JFException {
    }

    @Override
    public void onAccount(IAccount account) throws JFException {
    }

}
