// **********************************************************************
//
// <copyright>
//
// BBN Technologies
// 10 Moulton Street
// Cambridge, MA 02138
// (617) 873-8000
//
// Copyright (C) BBNT Solutions LLC. All rights reserved.
//
// </copyright>
// **********************************************************************
//
// $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/layer/policy/ProjectionChangePolicy.java,v $
// $RCSfile: ProjectionChangePolicy.java,v $
// $Revision: 1.4 $
// $Date: 2004/10/14 18:06:02 $
// $Author: dietrick $
//
// **********************************************************************
package com.bbn.openmap.layer.policy;
import com.bbn.openmap.event.ProjectionEvent;
import com.bbn.openmap.layer.OMGraphicHandlerLayer;
import com.bbn.openmap.omGraphics.OMGraphicList;
/**
* A ProjectionChangePolicy is a policy object that determines how an
* OMGraphicHandler layer reacts to a projectionChanged() method call. The
* OMGraphicHandlerLayer has been written to consult this object to control that
* activity. The reaction could include clearing out the current OMGraphicList
* or keeping it, or launching a SwingWorker with a doPrepare() call on the
* layer to have the layer's prepare() method called.
*/
public interface ProjectionChangePolicy {
/**
* @param layer the OMGraphicHandlerLayer the policy is working for.
*/
public void setLayer(OMGraphicHandlerLayer layer);
/**
* @return the OMGraphicHandlerLayer the policy is working for.
*/
public OMGraphicHandlerLayer getLayer();
/**
* The method that is called when the projection changes. The
* ProjectionChangePolicy should modify the OMGraphicList and do other
* functions as dictated by the policy, like starting threads to gather data
* and generating new OMGraphics for the layer.
*
* @param pe the ProjectionEvent received by the layer.
*/
public void projectionChanged(ProjectionEvent pe);
/**
* The method that gets called when the SwingWorker thread finishes. The
* OMGraphicList is what is getting returned from the prepare() method on
* the layer, so it's most likely that this list should be set on the layer
* and repaint should be called on the layer.
*
* @param aList the OMGraphicList returned from the OMGraphicHandlerLayer
* prepare method via the SwingWorker.
*/
public void workerComplete(OMGraphicList aList);
}