您的位置:首页 > 编程语言 > Java开发

Jacob 操作 MsProject - 建立任务结构

2013-10-30 15:23 190 查看
/**
* Create task structure, return the indent of last one
* @param task
* @param mpOp
* @return
*/
private int addTaskToProject(Task task, MPPFileOperation mpOp, Map<String, ResourceCOM> resourcesMap, boolean isRoot) {
int level = 1;
if (task == null) {
return level;
}

List<Task> subTasks = task.getSubTasks();
if (subTasks == null || subTasks.isEmpty()) {
// create simple task if there is no children
level = 0;
} else {
// multitask if there are sub tasks.
level = 1;
// DSF
int times = -1;
for (int i = 0; i < subTasks.size();i++) {
Task subTask = subTasks.get(i);
Dispatch subTaskDispatch = Dispatch.invoke(mpOp.getTasks(), "Add", Dispatch.Method, new Object[]{subTask.getName()}, new int[]{1}).toDispatch();
// turn it back if finish
if (times != -1) {
for (int t = 0;t < times;t++) {
Dispatch.invoke(subTaskDispatch, "OutlineOutdent", Dispatch.Method, new Object[]{}, new int[]{1});
}
times = 0;
}
TaskCOM subTaskCOM = new TaskCOM(subTaskDispatch, mpOp.getMsProjApp());
renderTask(subTask, subTaskCOM, resourcesMap);
// not root & not sub task
if (!isRoot && times != 0) {
Dispatch.invoke(subTaskDispatch, "OutlineIndent", Dispatch.Method, new Object[]{}, new int[]{1});
}
times = addTaskToProject(subTask, mpOp, resourcesMap, false);
}
// return actual level
// if times == 0,表示经过OutlineOutdent过,已经恢复,否则times将带回滚level信息
level+=times;
}
return level;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  COM JACOB JAVA MSPROJECT VBA
相关文章推荐