content: /*
   * @(#)SingletonDrawingState.java
   *
   * Copyright 2002 EGANTT LLP. All rights reserved.
   * PROPRIETARY/QPL. Use is subject to license terms.
   */
  
  package com.egantt.model.drawing.state;
  
  import java.util.Iterator;
  
  import com.egantt.model.drawing.DrawingPart;
  
  /**
    * The simplest implementation of a DrawingState notifies the container
    * that a repaint has occured
    */
  public class SingletonDrawingState extends AbstractDrawingState
  {
  	protected final DrawingPart part;
  		
  	public SingletonDrawingState(DrawingPart part)
  	{
  		this.part = part;
  	}
  
  	// __________________________________________________________________________	
  
  	
  	public Iterator parts()
  	{
  		return new SingletonIterator(part);
  	}
  
  	// __________________________________________________________________________	
  		
  	protected class SingletonIterator implements Iterator
  	{
  		protected Object value;
  		
  		public SingletonIterator(Object value)
  		{
  			this.value = value;
  		}
  
  		// ______________________________________________________________________
  		
  		public boolean hasNext()
  		{
  			return value != null;		
  		}
  		
  		// ______________________________________________________________________
  		
  		public Object next()
  		{
  			Object value = this.value;
  			this.value = null;
  			return value;
  		}
  		
  		// ______________________________________________________________________
  		
  		/**
  		 *  Not applicable in this instance
  		 */
  		public void remove()
  		{
  		}
  	}
  }
  