package org.openjump.core.ui.style;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Stroke;

import com.vividsolutions.jts.util.Assert;
import com.vividsolutions.jump.feature.Feature;
import com.vividsolutions.jump.workbench.model.Layer;
import com.vividsolutions.jump.workbench.ui.Viewport;
import com.vividsolutions.jump.workbench.ui.renderer.style.Style;
import com.vividsolutions.jump.workbench.ui.renderer.style.StyleUtil;

public class AreaStyle implements Style {

	public static final BasicStroke DEFAULT_FILL_STROKE = new BasicStroke(1);
    private Stroke fillStroke = DEFAULT_FILL_STROKE;

    public void initialize(Layer layer) {
		// TODO Auto-generated method stub

	}

	public boolean isEnabled() {
		// TODO Auto-generated method stub
		return true;
	}

	public void paint(Feature f, Graphics2D g, Viewport viewport)
			throws Exception {
		// TODO Auto-generated method stub
		double area = f.getGeometry().getArea();
		float hue = (float) area;
		float saturation = 1.0f;
		float brightnes = .5f;
		Color color = Color.getHSBColor( hue,  saturation,  brightnes);
        g.setColor(color);
        StyleUtil.paint(f.getGeometry(), g, viewport, true,
                fillStroke,
                color,
                false, fillStroke, color);
	}

	public void setEnabled(boolean enabled) {
		// TODO Auto-generated method stub

	}

	public Object clone() {
		try {
			return super.clone();
		} catch (CloneNotSupportedException e) {
			Assert.shouldNeverReachHere();
			return null;
		}
	}

}
