package com.qozix.mapview.paths;
import java.util.List;
import android.content.Context;
import android.graphics.Point;
import android.view.View;
import com.qozix.layouts.StaticLayout;
import com.qozix.mapview.viewmanagers.ViewSetManager;
import com.qozix.mapview.zoom.ZoomListener;
import com.qozix.mapview.zoom.ZoomManager;
public class PathManager extends StaticLayout implements ZoomListener {
private double scale = 1;
private ZoomManager zoomManager;
private ViewSetManager viewSetManager = new ViewSetManager();
public PathManager( Context context, ZoomManager zm ) {
super( context );
zoomManager = zm;
zoomManager.addZoomListener( this );
}
public void setScale( double s ){
scale = s;
for(int i = 0; i < getChildCount(); i++){
View child = getChildAt( i );
if(child instanceof PathView){
PathView pathView = (PathView) child;
pathView.setScale( scale );
}
}
}
public View drawPath( List<Point> points ) {
PathView pathView = new PathView( getContext() );
pathView.setScale( scale );
pathView.drawPath( points );
addView( pathView );
return pathView;
}
public View drawPathAtZoom( List<Point> points, int zoom ){
View pathView = drawPath( points );
viewSetManager.addViewAtLevel( pathView, zoom );
filterPathViews();
return pathView;
}
public void filterPathViews(){
int zoom = zoomManager.getZoom();
viewSetManager.purgeViewSets();
viewSetManager.updateDisplay( zoom );
}
@Override
public void onZoomLevelChanged( int oldZoom, int newZoom ) {
filterPathViews();
}
@Override
public void onZoomScaleChanged( double scale ) {
setScale( scale );
}
}