package hep.aida.ref.plotter.adapter;

import jas.hist.*;
import hep.aida.ref.*;
import hep.aida.ref.event.*;
import hep.aida.*;
import java.util.Observer;
import java.util.Observable;

/**
 *
 * @author  manj
 * @version $Id: AIDACloudAdapter.java,v 1.5 2004/12/03 07:46:19 serbo Exp $
 */
abstract class AIDACloudAdapter extends Observable implements DataSource, AIDAListener
{
    /**
    * Create a DataSource from a Cloud
    */
   public static DataSource create(ICloud c)
   {
      AIDACloudAdapter result;
      if      (c instanceof ICloud1D) result = new AIDACloudAdapter1D((ICloud1D)c);
      else if (c instanceof ICloud2D) result = new AIDACloudAdapter2D((ICloud2D)c);
      else throw new IllegalArgumentException("Argument is an unknown subtype of ICloud");
  
      return result;
   }
   protected AIDACloudAdapter(ICloud h)
   {
      if (h instanceof IsObservable) 
      {
         histo = (IsObservable) h;
         histo.addListener(this);
      }
   }
   protected void setValid()
   {
      if (histo != null) histo.setValid(this);
   }
   public void stateChanged(java.util.EventObject event)
   {
      setChanged();
      notifyObservers(hr);
   }
   private IsObservable histo;
   private final static jas.hist.HistogramUpdate hr = new jas.hist.HistogramUpdate(HistogramUpdate.TITLE_UPDATE+HistogramUpdate.DATA_UPDATE+HistogramUpdate.RANGE_UPDATE,false);
   static
   {
      hr.setAxis(hr.HORIZONTAL_AXIS);
      hr.setAxis(hr.VERTICAL_AXIS);
   } 
}
