package org.lucci.madhoc.gui.aircraft;
import java.awt.BasicStroke;
import java.awt.Color;
import java.util.Iterator;

import org.lucci.madhoc.network.Station;
import org.lucci.madhoc.network.net.Location;
import org.lucci.madhoc.network.net.NetworkInterface;
import org.lucci.up.data.DataElement;
import org.lucci.up.data.rendering.point.CirclePointRenderer;
import org.lucci.up.system.Space;

/*
 * Created on May 5, 2005
 */

/**
 * @author luc.hogie
 */
public class CircleSignalRenderer extends CirclePointRenderer
{
    boolean fill = false;
    
    public CircleSignalRenderer()
    {
        setStroke(new BasicStroke(0.1f));
    }


    public void drawImpl(DataElement object, Space space)
    {
        Location point = (Location) object;
        Station node  = point.getComputer();
        Iterator networkInterfaceIterator = node.getNetworkingUnit().getNetworkInterfaces().iterator();
        
        while (networkInterfaceIterator.hasNext())
        {
            NetworkInterface networkAdapter = (NetworkInterface) networkInterfaceIterator.next();
            int pixelRadius = (int) (networkAdapter.getCoverageRadius() / space.getXDimension().getLogicalIntervalRepresentedByOnePixel());

            if (pixelRadius > 0)
            {
                setRadius(pixelRadius);
                Color nc = networkAdapter.getNetworkingTechnology().getColor();
//              Color c = new Color(nc.getRed(), nc.getGreen(), nc.getBlue(), (int)(-185d * networkAdapter.getCoverageRadius() / 200d + 200));
                Color c = new Color(nc.getRed(), nc.getGreen(), nc.getBlue(), 20);
                setColor(c);

                if (isFill())
                {
                    setFillColor(getColor());
                }
                else
                {
                    setFillColor(null);
                }

                super.drawImpl(object, space);
            }
        }

    }

    public String toString()
    {
        return "circle";
    }

    public boolean isFill()
    {
        return fill;
    }
    public void setFill(boolean fill)
    {
        this.fill = fill;
    }
}