public void reDo(Graphics2D g2){


		// Loop through the list of shapes and draw them on the screen
		for (int i = 0; i <draw_index+1; i++) {
			ShapeObject temp=objects.get(i);  // get shape from object list 

			if(temp.isVisible()){

				//if got object is line fill information related to that
				if(temp instanceof Line){  
					current_start=temp.starting_point;
					current_end=temp.ending_point;
					c=temp.c;
					shape_type="Line";
				}

				//if got object is square fill information related to that
				else if(temp instanceof Square){
					current_start=temp.starting_point;
					current_end=temp.ending_point;
					c=temp.c;
					Square t=(Square)temp;
					fill=t.fill;
					shape_type="Square";

				}

				//if got object is circle fill information related to that
				else if(temp instanceof Circle){
					current_start=temp.starting_point;
					current_end=temp.ending_point;
					c=temp.c;
					Circle t=(Circle)temp;
					fill=t.fill;
					shape_type="Circle";
				}
				draw(g2); //draw after get object 
			}

		}

		draw_index++; // increase draw index for futher redo operations
		update(); 

	}