import ilog.views.chart.IlvAxis;
import ilog.views.chart.IlvChart;
import ilog.views.chart.IlvCoordinateSystem;
import ilog.views.chart.IlvDataWindow;
import ilog.views.chart.IlvDoublePoint;
import ilog.views.chart.graphic.IlvDataIndicator;
import ilog.views.util.text.IlvBidiUtil;

import java.awt.Graphics;
import java.awt.Shape;

public class indicator extends IlvDataIndicator {

	String text;
	IlvDataWindow interval;

	public indicator(int index, IlvDataWindow interval, String text) {
		super(index, interval, text);
		this.text = text;
		this.interval = interval;

		// TODO Auto-generated constructor stub
	}

	@Override
	public void beforeDraw(Graphics g) {
		// TODO Auto-generated method stub
		if (getChart() == null)
			return;
		if ((getType() == 0) || (getType() == 1))
			drawa(g, true);
		else
			drawb(g, true);
	}

	@Override
	public void afterDraw(Graphics g) {
		// TODO Auto-generated method stub
		if (getChart() == null)
			return;
		if ((getType() == 0) || (getType() == 1))
			drawa(g, false);
		else
			drawb(g, false);
	}

	private void drawa(Graphics paramGraphics, boolean paramBoolean) {
		if (paramBoolean)
			return;
		int k = getAxisIndex() >= 0 ? getAxisIndex() : 0;
		IlvCoordinateSystem localIlvCoordinateSystem = getChart()
				.getCoordinateSystem(k);
		if (getText() != null) {
			IlvDoublePoint localIlvDoublePoint = computeLabelLocation(localIlvCoordinateSystem
					.getVisibleWindow());
			this.getLabelRenderer().paintLabel(
					getChart().getChartArea(),
					paramGraphics,
					IlvBidiUtil.getCombinedString(this.text, getChart()
							.getResolvedBaseTextDirection(), getChart()
							.getComponentOrientation(), false),
					localIlvDoublePoint.xFloor(), localIlvDoublePoint.yFloor()*1.8D);
		}
	}

	private void drawb(Graphics paramGraphics, boolean paramBoolean) {
		int k = getAxisIndex() >= 0 ? getAxisIndex() : 0;
		IlvChart localIlvChart = getChart();
		IlvCoordinateSystem localIlvCoordinateSystem = localIlvChart
				.getCoordinateSystem(k);
		IlvDataWindow localIlvDataWindow = new IlvDataWindow(interval);
		localIlvDataWindow.intersection(localIlvCoordinateSystem
				.getVisibleWindow());
		if (localIlvDataWindow.isEmpty())
			return;
		java.awt.Rectangle localRectangle = localIlvChart.getChartArea()
				.getPlotRect();
		boolean bool = true;
		Object localObject;

		if (paramBoolean) {
			if (bool) {
				localObject = localIlvChart.getProjector().getShape(
						localIlvDataWindow, localRectangle,
						localIlvCoordinateSystem);
				getDrawStyle().setStrokeOn(false).renderShape(paramGraphics,
						(Shape) localObject);
			}
		} else {
			if (bool) {
				localObject = localIlvChart.getProjector().getShape(
						localIlvDataWindow, localRectangle,
						localIlvCoordinateSystem);
				getDrawStyle().setFillOn(false).renderShape(paramGraphics,
						(Shape) localObject);
			}
			if (getText() != null) {
				localObject = computeLabelLocation(localIlvDataWindow);
				this.getLabelRenderer().paintLabel(
						getChart().getChartArea(),
						paramGraphics,
						IlvBidiUtil.getCombinedString(this.text, getChart()
								.getResolvedBaseTextDirection(), getChart()
								.getComponentOrientation(), false),
						((IlvDoublePoint) localObject).xFloor(),
						((IlvDoublePoint) localObject).yFloor()*1.8D);
			}
		}
	}
}
