?? multiplesortingcontexthandler.java
字號(hào):
package sortingAnimation;
import contextsPoolManager.Context;
import contextsPoolManager.ContextHandler;
import graphicAnimation.*;
/**
* 算法演示器所使用的上下文處理器,該處理器由上下文池管理器驅(qū)動(dòng),處理上下文池管理器匯集而成的上下文。
* 通過處理這些上下文,上下文處理器調(diào)用算法演示繪制器的演示場(chǎng)景繪制方法,從而完成相應(yīng)上下文的處理
* 改變。
* @author 周曉聰
* @since 2007/10/17
* @version 1.1
*
*/
public class MultipleSortingContextHandler implements ContextHandler {
private MultipleSortingAnimationPainter painter = null;
public MultipleSortingContextHandler(AnimationPainter painter) {
this.painter = (MultipleSortingAnimationPainter)painter;
}
/**
* 實(shí)現(xiàn)處理上下文所必須實(shí)現(xiàn)的接口
* @para context 上下文具體內(nèi)容,包括一系列名字和值構(gòu)成的對(duì)
*/
public void handleContext(Context context) {
if (painter == null) return;
String name = context.getContextName();
// 下面的上下文處理對(duì)上下文池管理器所匯集的上下文進(jìn)行相應(yīng)的處理,處理的方法主要是獲取所需要
// 的參數(shù)信息,驅(qū)動(dòng)演示器模型做相應(yīng)的改變。
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();
painter.showCopyMergeDataScene(startIndex, endIndex);
} else if (name.equals("callCopyData")) {
int mergeIndex = ((Integer)context.getValue("mergingIndex")).intValue();
int dataIndex = ((Integer)context.getValue("dataIndex")).intValue();
painter.showCopyDataScene(mergeIndex, dataIndex);
// } else if (name.equals("SORTINGDATA")) {
// view.setSortingData((int[])context.getValue("SORTINGDATA"));
} else if (name.equals("callSorting")) {
painter.showFinishedScene();
}
}
/**
* 返回觸發(fā)上下文處理的上下文名稱,如果返回 null 則意味著每個(gè)上下文都會(huì)立即觸發(fā)處理器進(jìn)行處理
*/
public String getTriggerContext() {
return null;
// return "callSorting";
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -