import java.net.*;
import java.util.*;

/** HyperLinkSet - indeholder alle de hyperlinks der findes
 *	på en HTML0 side
 *	@author Søren S Munk (u001614)
 */
public class HyperLinkSet {
    
    private Vector link;
    
	/** HyperLinkSet konstruktion
	 *	konstruerer en tom mængde (af HyperLinks)
	 */
    public HyperLinkSet() { link = new Vector(); }
    
    /** add tilføjer et nyt hyperlink
     *	@param x1,y1 - øverste venstre hjørne af feltet
     *	@param x2,y2 - nederste højre hjørne af feltet
     *	@param u - den tilhørende URL
     */
    public void add(int x1, int y1, int x2, int y2, URL u) {
		link.add( new HyperLinkField(x1, y1, x2, y2, u) );
    }
    
    /** get returnerer en URL udfra koordinater til et punkt
     *	@param x, y - punktet hvor der blev trykket
     *	@return url - hvis punktet ligger i en URL returneres
	 *				  URL ellers null
     */
    public URL get(int x, int y) {
		for (int i = 0; i < link.size(); i++)
			{
		    	HyperLinkField h = (HyperLinkField) link.elementAt(i);
		    	if ( h.contains(x, y) )
					{ return h.getURL(); }
			}
		return null;
    }
    
	/** clear sletter alle links */
    public void clear() { link.clear(); }
    
	/**	HyperLinkField - opbevarer et enkelt hyperlink / URL
	 *	@author Søren S Munk (u001614)
	 */
	public class HyperLinkField extends java.awt.Rectangle {
	
		// Den tilhørende url til feltet
		private URL url;
		
		/** Constructor HyperLinkField
		 *	@param x1, y1 øverste venstre hjørne af feltet
		 *	@param x2, y2 nederste højre hjørne af feltet
		 *	@param u den tilhørende URL
		 */
		public HyperLinkField(int x1, int y1, int x2, int y2, URL u) {
		
		    //kalder konstruktionsmetoden for Rectangle
			//da rectangle kaldes med sidelængder, bliver det
			//hhv. x2-x1 og y2-y1, for hver side
			super(x1, y1, x2-x1, y2-y1);
		    url = u;
		}
		
		/** getUrl henter URL for det enkelte felt
		 *	@return feltets tilhørende URL
		 */
		public URL getURL() { return url; }
    }
    
}

