📄 mergesortingcontexthandler.java
字号:
package sortingAnimation;
import contextsPoolManager.Context;
import graphicAnimation.*;
public class MergeSortingContextHandler extends SortingContextHandler {
public MergeSortingContextHandler(AnimationPainter painter) {
super(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("callCopyMergedData")) {
int startIndex = ((Integer)context.getValue("startIndex")).intValue();
int endIndex = ((Integer)context.getValue("endIndex")).intValue();
((MergeSortingAnimationPainter)painter).showCopyMergeDataScene(startIndex, endIndex);
} else if (name.equals("callCopyData")) {
int mergeIndex = ((Integer)context.getValue("mergingIndex")).intValue();
int dataIndex = ((Integer)context.getValue("dataIndex")).intValue();
((MergeSortingAnimationPainter)painter).showCopyDataScene(mergeIndex, dataIndex);
// } else if (name.equals("SORTINGDATA")) {
// view.setSortingData((int[])context.getValue("SORTINGDATA"));
} 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 + -