public void animateGraph(int start, int end, float interpolation){
    	 ArrayList<Integer>edges = new ArrayList<Integer>();
    	 ArrayList<Integer>edgesToHighlight = new ArrayList<Integer>();
    	 for (int i=0;i<this.aggregatedNodes.size();i++){
    		 edges=this.nodes.get(this.aggregatedNodes.get(i)).incidentEdges;
    		 for (int j=0;j<edges.size();j++){
    			 if (!edgesToHighlight.contains(edges.get(j)))
    			      edgesToHighlight.add(edges.get(j));
    		 }
    	 }   	 
    	 for (int row = 0;row<this.edges.size();row++){     
    		 if (edgesToHighlight.contains(row) && this.selectedEdge==-1){    		    
    		     this.edges.get(row).animate(this.nodes, start, end, interpolation,true);     		    
    		 }else{
    			 this.edges.get(row).animate(this.nodes, start, end, interpolation,false);    	 
    		 } 	                 	   	
 	     } 
    	
    	 //Only draw one type of hint path at a time
    	 if (this.aggregatedEdges.size() >0){    		
    		 drawEdgeHintPaths(this.drawingView);
    	 }else{
    		 drawNodeHintPaths(this.drawingView);
    	 }  	   	 
    	 
    	 for (int i = 0;i<this.nodes.size();i++){
    		  if (this.aggregatedEdges_Nodes.size()>0){
    			  this.nodes.get(i).animate(start, end, interpolation,this.aggregatedEdges_Nodes,true);
    		  }else{
    			  this.nodes.get(i).animate(start, end, interpolation,this.aggregatedNodes,false);    			  
    		  }  		      	
  	     }    	      	
     }