📄 sortingcontexthandler.java
字号:
package sortingAnimation;
import contextsPoolManager.Context;
import contextsPoolManager.ContextHandler;
import graphicAnimation.*;
/**
* 算法演示器所使用的上下文处理器,该处理器由上下文池管理器驱动,处理上下文池管理器汇集而成的上下文。
* 通过处理这些上下文,上下文处理器调用算法演示绘制器的演示场景绘制方法,从而完成相应上下文的处理
* 改变。
* @author 周晓聪
* @since 2007/10/17
* @version 1.1
*
*/
public class SortingContextHandler implements ContextHandler {
protected SortingAnimationPainter painter = null;
public SortingContextHandler(AnimationPainter painter) {
this.painter = (SortingAnimationPainter)painter;
}
/**
* 实现处理上下文所必须实现的接口
* @para context 上下文具体内容,包括一系列名字和值构成的对
*/
public void handleContext(Context context) {
if (painter == null) return;
String name = context.getContextName();
// 下面的上下文处理对上下文池管理器所汇集的上下文进行相应的处理,处理的方法主要是获取所需要
// 的参数信息,驱动演示器模型做相应的改变。
if (name.equals("callInitialize")) {
int[] initData = (int[])context.getValue("aData");
painter.createAnimationView(initData);
} else if (name.equals("callSwap")) {
int firstIndex = ((Integer)context.getValue("firstIndex")).intValue();
int secondIndex = ((Integer)context.getValue("secondIndex")).intValue();
painter.showSwapScene(firstIndex, secondIndex);
} else if (name.equals("callSwapSelected")) {
int index = ((Integer)context.getValue("index")).intValue();
painter.showSwapSelectedScene(index);
} else if (name.equals("callCompare")) {
int firstIndex = ((Integer)context.getValue("firstIndex")).intValue();
int secondIndex = ((Integer)context.getValue("secondIndex")).intValue();
painter.showCompareScene(firstIndex, secondIndex);
} else if (name.equals("callCompareSelected")) {
int index = ((Integer)context.getValue("index")).intValue();
painter.showCompareSelectedScene(index);
} else if (name.equals("callSelect")) {
int index = ((Integer)context.getValue("index")).intValue();
painter.showSelectScene(index);
} else if (name.equals("callPlaceSelected")) {
int index = ((Integer)context.getValue("targetIndex")).intValue();
painter.showPlaceScene(index);
} else if (name.equals("callMoveElement")) {
int fromIndex = ((Integer)context.getValue("fromIndex")).intValue();
int toIndex = ((Integer)context.getValue("toIndex")).intValue();
painter.showMoveElementScene(fromIndex, toIndex);
} else if (name.equals("callQuickSort")) {
int startIndex = ((Integer)context.getValue("startIndex")).intValue();
int endIndex = ((Integer)context.getValue("endIndex")).intValue();
painter.showSortingScope(startIndex, endIndex-1);
} else if (name.equals("callPartition")) {
int startIndex = ((Integer)context.getValue("startIndex")).intValue();
painter.showBaseLine(startIndex);
} else if (name.equals("callMerge")) {
int startIndex = ((Integer)context.getValue("startIndex")).intValue();
int endIndex = ((Integer)context.getValue("endIndex")).intValue();
painter.showSortingScope(startIndex, endIndex-1);
} else if (name.equals("callSorting")) {
painter.showFinishedScene();
}
}
/**
* 返回触发上下文处理的上下文名称,如果返回 null 则意味着每个上下文都会立即触发处理器进行处理
*/
public String getTriggerContext() {
return null;
// return "callSorting";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -