package algorithm.bsf.maze.logger;
import java.awt.Color;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import org.fanhongtao.utils.Utils;
import algorithm.bsf.maze.Node;
import algorithm.bsf.maze.frame.MapPanel;
/**
* 在JPanel上记录走的路径
* @author Fan Hongtao
* @created 2009-3-16
*/
public class MapPanelLogger implements IMapLogger
{
/**
* 用于记录的JPanel<br>
* 在其它地方创建,这里只是使用。
*/
private MapPanel panel;
public MapPanelLogger(MapPanel panel)
{
super();
this.panel = panel;
}
@Override
public void logMove(Node from, Node to, int moveType)
{
if (moveType == MoveType.SEARCH)
{
panel.addLine(from, to);
panel.chageColor(to.getX(), to.getY(), Color.LIGHT_GRAY);
}
else
{
panel.deleteLine(from, to);
panel.chageColor(from.getX(), from.getY(), Color.WHITE);
}
Utils.sleep(100);
}
@Override
public void logPath(ArrayList<Node> path)
{
if (path == null)
{
JOptionPane.showMessageDialog(panel, "Can't find path.");
}
else
{
// 将路径中除开始结点和结束结点之外的结点颜色修改成蓝色
for (int i = 1, n = path.size() - 1; i < n; i++)
{
Node node = path.get(i);
panel.chageColor(node.getX(), node.getY(), Color.BLUE);
Utils.sleep(300);
}
}
}
@Override
public void logMap(int[][] map)
{
// panel.repaint();
// 不需要做特殊处理
}
}